From ce0c834326920a7f7e0ae296b22c52a53e4aa0cc Mon Sep 17 00:00:00 2001 From: Fabian Schlenz Date: Mon, 27 May 2019 21:17:05 +0200 Subject: [PATCH] Arduino IDE -> PlatformIO --- .gitignore | 7 ++- .travis.yml | 67 ++++++++++++++++++++++++++ include/README | 39 +++++++++++++++ lib/README | 46 ++++++++++++++++++ platformio.ini | 16 ++++++ src/.gitignore | 2 + SimpleList.h => src/SimpleList.h | 0 animations.h => src/animations.h | 0 config.sample.h => src/config.sample.h | 0 effects.h => src/effects.h | 0 fastled.ino => src/fastled.ino | 0 functions.h => src/functions.h | 0 mqtt.h => src/mqtt.h | 6 +-- ntp.h => src/ntp.h | 0 ota.ino => src/ota.ino | 0 pitrix.ino => src/pitrix.ino | 27 ++++++----- sprites.h => src/sprites.h | 0 text.h => src/text.h | 0 tools.h => src/tools.h | 0 {tools => src/tools}/gif2c.rb | 0 wifi.ino => src/wifi.ino | 0 test/README | 11 +++++ 22 files changed, 203 insertions(+), 18 deletions(-) create mode 100644 .travis.yml create mode 100644 include/README create mode 100644 lib/README create mode 100644 platformio.ini create mode 100644 src/.gitignore rename SimpleList.h => src/SimpleList.h (100%) rename animations.h => src/animations.h (100%) rename config.sample.h => src/config.sample.h (100%) rename effects.h => src/effects.h (100%) rename fastled.ino => src/fastled.ino (100%) rename functions.h => src/functions.h (100%) rename mqtt.h => src/mqtt.h (99%) rename ntp.h => src/ntp.h (100%) rename ota.ino => src/ota.ino (100%) rename pitrix.ino => src/pitrix.ino (94%) rename sprites.h => src/sprites.h (100%) rename text.h => src/text.h (100%) rename tools.h => src/tools.h (100%) rename {tools => src/tools}/gif2c.rb (100%) rename wifi.ino => src/wifi.ino (100%) create mode 100644 test/README diff --git a/.gitignore b/.gitignore index 8dc2008..acb7e6b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ -config.h -tools/*.gif +.pio +.clang_complete +.gcc-flags.json +src/config.h +src/tools/*.gif diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..7c486f1 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,67 @@ +# Continuous Integration (CI) is the practice, in software +# engineering, of merging all developer working copies with a shared mainline +# several times a day < https://docs.platformio.org/page/ci/index.html > +# +# Documentation: +# +# * Travis CI Embedded Builds with PlatformIO +# < https://docs.travis-ci.com/user/integration/platformio/ > +# +# * PlatformIO integration with Travis CI +# < https://docs.platformio.org/page/ci/travis.html > +# +# * User Guide for `platformio ci` command +# < https://docs.platformio.org/page/userguide/cmd_ci.html > +# +# +# Please choose one of the following templates (proposed below) and uncomment +# it (remove "# " before each line) or use own configuration according to the +# Travis CI documentation (see above). +# + + +# +# Template #1: General project. Test it using existing `platformio.ini`. +# + +# language: python +# python: +# - "2.7" +# +# sudo: false +# cache: +# directories: +# - "~/.platformio" +# +# install: +# - pip install -U platformio +# - platformio update +# +# script: +# - platformio run + + +# +# Template #2: The project is intended to be used as a library with examples. +# + +# language: python +# python: +# - "2.7" +# +# sudo: false +# cache: +# directories: +# - "~/.platformio" +# +# env: +# - PLATFORMIO_CI_SRC=path/to/test/file.c +# - PLATFORMIO_CI_SRC=examples/file.ino +# - PLATFORMIO_CI_SRC=path/to/test/directory +# +# install: +# - pip install -U platformio +# - platformio update +# +# script: +# - platformio ci --lib="." --board=ID_1 --board=ID_2 --board=ID_N diff --git a/include/README b/include/README new file mode 100644 index 0000000..194dcd4 --- /dev/null +++ b/include/README @@ -0,0 +1,39 @@ + +This directory is intended for project header files. + +A header file is a file containing C declarations and macro definitions +to be shared between several project source files. You request the use of a +header file in your project source file (C, C++, etc) located in `src` folder +by including it, with the C preprocessing directive `#include'. + +```src/main.c + +#include "header.h" + +int main (void) +{ + ... +} +``` + +Including a header file produces the same results as copying the header file +into each source file that needs it. Such copying would be time-consuming +and error-prone. With a header file, the related declarations appear +in only one place. If they need to be changed, they can be changed in one +place, and programs that include the header file will automatically use the +new version when next recompiled. The header file eliminates the labor of +finding and changing all the copies as well as the risk that a failure to +find one copy will result in inconsistencies within a program. + +In C, the usual convention is to give header files names that end with `.h'. +It is most portable to use only letters, digits, dashes, and underscores in +header file names, and at most one dot. + +Read more about using header files in official GCC documentation: + +* Include Syntax +* Include Operation +* Once-Only Headers +* Computed Includes + +https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html diff --git a/lib/README b/lib/README new file mode 100644 index 0000000..6debab1 --- /dev/null +++ b/lib/README @@ -0,0 +1,46 @@ + +This directory is intended for project specific (private) libraries. +PlatformIO will compile them to static libraries and link into executable file. + +The source code of each library should be placed in a an own separate directory +("lib/your_library_name/[here are source files]"). + +For example, see a structure of the following two libraries `Foo` and `Bar`: + +|--lib +| | +| |--Bar +| | |--docs +| | |--examples +| | |--src +| | |- Bar.c +| | |- Bar.h +| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html +| | +| |--Foo +| | |- Foo.c +| | |- Foo.h +| | +| |- README --> THIS FILE +| +|- platformio.ini +|--src + |- main.c + +and a contents of `src/main.c`: +``` +#include +#include + +int main (void) +{ + ... +} + +``` + +PlatformIO Library Dependency Finder will find automatically dependent +libraries scanning project source files. + +More information about PlatformIO Library Dependency Finder +- https://docs.platformio.org/page/librarymanager/ldf.html diff --git a/platformio.ini b/platformio.ini new file mode 100644 index 0000000..cb4383c --- /dev/null +++ b/platformio.ini @@ -0,0 +1,16 @@ +;PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; https://docs.platformio.org/page/projectconf.html + +[env:esp07] +platform = espressif8266 +board = esp07 +framework = arduino +upload_port = 10.10.2.78 +upload_protocol = espota diff --git a/src/.gitignore b/src/.gitignore new file mode 100644 index 0000000..8dc2008 --- /dev/null +++ b/src/.gitignore @@ -0,0 +1,2 @@ +config.h +tools/*.gif diff --git a/SimpleList.h b/src/SimpleList.h similarity index 100% rename from SimpleList.h rename to src/SimpleList.h diff --git a/animations.h b/src/animations.h similarity index 100% rename from animations.h rename to src/animations.h diff --git a/config.sample.h b/src/config.sample.h similarity index 100% rename from config.sample.h rename to src/config.sample.h diff --git a/effects.h b/src/effects.h similarity index 100% rename from effects.h rename to src/effects.h diff --git a/fastled.ino b/src/fastled.ino similarity index 100% rename from fastled.ino rename to src/fastled.ino diff --git a/functions.h b/src/functions.h similarity index 100% rename from functions.h rename to src/functions.h diff --git a/mqtt.h b/src/mqtt.h similarity index 99% rename from mqtt.h rename to src/mqtt.h index fd5f062..249b42a 100644 --- a/mqtt.h +++ b/src/mqtt.h @@ -6,7 +6,7 @@ void mqtt_callback(char* complete_topic, byte* pl, unsigned int length) { pl[length] = '\0'; char* payload = (char*)pl; char* topic = complete_topic + strlen(MQTT_TOPIC); // Strip MQTT_TOPIC from the beginning - + // Here, payload is a char* (but has to be casted). if(strcmp(topic, "mode")==0) { for (int i=0; i 0 && value <= 255) { config_brightness = value; FastLED.setBrightness(config_brightness); diff --git a/ntp.h b/src/ntp.h similarity index 100% rename from ntp.h rename to src/ntp.h diff --git a/ota.ino b/src/ota.ino similarity index 100% rename from ota.ino rename to src/ota.ino diff --git a/pitrix.ino b/src/pitrix.ino similarity index 94% rename from pitrix.ino rename to src/pitrix.ino index aaac99a..e49ce3f 100644 --- a/pitrix.ino +++ b/src/pitrix.ino @@ -1,3 +1,4 @@ +#include #include #include #include @@ -57,7 +58,7 @@ SimpleList* cycle_effects; //EffectEntry effects[NUM_EFFECTS]; Sinematrix3 sinematrix3; BigClock big_clock; -Clock clock; +Clock effect_clock; Bell bell; Static off(CRGB(0x000000)); Animation anim_koopa(&animation_koopa, CRGB(0x000000), 0, 0); @@ -71,7 +72,7 @@ TwirlEffect effect_twirl; EffectEntry effects[NUM_EFFECTS] = { {"sinematrix3", (Effect *)&sinematrix3}, {"big_clock", (Effect *)&big_clock}, - {"clock", (Effect *)&clock}, + {"clock", (Effect *)&effect_clock}, {"bell", (Effect *)&bell}, {"off", (Effect *)&off}, {"koopa", (Effect *)&anim_koopa}, @@ -83,6 +84,13 @@ EffectEntry effects[NUM_EFFECTS] = { {"twirl", (Effect *)&effect_twirl}, }; +Effect* current_effect = &effect_clock; + +#ifdef MQTT_ENABLE + #include + #include "mqtt.h" +#endif + void setup_cycle_effects() { LOGln("Core * Setting up cycle_effects"); cycle_effects = new SimpleList(); @@ -107,13 +115,6 @@ void setup() { Serial.println("Core * Setup complete"); } -Effect* current_effect = &clock; - -#ifdef MQTT_ENABLE - #include - #include "mqtt.h" -#endif - uint8_t starting_up = OTA_STARTUP_DELAY; int loop_timeouts = 0; long loop_started_at = 0; @@ -134,20 +135,20 @@ void loop() { } return; } - + ntpClient.update(); #ifdef MQTT_ENABLE mqtt_loop(); #endif - + EVERY_N_MILLISECONDS(1000 / FPS) { Serial.println("Core * loop running"); current_effect->loop(); if (current_effect->can_be_shown_with_clock()) { - clock.loop(current_effect->clock_as_mask(), CRGB(0xFFFFFF), CRGB(0x000000)); + effect_clock.loop(current_effect->clock_as_mask(), CRGB(0xFFFFFF), CRGB(0x000000)); } - + FastLED.show(); } diff --git a/sprites.h b/src/sprites.h similarity index 100% rename from sprites.h rename to src/sprites.h diff --git a/text.h b/src/text.h similarity index 100% rename from text.h rename to src/text.h diff --git a/tools.h b/src/tools.h similarity index 100% rename from tools.h rename to src/tools.h diff --git a/tools/gif2c.rb b/src/tools/gif2c.rb similarity index 100% rename from tools/gif2c.rb rename to src/tools/gif2c.rb diff --git a/wifi.ino b/src/wifi.ino similarity index 100% rename from wifi.ino rename to src/wifi.ino diff --git a/test/README b/test/README new file mode 100644 index 0000000..df5066e --- /dev/null +++ b/test/README @@ -0,0 +1,11 @@ + +This directory is intended for PIO Unit Testing and project tests. + +Unit Testing is a software testing method by which individual units of +source code, sets of one or more MCU program modules together with associated +control data, usage procedures, and operating procedures, are tested to +determine whether they are fit for use. Unit testing finds problems early +in the development cycle. + +More information about PIO Unit Testing: +- https://docs.platformio.org/page/plus/unit-testing.html