commit 07893198c3612efb167d4a9ab684a6b3815864db Author: Patrick Balsiger Date: Thu Nov 15 14:58:52 2018 +0100 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3e2a754 --- /dev/null +++ b/.gitignore @@ -0,0 +1,78 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + + +# platformio / IDE +.pioenvs +.piolibdeps +.vscode/.browse.c_cpp.db* +.vscode/c_cpp_properties.json +.vscode/launch.json + +# build stuff +/data/ +dist/ + +# sprocket stuff +/config/ +/firmware +.clang_complete +.gcc-flags.json +.pioenvs +.piolibdeps diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..00f20b5 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,14 @@ +image: python:2.7-stretch + +stages: + - build + +before_script: + - "pip install -U platformio" + +examples: + stage: build + image: python:2.7-stretch + script: + - pio run -t clean + - pio run -e basic \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..9443843 --- /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 < http://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 +# < http://docs.platformio.org/page/ci/travis.html > +# +# * User Guide for `platformio ci` command +# < http://docs.platformio.org/page/userguide/cmd_ci.html > +# +# +# Please choice 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 by 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/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..8281e64 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + // See http://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": [ + "platformio.platformio-ide" + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..13f18c7 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "terminal.integrated.env.linux": { + "PATH": "/home/master/.platformio/penv/bin:/home/master/.platformio/penv:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl", + "PLATFORMIO_CALLER": "vscode" + } +} \ No newline at end of file diff --git a/lib/readme.txt b/lib/readme.txt new file mode 100644 index 0000000..131f1bf --- /dev/null +++ b/lib/readme.txt @@ -0,0 +1,41 @@ + +This directory is intended for the project specific (private) libraries. +PlatformIO will compile them to static libraries and link to executable file. + +The source code of each library should be placed in separate directory, like +"lib/private_lib/[here are source files]". + +For example, see how can be organized `Foo` and `Bar` libraries: + +|--lib +| | +| |--Bar +| | |--docs +| | |--examples +| | |--src +| | |- Bar.c +| | |- Bar.h +| | |- library.json (optional, custom build options, etc) http://docs.platformio.org/page/librarymanager/config.html +| | +| |--Foo +| | |- Foo.c +| | |- Foo.h +| | +| |- readme.txt --> THIS FILE +| +|- platformio.ini +|--src + |- main.c + +Then in `src/main.c` you should use: + +#include +#include + +// rest H/C/CPP code + +PlatformIO will find your libraries automatically, configure preprocessor's +include paths and build them. + +More information about PlatformIO Library Dependency Finder +- http://docs.platformio.org/page/librarymanager/ldf.html diff --git a/library.json b/library.json new file mode 100644 index 0000000..38d576d --- /dev/null +++ b/library.json @@ -0,0 +1,25 @@ +{ + "name": "sprocket-plugin-template", + "keywords": "sprocket, plugin", + "description": "Template for a sprocket plugin", + "authors": + { + "name": "Patrick Balsiger", + "email": "patrick.balsiger@wirelos.net", + "url": "https://gitlab.com/0x1d" + }, + "repository": + { + "type": "git", + "url": "https://gitlab.com/wirelos/sprocket-plugin-template" + }, + "frameworks": "arduino", + "platforms": "espressif8266, esp32", + "examples": "examples/*", + "export": { + "exclude": + [ + "src/examples/" + ] + } +} \ No newline at end of file diff --git a/platformio.ini b/platformio.ini new file mode 100644 index 0000000..8fe8167 --- /dev/null +++ b/platformio.ini @@ -0,0 +1,29 @@ +[platformio] +env_default = basic + +[common] +framework = arduino +platform = espressif8266 +board = esp12e +upload_speed = 921600 +monitor_baud = 115200 +lib_deps = + Hash + TaskScheduler + SPIFFS + ArduinoJson + ArduinoOTA + ESPAsyncTCP + ESP8266mDNS + ESP Async WebServer + painlessMesh + https://gitlab.com/wirelos/sprocket-lib.git#develop + +[env:basic] +src_filter = +<*> - + +platform = ${common.platform} +board = ${common.board} +upload_speed = ${common.upload_speed} +monitor_baud = ${common.monitor_baud} +framework = ${common.framework} +lib_deps = ${common.lib_deps} \ No newline at end of file diff --git a/src/TemplatePlugin.cpp b/src/TemplatePlugin.cpp new file mode 100644 index 0000000..d98fb20 --- /dev/null +++ b/src/TemplatePlugin.cpp @@ -0,0 +1,11 @@ +#include "TemplatePlugin.h" + +TemplatePlugin::TemplatePlugin(TemplateConfig cfg) +{ + templateConfig = cfg; +} + +void TemplatePlugin::activate(Scheduler *scheduler) +{ + PRINT_MSG(Serial, "TEMPLATE", "plugin activated"); +} diff --git a/src/TemplatePlugin.h b/src/TemplatePlugin.h new file mode 100644 index 0000000..a32c461 --- /dev/null +++ b/src/TemplatePlugin.h @@ -0,0 +1,26 @@ +#ifndef __TEMPLATE_PLUGIN__ +#define __TEMPLATE_PLUGIN__ + +#define _TASK_SLEEP_ON_IDLE_RUN +#define _TASK_STD_FUNCTION + +#include +#include "utils/utils_print.h" + +using namespace std; +using namespace std::placeholders; + +struct TemplateConfig +{ + const char *var; +}; + +class TemplatePlugin : public Plugin +{ + public: + TemplateConfig templateConfig; + TemplatePlugin(TemplateConfig cfg); + void activate(Scheduler *scheduler); +}; + +#endif \ No newline at end of file diff --git a/src/examples/basic/config.h b/src/examples/basic/config.h new file mode 100644 index 0000000..b538d4c --- /dev/null +++ b/src/examples/basic/config.h @@ -0,0 +1,24 @@ +#ifndef __DEVICE_CONFIG__ +#define __DEVICE_CONFIG__ + +// Scheduler config +#define _TASK_SLEEP_ON_IDLE_RUN +#define _TASK_STD_FUNCTION +#define _TASK_PRIORITY + +// Chip config +#define SPROCKET_TYPE "SPROCKET" +#define SERIAL_BAUD_RATE 115200 +#define STARTUP_DELAY 1000 + +// network config +#define SPROCKET_MODE 1 +#define WIFI_CHANNEL 11 +#define AP_SSID "sprocket" +#define AP_PASSWORD "th3r31sn0sp00n" +#define STATION_SSID "MyAP" +#define STATION_PASSWORD "th3r31sn0sp00n" +#define HOSTNAME "sprocket" +#define CONNECT_TIMEOUT 10000 + +#endif \ No newline at end of file diff --git a/src/examples/basic/main.cpp b/src/examples/basic/main.cpp new file mode 100644 index 0000000..2718fb9 --- /dev/null +++ b/src/examples/basic/main.cpp @@ -0,0 +1,33 @@ +#include "config.h" +#include "WiFiNet.h" +#include "Sprocket.h" +#include "TemplatePlugin.h" + +WiFiNet *network; +Sprocket *sprocket; + +Task publishHeap; + +void setup() +{ + sprocket = new Sprocket({STARTUP_DELAY, SERIAL_BAUD_RATE}); + sprocket->addPlugin(new TemplatePlugin({"sprocket"})); + + network = new WiFiNet( + SPROCKET_MODE, + STATION_SSID, + STATION_PASSWORD, + AP_SSID, + AP_PASSWORD, + HOSTNAME, + CONNECT_TIMEOUT); + network->connect(); + + sprocket->activate(); +} + +void loop() +{ + sprocket->loop(); + yield(); +} \ No newline at end of file