add demo project implementation

This commit is contained in:
Rick Watson
2019-08-09 15:53:39 +01:00
parent aeea0d9aa6
commit df06e58fb0
12 changed files with 182 additions and 34 deletions

View File

@ -1,9 +1,25 @@
#include <DemoProject.h>
void DemoProject::begin() {
void DemoProject::init(AsyncWebServer* server) {
AdminSettingsService::init(server);
pinMode(BLINK_LED, OUTPUT);
}
void DemoProject::loop() {
unsigned delay = MAX_DELAY / 255 * (255 - _blinkSpeed);
unsigned long currentMillis = millis();
if (!_lastBlink || (unsigned long)(currentMillis - _lastBlink) >= delay) {
_lastBlink = currentMillis;
digitalWrite(BLINK_LED, !digitalRead(BLINK_LED));
}
}
void DemoProject::readFromJsonObject(JsonObject& root) {
_blinkSpeed = root["blink_speed"] | DEFAULT_BLINK_SPEED;
}
void DemoProject::writeToJsonObject(JsonObject& root) {
// connection settings
root["blink_speed"] = _blinkSpeed;
}

View File

@ -1,23 +1,35 @@
#ifndef DemoProject_h
#define DemoProject_h
#include <ESPAsyncWebServer.h>
#include <SecurityManager.h>
#include <SettingsService.h>
class DemoProject {
#define BLINK_LED 2
#define MAX_DELAY 1000
#define DEFAULT_BLINK_SPEED 100
#define DEMO_SETTINGS_FILE "/config/demoSettings.json"
#define DEMO_SETTINGS_PATH "/rest/demoSettings"
class DemoProject : public AdminSettingsService {
public:
DemoProject(AsyncWebServer *server, SecurityManager* securityManager) : _server(server), _securityManager(securityManager) {}
DemoProject(FS* fs, SecurityManager* securityManager) : AdminSettingsService(fs, securityManager, DEMO_SETTINGS_PATH, DEMO_SETTINGS_FILE) {}
~DemoProject() {}
void begin();
void init(AsyncWebServer* server);
void loop();
private:
AsyncWebServer* _server;
SecurityManager* _securityManager;
unsigned long _lastBlink = 0;
uint8_t _blinkSpeed = 255;
protected:
void readFromJsonObject(JsonObject& root);
void writeToJsonObject(JsonObject& root);
};
#endif

View File

@ -7,9 +7,10 @@
AsyncWebServer server(80);
ESP8266React espServer(&SPIFFS);
DemoProject demoProject = DemoProject(&server, espServer.getSecurityManager());
DemoProject demoProject = DemoProject(&SPIFFS, espServer.getSecurityManager());
void setup() {
// start serial and filesystem
Serial.begin(SERIAL_BAUD_RATE);
SPIFFS.begin();
@ -17,15 +18,16 @@ void setup() {
espServer.init(&server);
// begin the demo project
demoProject.begin();
demoProject.init(&server);
// start the server
server.begin();
}
void loop() {
// run the framework loop
// run the framework's loop function
espServer.loop();
// run the demo project loop
// run the demo project's loop function
demoProject.loop();
}