# Sprocket-Core A lightweight Arduino framework for event driven programming. ## Getting Started Install sprocket-lib on your favorite dev environment. Either by cloning this repository into the Arduino library path or by adding it as a dependency to your platformio.ini file. In addition, following dependencies need to be installed as well: ``` Hash TaskScheduler SPIFFS ArduinoJson ``` Example platformio.ini: ``` [env:build] framework = arduino platform = espressif8266 board = esp12e upload_speed = 921600 monitor_baud = 115200 lib_deps = Hash TaskScheduler SPIFFS ArduinoJson https://gitlab.com/wirelos/sprocket-lib.git#develop ``` Example main.cpp: ```cpp Sprocket *sprocket; void setup() { sprocket = new Sprocket({STARTUP_DELAY, SERIAL_BAUD_RATE}); sprocket->addPlugin(new SomePlugin()); sprocket->activate(); } void loop() { sprocket->loop(); yield(); } ``` ## Concepts ... topic based event channel / pubsub-pattern ... plugin system ### Lifecycle In most cases a Sprocket is bootstraped in the setup() method. Addidional plugins are hooked into the Sprocket after initialisation. During loop, the internal Scheduler needs to be updated by calling the corresponding method. See the "Getting Started" section for an example of skeleton Sprocket. ### Plugins To extend the functionality of a Sprocket, plugins can be hooked into the activation lifecycle. # Useful commands ```sh # erase flash esptool --port /dev/ttyUSB0 erase_flash # OTA ~/.platformio/packages/tool-espotapy/espota.py -i -p 8266 -a -f .pioenvs/ota/firmware.bin ```