initial commit

This commit is contained in:
2018-11-15 14:58:52 +01:00
commit 07893198c3
12 changed files with 361 additions and 0 deletions

78
.gitignore vendored Normal file
View File

@@ -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

14
.gitlab-ci.yml Normal file
View File

@@ -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

67
.travis.yml Normal file
View File

@@ -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

7
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,7 @@
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"platformio.platformio-ide"
]
}

6
.vscode/settings.json vendored Normal file
View File

@@ -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"
}
}

41
lib/readme.txt Normal file
View File

@@ -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 <Foo.h>
#include <Bar.h>
// 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

25
library.json Normal file
View File

@@ -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/"
]
}
}

29
platformio.ini Normal file
View File

@@ -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 = +<*> -<examples/> +<examples/basic/>
platform = ${common.platform}
board = ${common.board}
upload_speed = ${common.upload_speed}
monitor_baud = ${common.monitor_baud}
framework = ${common.framework}
lib_deps = ${common.lib_deps}

11
src/TemplatePlugin.cpp Normal file
View File

@@ -0,0 +1,11 @@
#include "TemplatePlugin.h"
TemplatePlugin::TemplatePlugin(TemplateConfig cfg)
{
templateConfig = cfg;
}
void TemplatePlugin::activate(Scheduler *scheduler)
{
PRINT_MSG(Serial, "TEMPLATE", "plugin activated");
}

26
src/TemplatePlugin.h Normal file
View File

@@ -0,0 +1,26 @@
#ifndef __TEMPLATE_PLUGIN__
#define __TEMPLATE_PLUGIN__
#define _TASK_SLEEP_ON_IDLE_RUN
#define _TASK_STD_FUNCTION
#include <Plugin.h>
#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

View File

@@ -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

View File

@@ -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();
}