aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorD Delmar Davis <don@suspectdevices.com>2019-02-16 08:36:37 -0800
committerD Delmar Davis <don@suspectdevices.com>2019-02-16 08:36:37 -0800
commit2abcef625002ba8ec937efd3ebe647c403574960 (patch)
treecc835bc48010020cd927e7d3dddf0123fe7ba5c9
parent05ae6ee8d8de1194fe3d7183be5c13422435300b (diff)
Add platformio arduino sketch
-rw-r--r--include/README39
-rw-r--r--lib/README46
-rw-r--r--platformio.ini14
-rw-r--r--src/Monitor.ino93
-rw-r--r--test/README11
5 files changed, 203 insertions, 0 deletions
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 <Foo.h>
+#include <Bar.h>
+
+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..4b30716
--- /dev/null
+++ b/platformio.ini
@@ -0,0 +1,14 @@
+; 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:esp32dev]
+platform = espressif32
+board = esp32dev
+framework = arduino
diff --git a/src/Monitor.ino b/src/Monitor.ino
new file mode 100644
index 0000000..93093a8
--- /dev/null
+++ b/src/Monitor.ino
@@ -0,0 +1,93 @@
+#if CONFIG_FREERTOS_UNICORE
+#define ARDUINO_RUNNING_CORE 0
+#else
+#define ARDUINO_RUNNING_CORE 1
+#endif
+
+#ifndef LED_BUILTIN
+#define LED_BUILTIN 2
+#endif
+
+// define two tasks for Blink & AnalogRead
+void TaskBlink( void *pvParameters );
+void TaskMonitor( void *pvParameters );
+
+// the setup function runs once when you press reset or power the board
+void setup() {
+
+ // initialize serial communication at 115200 bits per second:
+ Serial.begin(115200);
+
+ // Now set up two tasks to run independently.
+ xTaskCreatePinnedToCore(
+ TaskBlink
+ , "TaskBlink" // A name just for humans
+ , 1024 // This stack size can be checked & adjusted by reading the Stack Highwater
+ , NULL
+ , 2 // Priority, with 3 (configMAX_PRIORITIES - 1) being the highest, and 0 being the lowest.
+ , NULL
+ , ARDUINO_RUNNING_CORE);
+
+ xTaskCreatePinnedToCore(
+ TaskMonitor
+ , "Monitor"
+ , 1024 // Stack size
+ , NULL
+ , 1 // Priority
+ , NULL
+ , 0);
+
+ // Now the task scheduler, which takes over control of scheduling individual tasks, is automatically started.
+}
+
+void loop()
+{
+ // Empty. Things are done in Tasks.
+}
+
+/*--------------------------------------------------*/
+/*---------------------- Tasks ---------------------*/
+/*--------------------------------------------------*/
+
+void TaskBlink(void *pvParameters) // This is a task.
+{
+ (void) pvParameters;
+
+/*
+ Blink
+ Turns on an LED on for one second, then off for one second, repeatedly.
+
+ If you want to know what pin the on-board LED is connected to on your ESP32 model, check
+ the Technical Specs of your board.
+*/
+
+ // initialize digital LED_BUILTIN on pin 13 as an output.
+ pinMode(LED_BUILTIN, OUTPUT);
+
+ for (;;) // A Task shall never return or exit.
+ {
+ digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
+ vTaskDelay(1000); // one tick delay (15ms) in between reads for stability
+ digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
+ vTaskDelay(1000); // one tick delay (15ms) in between reads for stability
+ Serial.print('.');
+ }
+}
+
+void TaskMonitor(void *pvParameters) // This is a task.
+{
+ (void) pvParameters;
+
+/*
+
+*/
+ char ch;
+
+ for (;;)
+ { if (Serial.available()) {
+ ch=Serial.read();
+ ; Serial.print(ch);
+ }
+ vTaskDelay(10); // one tick delay (15ms) in between reads for stability
+ }
+}
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