Override identifier

This commit is contained in:
Blaz Kristan 2024-01-14 17:38:29 +01:00
parent 3f21b4aa7d
commit 45dc5e236d
11 changed files with 148 additions and 149 deletions

View File

@ -87,7 +87,7 @@ class MyExampleUsermod : public Usermod {
* readFromConfig() is called prior to setup() * readFromConfig() is called prior to setup()
* You can use it to initialize variables, sensors or similar. * You can use it to initialize variables, sensors or similar.
*/ */
void setup() { void setup() override {
// do your set-up here // do your set-up here
//Serial.println("Hello from my usermod!"); //Serial.println("Hello from my usermod!");
initDone = true; initDone = true;
@ -98,7 +98,7 @@ class MyExampleUsermod : public Usermod {
* connected() is called every time the WiFi is (re)connected * connected() is called every time the WiFi is (re)connected
* Use it to initialize network interfaces * Use it to initialize network interfaces
*/ */
void connected() { void connected() override {
//Serial.println("Connected to WiFi!"); //Serial.println("Connected to WiFi!");
} }
@ -113,7 +113,7 @@ class MyExampleUsermod : public Usermod {
* 2. Try to avoid using the delay() function. NEVER use delays longer than 10 milliseconds. * 2. Try to avoid using the delay() function. NEVER use delays longer than 10 milliseconds.
* Instead, use a timer check as shown here. * Instead, use a timer check as shown here.
*/ */
void loop() { void loop() override {
// if usermod is disabled or called during strip updating just exit // if usermod is disabled or called during strip updating just exit
// NOTE: on very long strips strip.isUpdating() may always return true so update accordingly // NOTE: on very long strips strip.isUpdating() may always return true so update accordingly
if (!enabled || strip.isUpdating()) return; if (!enabled || strip.isUpdating()) return;
@ -131,7 +131,7 @@ class MyExampleUsermod : public Usermod {
* Creating an "u" object allows you to add custom key/value pairs to the Info section of the WLED web UI. * Creating an "u" object allows you to add custom key/value pairs to the Info section of the WLED web UI.
* Below it is shown how this could be used for e.g. a light sensor * Below it is shown how this could be used for e.g. a light sensor
*/ */
void addToJsonInfo(JsonObject& root) void addToJsonInfo(JsonObject& root) override
{ {
// if "u" object does not exist yet wee need to create it // if "u" object does not exist yet wee need to create it
JsonObject user = root["u"]; JsonObject user = root["u"];
@ -156,7 +156,7 @@ class MyExampleUsermod : public Usermod {
* addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object). * addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object).
* Values in the state object may be modified by connected clients * Values in the state object may be modified by connected clients
*/ */
void addToJsonState(JsonObject& root) void addToJsonState(JsonObject& root) override
{ {
if (!initDone || !enabled) return; // prevent crash on boot applyPreset() if (!initDone || !enabled) return; // prevent crash on boot applyPreset()
@ -171,7 +171,7 @@ class MyExampleUsermod : public Usermod {
* readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object). * readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object).
* Values in the state object may be modified by connected clients * Values in the state object may be modified by connected clients
*/ */
void readFromJsonState(JsonObject& root) void readFromJsonState(JsonObject& root) override
{ {
if (!initDone) return; // prevent crash on boot applyPreset() if (!initDone) return; // prevent crash on boot applyPreset()
@ -220,7 +220,7 @@ class MyExampleUsermod : public Usermod {
* *
* I highly recommend checking out the basics of ArduinoJson serialization and deserialization in order to use custom settings! * I highly recommend checking out the basics of ArduinoJson serialization and deserialization in order to use custom settings!
*/ */
void addToConfig(JsonObject& root) void addToConfig(JsonObject& root) override
{ {
JsonObject top = root.createNestedObject(FPSTR(_name)); JsonObject top = root.createNestedObject(FPSTR(_name));
top[FPSTR(_enabled)] = enabled; top[FPSTR(_enabled)] = enabled;
@ -253,7 +253,7 @@ class MyExampleUsermod : public Usermod {
* *
* This function is guaranteed to be called on boot, but could also be called every time settings are updated * This function is guaranteed to be called on boot, but could also be called every time settings are updated
*/ */
bool readFromConfig(JsonObject& root) bool readFromConfig(JsonObject& root) override
{ {
// default settings values could be set here (or below using the 3-argument getJsonValue()) instead of in the class definition or constructor // default settings values could be set here (or below using the 3-argument getJsonValue()) instead of in the class definition or constructor
// setting them inside readFromConfig() is slightly more robust, handling the rare but plausible use case of single value being missing after boot (e.g. if the cfg.json was manually edited and a value was removed) // setting them inside readFromConfig() is slightly more robust, handling the rare but plausible use case of single value being missing after boot (e.g. if the cfg.json was manually edited and a value was removed)
@ -285,7 +285,7 @@ class MyExampleUsermod : public Usermod {
* it may add additional metadata for certain entry fields (adding drop down is possible) * it may add additional metadata for certain entry fields (adding drop down is possible)
* be careful not to add too much as oappend() buffer is limited to 3k * be careful not to add too much as oappend() buffer is limited to 3k
*/ */
void appendConfigData() void appendConfigData() override
{ {
oappend(SET_F("addInfo('")); oappend(String(FPSTR(_name)).c_str()); oappend(SET_F(":great")); oappend(SET_F("',1,'<i>(this is a great config value)</i>');")); oappend(SET_F("addInfo('")); oappend(String(FPSTR(_name)).c_str()); oappend(SET_F(":great")); oappend(SET_F("',1,'<i>(this is a great config value)</i>');"));
oappend(SET_F("addInfo('")); oappend(String(FPSTR(_name)).c_str()); oappend(SET_F(":testString")); oappend(SET_F("',1,'enter any string you want');")); oappend(SET_F("addInfo('")); oappend(String(FPSTR(_name)).c_str()); oappend(SET_F(":testString")); oappend(SET_F("',1,'enter any string you want');"));
@ -300,7 +300,7 @@ class MyExampleUsermod : public Usermod {
* Use this to blank out some LEDs or set them to a different color regardless of the set effect mode. * Use this to blank out some LEDs or set them to a different color regardless of the set effect mode.
* Commonly used for custom clocks (Cronixie, 7 segment) * Commonly used for custom clocks (Cronixie, 7 segment)
*/ */
void handleOverlayDraw() void handleOverlayDraw() override
{ {
//strip.setPixelColor(0, RGBW32(0,0,0,0)) // set the first pixel to black //strip.setPixelColor(0, RGBW32(0,0,0,0)) // set the first pixel to black
} }
@ -311,7 +311,7 @@ class MyExampleUsermod : public Usermod {
* will prevent button working in a default way. * will prevent button working in a default way.
* Replicating button.cpp * Replicating button.cpp
*/ */
bool handleButton(uint8_t b) { bool handleButton(uint8_t b) override {
yield(); yield();
// ignore certain button types as they may have other consequences // ignore certain button types as they may have other consequences
if (!enabled if (!enabled
@ -334,7 +334,7 @@ class MyExampleUsermod : public Usermod {
* handling of MQTT message * handling of MQTT message
* topic only contains stripped topic (part after /wled/MAC) * topic only contains stripped topic (part after /wled/MAC)
*/ */
bool onMqttMessage(char* topic, char* payload) { bool onMqttMessage(char* topic, char* payload) override {
// check if we received a command // check if we received a command
//if (strlen(topic) == 8 && strncmp_P(topic, PSTR("/command"), 8) == 0) { //if (strlen(topic) == 8 && strncmp_P(topic, PSTR("/command"), 8) == 0) {
// String action = payload; // String action = payload;
@ -355,7 +355,7 @@ class MyExampleUsermod : public Usermod {
/** /**
* onMqttConnect() is called when MQTT connection is established * onMqttConnect() is called when MQTT connection is established
*/ */
void onMqttConnect(bool sessionPresent) { void onMqttConnect(bool sessionPresent) override {
// do any MQTT related initialisation here // do any MQTT related initialisation here
//publishMqtt("I am alive!"); //publishMqtt("I am alive!");
} }
@ -366,7 +366,7 @@ class MyExampleUsermod : public Usermod {
* onStateChanged() is used to detect WLED state change * onStateChanged() is used to detect WLED state change
* @mode parameter is CALL_MODE_... parameter used for notifications * @mode parameter is CALL_MODE_... parameter used for notifications
*/ */
void onStateChange(uint8_t mode) { void onStateChange(uint8_t mode) override {
// do something if WLED state changed (color, brightness, effect, preset, etc) // do something if WLED state changed (color, brightness, effect, preset, etc)
} }
@ -375,7 +375,7 @@ class MyExampleUsermod : public Usermod {
* getId() allows you to optionally give your V2 usermod an unique ID (please define it in const.h!). * getId() allows you to optionally give your V2 usermod an unique ID (please define it in const.h!).
* This could be used in the future for the system to determine whether your usermod is installed. * This could be used in the future for the system to determine whether your usermod is installed.
*/ */
uint16_t getId() uint16_t getId() override
{ {
return USERMOD_ID_EXAMPLE; return USERMOD_ID_EXAMPLE;
} }

View File

@ -117,7 +117,7 @@ public:
* setup() is called once at boot. WiFi is not yet connected at this point. * setup() is called once at boot. WiFi is not yet connected at this point.
* You can use it to initialize variables, sensors or similar. * You can use it to initialize variables, sensors or similar.
*/ */
void setup(); void setup() override;
/** /**
* connected() is called every time the WiFi is (re)connected * connected() is called every time the WiFi is (re)connected
@ -128,24 +128,24 @@ public:
/** /**
* onMqttConnect() is called when MQTT connection is established * onMqttConnect() is called when MQTT connection is established
*/ */
void onMqttConnect(bool sessionPresent); void onMqttConnect(bool sessionPresent) override;
/** /**
* loop() is called continuously. Here you can check for events, read sensors, etc. * loop() is called continuously. Here you can check for events, read sensors, etc.
*/ */
void loop(); void loop() override;
/** /**
* addToJsonInfo() can be used to add custom entries to the /json/info part of the JSON API. * addToJsonInfo() can be used to add custom entries to the /json/info part of the JSON API.
* *
* Add PIR sensor state and switch off timer duration to jsoninfo * Add PIR sensor state and switch off timer duration to jsoninfo
*/ */
void addToJsonInfo(JsonObject &root); void addToJsonInfo(JsonObject &root) override;
/** /**
* onStateChanged() is used to detect WLED state change * onStateChanged() is used to detect WLED state change
*/ */
void onStateChange(uint8_t mode); void onStateChange(uint8_t mode) override;
/** /**
* addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object). * addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object).
@ -157,17 +157,17 @@ public:
* readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object). * readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object).
* Values in the state object may be modified by connected clients * Values in the state object may be modified by connected clients
*/ */
void readFromJsonState(JsonObject &root); void readFromJsonState(JsonObject &root) override;
/** /**
* provide the changeable values * provide the changeable values
*/ */
void addToConfig(JsonObject &root); void addToConfig(JsonObject &root) override;
/** /**
* provide UI information and allow extending UI options * provide UI information and allow extending UI options
*/ */
void appendConfigData(); void appendConfigData() override;
/** /**
* restore the changeable values * restore the changeable values
@ -175,13 +175,13 @@ public:
* *
* The function should return true if configuration was successfully loaded or false if there was no configuration. * The function should return true if configuration was successfully loaded or false if there was no configuration.
*/ */
bool readFromConfig(JsonObject &root); bool readFromConfig(JsonObject &root) override;
/** /**
* getId() allows you to optionally give your V2 usermod an unique ID (please define it in const.h!). * getId() allows you to optionally give your V2 usermod an unique ID (please define it in const.h!).
* This could be used in the future for the system to determine whether your usermod is installed. * This could be used in the future for the system to determine whether your usermod is installed.
*/ */
uint16_t getId() { return USERMOD_ID_PIRSWITCH; } uint16_t getId() override { return USERMOD_ID_PIRSWITCH; }
}; };
// strings to reduce flash memory usage (used more than twice) // strings to reduce flash memory usage (used more than twice)

View File

@ -188,7 +188,7 @@ class PWMFanUsermod : public Usermod {
// gets called once at boot. Do all initialization that doesn't depend on // gets called once at boot. Do all initialization that doesn't depend on
// network here // network here
void setup() { void setup() override {
#ifdef USERMOD_DALLASTEMPERATURE #ifdef USERMOD_DALLASTEMPERATURE
// This Usermod requires Temperature usermod // This Usermod requires Temperature usermod
tempUM = (UsermodTemperature*) usermods.lookup(USERMOD_ID_TEMPERATURE); tempUM = (UsermodTemperature*) usermods.lookup(USERMOD_ID_TEMPERATURE);
@ -203,12 +203,12 @@ class PWMFanUsermod : public Usermod {
// gets called every time WiFi is (re-)connected. Initialize own network // gets called every time WiFi is (re-)connected. Initialize own network
// interfaces here // interfaces here
void connected() {} void connected() override {}
/* /*
* Da loop. * Da loop.
*/ */
void loop() { void loop() override {
if (!enabled || strip.isUpdating()) return; if (!enabled || strip.isUpdating()) return;
unsigned long now = millis(); unsigned long now = millis();
@ -223,7 +223,7 @@ class PWMFanUsermod : public Usermod {
* Creating an "u" object allows you to add custom key/value pairs to the Info section of the WLED web UI. * Creating an "u" object allows you to add custom key/value pairs to the Info section of the WLED web UI.
* Below it is shown how this could be used for e.g. a light sensor * Below it is shown how this could be used for e.g. a light sensor
*/ */
void addToJsonInfo(JsonObject& root) { void addToJsonInfo(JsonObject& root) override {
JsonObject user = root["u"]; JsonObject user = root["u"];
if (user.isNull()) user = root.createNestedObject("u"); if (user.isNull()) user = root.createNestedObject("u");
@ -272,7 +272,7 @@ class PWMFanUsermod : public Usermod {
* readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object). * readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object).
* Values in the state object may be modified by connected clients * Values in the state object may be modified by connected clients
*/ */
void readFromJsonState(JsonObject& root) { void readFromJsonState(JsonObject& root) override {
if (!initDone) return; // prevent crash on boot applyPreset() if (!initDone) return; // prevent crash on boot applyPreset()
JsonObject usermod = root[FPSTR(_name)]; JsonObject usermod = root[FPSTR(_name)];
if (!usermod.isNull()) { if (!usermod.isNull()) {
@ -305,7 +305,7 @@ class PWMFanUsermod : public Usermod {
* *
* I highly recommend checking out the basics of ArduinoJson serialization and deserialization in order to use custom settings! * I highly recommend checking out the basics of ArduinoJson serialization and deserialization in order to use custom settings!
*/ */
void addToConfig(JsonObject& root) { void addToConfig(JsonObject& root) override {
JsonObject top = root.createNestedObject(FPSTR(_name)); // usermodname JsonObject top = root.createNestedObject(FPSTR(_name)); // usermodname
top[FPSTR(_enabled)] = enabled; top[FPSTR(_enabled)] = enabled;
top[FPSTR(_pwmPin)] = pwmPin; top[FPSTR(_pwmPin)] = pwmPin;
@ -328,7 +328,7 @@ class PWMFanUsermod : public Usermod {
* *
* The function should return true if configuration was successfully loaded or false if there was no configuration. * The function should return true if configuration was successfully loaded or false if there was no configuration.
*/ */
bool readFromConfig(JsonObject& root) { bool readFromConfig(JsonObject& root) override {
int8_t newTachoPin = tachoPin; int8_t newTachoPin = tachoPin;
int8_t newPwmPin = pwmPin; int8_t newPwmPin = pwmPin;
@ -380,7 +380,7 @@ class PWMFanUsermod : public Usermod {
* getId() allows you to optionally give your V2 usermod an unique ID (please define it in const.h!). * getId() allows you to optionally give your V2 usermod an unique ID (please define it in const.h!).
* This could be used in the future for the system to determine whether your usermod is installed. * This could be used in the future for the system to determine whether your usermod is installed.
*/ */
uint16_t getId() { uint16_t getId() override {
return USERMOD_ID_PWM_FAN; return USERMOD_ID_PWM_FAN;
} }
}; };

View File

@ -132,7 +132,7 @@ class St7789DisplayUsermod : public Usermod {
* setup() is called once at boot. WiFi is not yet connected at this point. * setup() is called once at boot. WiFi is not yet connected at this point.
* You can use it to initialize variables, sensors or similar. * You can use it to initialize variables, sensors or similar.
*/ */
void setup() void setup() override
{ {
PinManagerPinType spiPins[] = { { spi_mosi, true }, { spi_miso, false}, { spi_sclk, true } }; PinManagerPinType spiPins[] = { { spi_mosi, true }, { spi_miso, false}, { spi_sclk, true } };
if (!pinManager.allocateMultiplePins(spiPins, 3, PinOwner::HW_SPI)) { enabled = false; return; } if (!pinManager.allocateMultiplePins(spiPins, 3, PinOwner::HW_SPI)) { enabled = false; return; }
@ -162,7 +162,7 @@ class St7789DisplayUsermod : public Usermod {
* connected() is called every time the WiFi is (re)connected * connected() is called every time the WiFi is (re)connected
* Use it to initialize network interfaces * Use it to initialize network interfaces
*/ */
void connected() { void connected() override {
//Serial.println("Connected to WiFi!"); //Serial.println("Connected to WiFi!");
} }
@ -176,7 +176,7 @@ class St7789DisplayUsermod : public Usermod {
* 2. Try to avoid using the delay() function. NEVER use delays longer than 10 milliseconds. * 2. Try to avoid using the delay() function. NEVER use delays longer than 10 milliseconds.
* Instead, use a timer check as shown here. * Instead, use a timer check as shown here.
*/ */
void loop() { void loop() override {
char buff[LINE_BUFFER_SIZE]; char buff[LINE_BUFFER_SIZE];
// Check if we time interval for redrawing passes. // Check if we time interval for redrawing passes.
@ -316,7 +316,7 @@ class St7789DisplayUsermod : public Usermod {
* Creating an "u" object allows you to add custom key/value pairs to the Info section of the WLED web UI. * Creating an "u" object allows you to add custom key/value pairs to the Info section of the WLED web UI.
* Below it is shown how this could be used for e.g. a light sensor * Below it is shown how this could be used for e.g. a light sensor
*/ */
void addToJsonInfo(JsonObject& root) void addToJsonInfo(JsonObject& root) override
{ {
JsonObject user = root["u"]; JsonObject user = root["u"];
if (user.isNull()) user = root.createNestedObject("u"); if (user.isNull()) user = root.createNestedObject("u");
@ -330,7 +330,7 @@ class St7789DisplayUsermod : public Usermod {
* addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object). * addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object).
* Values in the state object may be modified by connected clients * Values in the state object may be modified by connected clients
*/ */
void addToJsonState(JsonObject& root) void addToJsonState(JsonObject& root) override
{ {
//root["user0"] = userVar0; //root["user0"] = userVar0;
} }
@ -340,7 +340,7 @@ class St7789DisplayUsermod : public Usermod {
* readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object). * readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object).
* Values in the state object may be modified by connected clients * Values in the state object may be modified by connected clients
*/ */
void readFromJsonState(JsonObject& root) void readFromJsonState(JsonObject& root) override
{ {
//userVar0 = root["user0"] | userVar0; //if "user0" key exists in JSON, update, else keep old value //userVar0 = root["user0"] | userVar0; //if "user0" key exists in JSON, update, else keep old value
//if (root["bri"] == 255) Serial.println(F("Don't burn down your garage!")); //if (root["bri"] == 255) Serial.println(F("Don't burn down your garage!"));
@ -361,7 +361,7 @@ class St7789DisplayUsermod : public Usermod {
* *
* I highly recommend checking out the basics of ArduinoJson serialization and deserialization in order to use custom settings! * I highly recommend checking out the basics of ArduinoJson serialization and deserialization in order to use custom settings!
*/ */
void addToConfig(JsonObject& root) void addToConfig(JsonObject& root) override
{ {
JsonObject top = root.createNestedObject("ST7789"); JsonObject top = root.createNestedObject("ST7789");
JsonArray pins = top.createNestedArray("pin"); JsonArray pins = top.createNestedArray("pin");
@ -373,7 +373,7 @@ class St7789DisplayUsermod : public Usermod {
} }
void appendConfigData() { void appendConfigData() override {
oappend(SET_F("addInfo('ST7789:pin[]',0,'','SPI CS');")); oappend(SET_F("addInfo('ST7789:pin[]',0,'','SPI CS');"));
oappend(SET_F("addInfo('ST7789:pin[]',1,'','SPI DC');")); oappend(SET_F("addInfo('ST7789:pin[]',1,'','SPI DC');"));
oappend(SET_F("addInfo('ST7789:pin[]',2,'','SPI RST');")); oappend(SET_F("addInfo('ST7789:pin[]',2,'','SPI RST');"));
@ -388,7 +388,7 @@ class St7789DisplayUsermod : public Usermod {
* but also that if you want to write persistent values to a dynamic buffer, you'd need to allocate it here instead of in setup. * but also that if you want to write persistent values to a dynamic buffer, you'd need to allocate it here instead of in setup.
* If you don't know what that is, don't fret. It most likely doesn't affect your use case :) * If you don't know what that is, don't fret. It most likely doesn't affect your use case :)
*/ */
bool readFromConfig(JsonObject& root) bool readFromConfig(JsonObject& root) override
{ {
//JsonObject top = root["top"]; //JsonObject top = root["top"];
//userVar0 = top["great"] | 42; //The value right of the pipe "|" is the default value in case your setting was not present in cfg.json (e.g. first boot) //userVar0 = top["great"] | 42; //The value right of the pipe "|" is the default value in case your setting was not present in cfg.json (e.g. first boot)
@ -400,7 +400,7 @@ class St7789DisplayUsermod : public Usermod {
* getId() allows you to optionally give your V2 usermod an unique ID (please define it in const.h!). * getId() allows you to optionally give your V2 usermod an unique ID (please define it in const.h!).
* This could be used in the future for the system to determine whether your usermod is installed. * This could be used in the future for the system to determine whether your usermod is installed.
*/ */
uint16_t getId() uint16_t getId() override
{ {
return USERMOD_ID_ST7789_DISPLAY; return USERMOD_ID_ST7789_DISPLAY;
} }

View File

@ -76,26 +76,26 @@ class UsermodTemperature : public Usermod {
inline float getTemperatureF() { return temperature * 1.8f + 32.0f; } inline float getTemperatureF() { return temperature * 1.8f + 32.0f; }
float getTemperature(); float getTemperature();
const char *getTemperatureUnit(); const char *getTemperatureUnit();
uint16_t getId() { return USERMOD_ID_TEMPERATURE; } uint16_t getId() override { return USERMOD_ID_TEMPERATURE; }
void setup(); void setup() override;
void loop(); void loop() override;
//void connected(); //void connected() override;
#ifndef WLED_DISABLE_MQTT #ifndef WLED_DISABLE_MQTT
void onMqttConnect(bool sessionPresent); void onMqttConnect(bool sessionPresent) override;
#endif #endif
//void onUpdateBegin(bool init); //void onUpdateBegin(bool init) override;
//bool handleButton(uint8_t b); //bool handleButton(uint8_t b) override;
//void handleOverlayDraw(); //void handleOverlayDraw() override;
void addToJsonInfo(JsonObject& root); void addToJsonInfo(JsonObject& root) override;
//void addToJsonState(JsonObject &root); //void addToJsonState(JsonObject &root) override;
//void readFromJsonState(JsonObject &root); //void readFromJsonState(JsonObject &root) override;
void addToConfig(JsonObject &root); void addToConfig(JsonObject &root) override;
bool readFromConfig(JsonObject &root); bool readFromConfig(JsonObject &root) override;
void appendConfigData(); void appendConfigData() override;
}; };
//Dallas sensor quick (& dirty) reading. Credit to - Author: Peter Scargill, August 17th, 2013 //Dallas sensor quick (& dirty) reading. Credit to - Author: Peter Scargill, August 17th, 2013

View File

@ -1094,7 +1094,7 @@ class AudioReactive : public Usermod {
* You can use it to initialize variables, sensors or similar. * You can use it to initialize variables, sensors or similar.
* It is called *AFTER* readFromConfig() * It is called *AFTER* readFromConfig()
*/ */
void setup() void setup() override
{ {
disableSoundProcessing = true; // just to be sure disableSoundProcessing = true; // just to be sure
if (!initDone) { if (!initDone) {
@ -1217,7 +1217,7 @@ class AudioReactive : public Usermod {
* connected() is called every time the WiFi is (re)connected * connected() is called every time the WiFi is (re)connected
* Use it to initialize network interfaces * Use it to initialize network interfaces
*/ */
void connected() void connected() override
{ {
if (udpSyncConnected) { // clean-up: if open, close old UDP sync connection if (udpSyncConnected) { // clean-up: if open, close old UDP sync connection
udpSyncConnected = false; udpSyncConnected = false;
@ -1244,7 +1244,7 @@ class AudioReactive : public Usermod {
* 2. Try to avoid using the delay() function. NEVER use delays longer than 10 milliseconds. * 2. Try to avoid using the delay() function. NEVER use delays longer than 10 milliseconds.
* Instead, use a timer check as shown here. * Instead, use a timer check as shown here.
*/ */
void loop() void loop() override
{ {
static unsigned long lastUMRun = millis(); static unsigned long lastUMRun = millis();
@ -1375,7 +1375,7 @@ class AudioReactive : public Usermod {
} }
bool getUMData(um_data_t **data) bool getUMData(um_data_t **data) override
{ {
if (!data || !enabled) return false; // no pointer provided by caller or not enabled -> exit if (!data || !enabled) return false; // no pointer provided by caller or not enabled -> exit
*data = um_data; *data = um_data;
@ -1383,7 +1383,7 @@ class AudioReactive : public Usermod {
} }
void onUpdateBegin(bool init) void onUpdateBegin(bool init) override
{ {
#ifdef WLED_DEBUG #ifdef WLED_DEBUG
fftTime = sampleTime = 0; fftTime = sampleTime = 0;
@ -1438,7 +1438,7 @@ class AudioReactive : public Usermod {
* handleButton() can be used to override default button behaviour. Returning true * handleButton() can be used to override default button behaviour. Returning true
* will prevent button working in a default way. * will prevent button working in a default way.
*/ */
bool handleButton(uint8_t b) { bool handleButton(uint8_t b) override {
yield(); yield();
// crude way of determining if audio input is analog // crude way of determining if audio input is analog
// better would be for AudioSource to implement getType() // better would be for AudioSource to implement getType()
@ -1461,7 +1461,7 @@ class AudioReactive : public Usermod {
* Creating an "u" object allows you to add custom key/value pairs to the Info section of the WLED web UI. * Creating an "u" object allows you to add custom key/value pairs to the Info section of the WLED web UI.
* Below it is shown how this could be used for e.g. a light sensor * Below it is shown how this could be used for e.g. a light sensor
*/ */
void addToJsonInfo(JsonObject& root) void addToJsonInfo(JsonObject& root) override
{ {
char myStringBuffer[16]; // buffer for snprintf() char myStringBuffer[16]; // buffer for snprintf()
JsonObject user = root["u"]; JsonObject user = root["u"];
@ -1600,7 +1600,7 @@ class AudioReactive : public Usermod {
* addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object). * addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object).
* Values in the state object may be modified by connected clients * Values in the state object may be modified by connected clients
*/ */
void addToJsonState(JsonObject& root) void addToJsonState(JsonObject& root) override
{ {
if (!initDone) return; // prevent crash on boot applyPreset() if (!initDone) return; // prevent crash on boot applyPreset()
JsonObject usermod = root[FPSTR(_name)]; JsonObject usermod = root[FPSTR(_name)];
@ -1615,7 +1615,7 @@ class AudioReactive : public Usermod {
* readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object). * readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object).
* Values in the state object may be modified by connected clients * Values in the state object may be modified by connected clients
*/ */
void readFromJsonState(JsonObject& root) void readFromJsonState(JsonObject& root) override
{ {
if (!initDone) return; // prevent crash on boot applyPreset() if (!initDone) return; // prevent crash on boot applyPreset()
bool prevEnabled = enabled; bool prevEnabled = enabled;
@ -1640,7 +1640,7 @@ class AudioReactive : public Usermod {
} }
} }
void onStateChange(uint8_t callMode) { void onStateChange(uint8_t callMode) override {
if (initDone && enabled && addPalettes && palettes==0 && strip.customPalettes.size()<10) { if (initDone && enabled && addPalettes && palettes==0 && strip.customPalettes.size()<10) {
// if palettes were removed during JSON call re-add them // if palettes were removed during JSON call re-add them
createAudioPalettes(); createAudioPalettes();
@ -1682,7 +1682,7 @@ class AudioReactive : public Usermod {
* *
* I highly recommend checking out the basics of ArduinoJson serialization and deserialization in order to use custom settings! * I highly recommend checking out the basics of ArduinoJson serialization and deserialization in order to use custom settings!
*/ */
void addToConfig(JsonObject& root) void addToConfig(JsonObject& root) override
{ {
JsonObject top = root.createNestedObject(FPSTR(_name)); JsonObject top = root.createNestedObject(FPSTR(_name));
top[FPSTR(_enabled)] = enabled; top[FPSTR(_enabled)] = enabled;
@ -1735,7 +1735,7 @@ class AudioReactive : public Usermod {
* *
* This function is guaranteed to be called on boot, but could also be called every time settings are updated * This function is guaranteed to be called on boot, but could also be called every time settings are updated
*/ */
bool readFromConfig(JsonObject& root) bool readFromConfig(JsonObject& root) override
{ {
JsonObject top = root[FPSTR(_name)]; JsonObject top = root[FPSTR(_name)];
bool configComplete = !top.isNull(); bool configComplete = !top.isNull();
@ -1786,7 +1786,7 @@ class AudioReactive : public Usermod {
} }
void appendConfigData() void appendConfigData() override
{ {
oappend(SET_F("dd=addDropdown('AudioReactive','digitalmic:type');")); oappend(SET_F("dd=addDropdown('AudioReactive','digitalmic:type');"));
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32S3) #if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32S3)
@ -1841,7 +1841,7 @@ class AudioReactive : public Usermod {
* Use this to blank out some LEDs or set them to a different color regardless of the set effect mode. * Use this to blank out some LEDs or set them to a different color regardless of the set effect mode.
* Commonly used for custom clocks (Cronixie, 7 segment) * Commonly used for custom clocks (Cronixie, 7 segment)
*/ */
//void handleOverlayDraw() //void handleOverlayDraw() override
//{ //{
//strip.setPixelColor(0, RGBW32(0,0,0,0)) // set the first pixel to black //strip.setPixelColor(0, RGBW32(0,0,0,0)) // set the first pixel to black
//} //}
@ -1851,7 +1851,7 @@ class AudioReactive : public Usermod {
* getId() allows you to optionally give your V2 usermod an unique ID (please define it in const.h!). * getId() allows you to optionally give your V2 usermod an unique ID (please define it in const.h!).
* This could be used in the future for the system to determine whether your usermod is installed. * This could be used in the future for the system to determine whether your usermod is installed.
*/ */
uint16_t getId() uint16_t getId() override
{ {
return USERMOD_ID_AUDIOREACTIVE; return USERMOD_ID_AUDIOREACTIVE;
} }

View File

@ -187,7 +187,7 @@ class BobLightUsermod : public Usermod {
public: public:
void setup() { void setup() override {
uint16_t totalLights = bottom + left + top + right; uint16_t totalLights = bottom + left + top + right;
if ( totalLights > strip.getLengthTotal() ) { if ( totalLights > strip.getLengthTotal() ) {
DEBUG_PRINTLN(F("BobLight: Too many lights.")); DEBUG_PRINTLN(F("BobLight: Too many lights."));
@ -202,14 +202,14 @@ class BobLightUsermod : public Usermod {
initDone = true; initDone = true;
} }
void connected() { void connected() override {
// we can only start server when WiFi is connected // we can only start server when WiFi is connected
if (!bob) bob = new WiFiServer(bobPort, 1); if (!bob) bob = new WiFiServer(bobPort, 1);
bob->begin(); bob->begin();
bob->setNoDelay(true); bob->setNoDelay(true);
} }
void loop() { void loop() override {
if (!enabled || strip.isUpdating()) return; if (!enabled || strip.isUpdating()) return;
if (millis() - lastTime > 10) { if (millis() - lastTime > 10) {
lastTime = millis(); lastTime = millis();
@ -225,7 +225,7 @@ class BobLightUsermod : public Usermod {
* topic only contains stripped topic (part after /wled/MAC) * topic only contains stripped topic (part after /wled/MAC)
* topic should look like: /swipe with amessage of [up|down] * topic should look like: /swipe with amessage of [up|down]
*/ */
bool onMqttMessage(char* topic, char* payload) { bool onMqttMessage(char* topic, char* payload) override {
//if (strlen(topic) == 6 && strncmp_P(topic, PSTR("/subtopic"), 6) == 0) { //if (strlen(topic) == 6 && strncmp_P(topic, PSTR("/subtopic"), 6) == 0) {
// String action = payload; // String action = payload;
// if (action == "on") { // if (action == "on") {
@ -242,7 +242,7 @@ class BobLightUsermod : public Usermod {
/** /**
* subscribe to MQTT topic for controlling usermod * subscribe to MQTT topic for controlling usermod
*/ */
void onMqttConnect(bool sessionPresent) { void onMqttConnect(bool sessionPresent) override {
//char subuf[64]; //char subuf[64];
//if (mqttDeviceTopic[0] != 0) { //if (mqttDeviceTopic[0] != 0) {
// strcpy(subuf, mqttDeviceTopic); // strcpy(subuf, mqttDeviceTopic);
@ -252,7 +252,7 @@ class BobLightUsermod : public Usermod {
} }
#endif #endif
void addToJsonInfo(JsonObject& root) void addToJsonInfo(JsonObject& root) override
{ {
JsonObject user = root["u"]; JsonObject user = root["u"];
if (user.isNull()) user = root.createNestedObject("u"); if (user.isNull()) user = root.createNestedObject("u");
@ -273,7 +273,7 @@ class BobLightUsermod : public Usermod {
* addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object). * addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object).
* Values in the state object may be modified by connected clients * Values in the state object may be modified by connected clients
*/ */
void addToJsonState(JsonObject& root) void addToJsonState(JsonObject& root) override
{ {
} }
@ -281,7 +281,7 @@ class BobLightUsermod : public Usermod {
* readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object). * readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object).
* Values in the state object may be modified by connected clients * Values in the state object may be modified by connected clients
*/ */
void readFromJsonState(JsonObject& root) { void readFromJsonState(JsonObject& root) override {
if (!initDone) return; // prevent crash on boot applyPreset() if (!initDone) return; // prevent crash on boot applyPreset()
bool en = enabled; bool en = enabled;
JsonObject um = root[FPSTR(_name)]; JsonObject um = root[FPSTR(_name)];
@ -304,7 +304,7 @@ class BobLightUsermod : public Usermod {
} }
} }
void appendConfigData() { void appendConfigData() override {
//oappend(SET_F("dd=addDropdown('usermod','selectfield');")); //oappend(SET_F("dd=addDropdown('usermod','selectfield');"));
//oappend(SET_F("addOption(dd,'1st value',0);")); //oappend(SET_F("addOption(dd,'1st value',0);"));
//oappend(SET_F("addOption(dd,'2nd value',1);")); //oappend(SET_F("addOption(dd,'2nd value',1);"));
@ -315,7 +315,7 @@ class BobLightUsermod : public Usermod {
oappend(SET_F("addInfo('BobLight:pct',1,'Depth of scan [%]');")); // 0 is field type, 1 is actual field oappend(SET_F("addInfo('BobLight:pct',1,'Depth of scan [%]');")); // 0 is field type, 1 is actual field
} }
void addToConfig(JsonObject& root) { void addToConfig(JsonObject& root) override {
JsonObject umData = root.createNestedObject(FPSTR(_name)); JsonObject umData = root.createNestedObject(FPSTR(_name));
umData[FPSTR(_enabled)] = enabled; umData[FPSTR(_enabled)] = enabled;
umData[F("port")] = bobPort; umData[F("port")] = bobPort;
@ -326,7 +326,7 @@ class BobLightUsermod : public Usermod {
umData[F("pct")] = pct; umData[F("pct")] = pct;
} }
bool readFromConfig(JsonObject& root) { bool readFromConfig(JsonObject& root) override {
JsonObject umData = root[FPSTR(_name)]; JsonObject umData = root[FPSTR(_name)];
bool configComplete = !umData.isNull(); bool configComplete = !umData.isNull();
@ -355,11 +355,11 @@ class BobLightUsermod : public Usermod {
* Use this to blank out some LEDs or set them to a different color regardless of the set effect mode. * Use this to blank out some LEDs or set them to a different color regardless of the set effect mode.
* Commonly used for custom clocks (Cronixie, 7 segment) * Commonly used for custom clocks (Cronixie, 7 segment)
*/ */
void handleOverlayDraw() { void handleOverlayDraw() override {
//strip.setPixelColor(0, RGBW32(0,0,0,0)) // set the first pixel to black //strip.setPixelColor(0, RGBW32(0,0,0,0)) // set the first pixel to black
} }
uint16_t getId() { return USERMOD_ID_BOBLIGHT; } uint16_t getId() override { return USERMOD_ID_BOBLIGHT; }
}; };

View File

@ -143,7 +143,7 @@ class MultiRelay : public Usermod {
* getId() allows you to optionally give your V2 usermod an unique ID (please define it in const.h!). * getId() allows you to optionally give your V2 usermod an unique ID (please define it in const.h!).
* This could be used in the future for the system to determine whether your usermod is installed. * This could be used in the future for the system to determine whether your usermod is installed.
*/ */
inline uint16_t getId() { return USERMOD_ID_MULTI_RELAY; } inline uint16_t getId() override { return USERMOD_ID_MULTI_RELAY; }
/** /**
* switch relay on/off * switch relay on/off
@ -161,22 +161,22 @@ class MultiRelay : public Usermod {
* setup() is called once at boot. WiFi is not yet connected at this point. * setup() is called once at boot. WiFi is not yet connected at this point.
* You can use it to initialize variables, sensors or similar. * You can use it to initialize variables, sensors or similar.
*/ */
void setup(); void setup() override;
/** /**
* connected() is called every time the WiFi is (re)connected * connected() is called every time the WiFi is (re)connected
* Use it to initialize network interfaces * Use it to initialize network interfaces
*/ */
inline void connected() { InitHtmlAPIHandle(); } inline void connected() override { InitHtmlAPIHandle(); }
/** /**
* loop() is called continuously. Here you can check for events, read sensors, etc. * loop() is called continuously. Here you can check for events, read sensors, etc.
*/ */
void loop(); void loop() override;
#ifndef WLED_DISABLE_MQTT #ifndef WLED_DISABLE_MQTT
bool onMqttMessage(char* topic, char* payload); bool onMqttMessage(char* topic, char* payload) override;
void onMqttConnect(bool sessionPresent); void onMqttConnect(bool sessionPresent) override;
#endif #endif
/** /**
@ -184,31 +184,31 @@ class MultiRelay : public Usermod {
* will prevent button working in a default way. * will prevent button working in a default way.
* Replicating button.cpp * Replicating button.cpp
*/ */
bool handleButton(uint8_t b); bool handleButton(uint8_t b) override;
/** /**
* addToJsonInfo() can be used to add custom entries to the /json/info part of the JSON API. * addToJsonInfo() can be used to add custom entries to the /json/info part of the JSON API.
*/ */
void addToJsonInfo(JsonObject &root); void addToJsonInfo(JsonObject &root) override;
/** /**
* addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object). * addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object).
* Values in the state object may be modified by connected clients * Values in the state object may be modified by connected clients
*/ */
void addToJsonState(JsonObject &root); void addToJsonState(JsonObject &root) override;
/** /**
* readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object). * readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object).
* Values in the state object may be modified by connected clients * Values in the state object may be modified by connected clients
*/ */
void readFromJsonState(JsonObject &root); void readFromJsonState(JsonObject &root) override;
/** /**
* provide the changeable values * provide the changeable values
*/ */
void addToConfig(JsonObject &root); void addToConfig(JsonObject &root) override;
void appendConfigData(); void appendConfigData() override;
/** /**
* restore the changeable values * restore the changeable values
@ -216,7 +216,7 @@ class MultiRelay : public Usermod {
* *
* The function should return true if configuration was successfully loaded or false if there was no configuration. * The function should return true if configuration was successfully loaded or false if there was no configuration.
*/ */
bool readFromConfig(JsonObject &root); bool readFromConfig(JsonObject &root) override;
}; };

View File

@ -211,16 +211,16 @@ class FourLineDisplayUsermod : public Usermod {
// gets called once at boot. Do all initialization that doesn't depend on // gets called once at boot. Do all initialization that doesn't depend on
// network here // network here
void setup(); void setup() override;
// gets called every time WiFi is (re-)connected. Initialize own network // gets called every time WiFi is (re-)connected. Initialize own network
// interfaces here // interfaces here
void connected(); void connected() override;
/** /**
* Da loop. * Da loop.
*/ */
void loop(); void loop() override;
//function to update lastredraw //function to update lastredraw
inline void updateRedrawTime() { lastRedraw = millis(); } inline void updateRedrawTime() { lastRedraw = millis(); }
@ -287,28 +287,28 @@ class FourLineDisplayUsermod : public Usermod {
*/ */
bool handleButton(uint8_t b); bool handleButton(uint8_t b);
void onUpdateBegin(bool init); void onUpdateBegin(bool init) override;
/* /*
* addToJsonInfo() can be used to add custom entries to the /json/info part of the JSON API. * addToJsonInfo() can be used to add custom entries to the /json/info part of the JSON API.
* Creating an "u" object allows you to add custom key/value pairs to the Info section of the WLED web UI. * Creating an "u" object allows you to add custom key/value pairs to the Info section of the WLED web UI.
* Below it is shown how this could be used for e.g. a light sensor * Below it is shown how this could be used for e.g. a light sensor
*/ */
//void addToJsonInfo(JsonObject& root); //void addToJsonInfo(JsonObject& root) override;
/* /*
* addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object). * addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object).
* Values in the state object may be modified by connected clients * Values in the state object may be modified by connected clients
*/ */
//void addToJsonState(JsonObject& root); //void addToJsonState(JsonObject& root) override;
/* /*
* readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object). * readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object).
* Values in the state object may be modified by connected clients * Values in the state object may be modified by connected clients
*/ */
//void readFromJsonState(JsonObject& root); //void readFromJsonState(JsonObject& root) override;
void appendConfigData(); void appendConfigData() override;
/* /*
* addToConfig() can be used to add custom persistent settings to the cfg.json file in the "um" (usermod) object. * addToConfig() can be used to add custom persistent settings to the cfg.json file in the "um" (usermod) object.
@ -324,7 +324,7 @@ class FourLineDisplayUsermod : public Usermod {
* *
* I highly recommend checking out the basics of ArduinoJson serialization and deserialization in order to use custom settings! * I highly recommend checking out the basics of ArduinoJson serialization and deserialization in order to use custom settings!
*/ */
void addToConfig(JsonObject& root); void addToConfig(JsonObject& root) override;
/* /*
* readFromConfig() can be used to read back the custom settings you added with addToConfig(). * readFromConfig() can be used to read back the custom settings you added with addToConfig().
@ -334,13 +334,13 @@ class FourLineDisplayUsermod : public Usermod {
* but also that if you want to write persistent values to a dynamic buffer, you'd need to allocate it here instead of in setup. * but also that if you want to write persistent values to a dynamic buffer, you'd need to allocate it here instead of in setup.
* If you don't know what that is, don't fret. It most likely doesn't affect your use case :) * If you don't know what that is, don't fret. It most likely doesn't affect your use case :)
*/ */
bool readFromConfig(JsonObject& root); bool readFromConfig(JsonObject& root) override;
/* /*
* getId() allows you to optionally give your V2 usermod an unique ID (please define it in const.h!). * getId() allows you to optionally give your V2 usermod an unique ID (please define it in const.h!).
* This could be used in the future for the system to determine whether your usermod is installed. * This could be used in the future for the system to determine whether your usermod is installed.
*/ */
uint16_t getId() { uint16_t getId() override {
return USERMOD_ID_FOUR_LINE_DISP; return USERMOD_ID_FOUR_LINE_DISP;
} }
}; };

View File

@ -285,7 +285,7 @@ class RotaryEncoderUIUsermod : public Usermod {
* getId() allows you to optionally give your V2 usermod an unique ID (please define it in const.h!). * getId() allows you to optionally give your V2 usermod an unique ID (please define it in const.h!).
* This could be used in the future for the system to determine whether your usermod is installed. * This could be used in the future for the system to determine whether your usermod is installed.
*/ */
uint16_t getId() { return USERMOD_ID_ROTARY_ENC_UI; } uint16_t getId() override { return USERMOD_ID_ROTARY_ENC_UI; }
/** /**
* Enable/Disable the usermod * Enable/Disable the usermod
*/ */
@ -300,7 +300,7 @@ class RotaryEncoderUIUsermod : public Usermod {
* setup() is called once at boot. WiFi is not yet connected at this point. * setup() is called once at boot. WiFi is not yet connected at this point.
* You can use it to initialize variables, sensors or similar. * You can use it to initialize variables, sensors or similar.
*/ */
void setup(); void setup() override;
/** /**
* connected() is called every time the WiFi is (re)connected * connected() is called every time the WiFi is (re)connected
@ -311,11 +311,11 @@ class RotaryEncoderUIUsermod : public Usermod {
/** /**
* loop() is called continuously. Here you can check for events, read sensors, etc. * loop() is called continuously. Here you can check for events, read sensors, etc.
*/ */
void loop(); void loop() override;
#ifndef WLED_DISABLE_MQTT #ifndef WLED_DISABLE_MQTT
//bool onMqttMessage(char* topic, char* payload); //bool onMqttMessage(char* topic, char* payload) override;
//void onMqttConnect(bool sessionPresent); //void onMqttConnect(bool sessionPresent) override;
#endif #endif
/** /**
@ -323,31 +323,31 @@ class RotaryEncoderUIUsermod : public Usermod {
* will prevent button working in a default way. * will prevent button working in a default way.
* Replicating button.cpp * Replicating button.cpp
*/ */
//bool handleButton(uint8_t b); //bool handleButton(uint8_t b) override;
/** /**
* addToJsonInfo() can be used to add custom entries to the /json/info part of the JSON API. * addToJsonInfo() can be used to add custom entries to the /json/info part of the JSON API.
*/ */
//void addToJsonInfo(JsonObject &root); //void addToJsonInfo(JsonObject &root) override;
/** /**
* addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object). * addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object).
* Values in the state object may be modified by connected clients * Values in the state object may be modified by connected clients
*/ */
//void addToJsonState(JsonObject &root); //void addToJsonState(JsonObject &root) override;
/** /**
* readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object). * readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object).
* Values in the state object may be modified by connected clients * Values in the state object may be modified by connected clients
*/ */
//void readFromJsonState(JsonObject &root); //void readFromJsonState(JsonObject &root) override;
/** /**
* provide the changeable values * provide the changeable values
*/ */
void addToConfig(JsonObject &root); void addToConfig(JsonObject &root) override;
void appendConfigData(); void appendConfigData() override;
/** /**
* restore the changeable values * restore the changeable values
@ -355,7 +355,7 @@ class RotaryEncoderUIUsermod : public Usermod {
* *
* The function should return true if configuration was successfully loaded or false if there was no configuration. * The function should return true if configuration was successfully loaded or false if there was no configuration.
*/ */
bool readFromConfig(JsonObject &root); bool readFromConfig(JsonObject &root) override;
// custom methods // custom methods
void displayNetworkInfo(); void displayNetworkInfo();

View File

@ -129,10 +129,9 @@ class Bus {
virtual void setPixelColor(uint16_t pix, uint32_t c) = 0; virtual void setPixelColor(uint16_t pix, uint32_t c) = 0;
virtual uint32_t getPixelColor(uint16_t pix) { return 0; } virtual uint32_t getPixelColor(uint16_t pix) { return 0; }
virtual void setBrightness(uint8_t b) { _bri = b; }; virtual void setBrightness(uint8_t b) { _bri = b; };
virtual void cleanup() = 0;
virtual uint8_t getPins(uint8_t* pinArray) { return 0; } virtual uint8_t getPins(uint8_t* pinArray) { return 0; }
virtual uint16_t getLength() { return _len; } virtual uint16_t getLength() { return _len; }
virtual void setColorOrder() {} virtual void setColorOrder(uint8_t co) {}
virtual uint8_t getColorOrder() { return COL_ORDER_RGB; } virtual uint8_t getColorOrder() { return COL_ORDER_RGB; }
virtual uint8_t skippedLeds() { return 0; } virtual uint8_t skippedLeds() { return 0; }
virtual uint16_t getFrequency() { return 0U; } virtual uint16_t getFrequency() { return 0U; }
@ -207,21 +206,21 @@ class BusDigital : public Bus {
BusDigital(BusConfig &bc, uint8_t nr, const ColorOrderMap &com); BusDigital(BusConfig &bc, uint8_t nr, const ColorOrderMap &com);
~BusDigital() { cleanup(); } ~BusDigital() { cleanup(); }
void show(); void show() override;
bool canShow(); bool canShow() override;
void setBrightness(uint8_t b); void setBrightness(uint8_t b) override;
void setStatusPixel(uint32_t c); void setStatusPixel(uint32_t c) override;
void setPixelColor(uint16_t pix, uint32_t c); void setPixelColor(uint16_t pix, uint32_t c) override;
void setColorOrder(uint8_t colorOrder); void setColorOrder(uint8_t colorOrder) override;
uint32_t getPixelColor(uint16_t pix); uint32_t getPixelColor(uint16_t pix) override;
uint8_t getColorOrder() { return _colorOrder; } uint8_t getColorOrder() override { return _colorOrder; }
uint8_t getPins(uint8_t* pinArray); uint8_t getPins(uint8_t* pinArray) override;
uint8_t skippedLeds() { return _skip; } uint8_t skippedLeds() override { return _skip; }
uint16_t getFrequency() { return _frequencykHz; } uint16_t getFrequency() override { return _frequencykHz; }
uint8_t estimateCurrentAndLimitBri(); uint8_t estimateCurrentAndLimitBri();
uint16_t getLEDCurrent() { return _milliAmpsPerLed; } uint16_t getLEDCurrent() override { return _milliAmpsPerLed; }
uint16_t getUsedCurrent() { return _milliAmpsTotal; } uint16_t getUsedCurrent() override { return _milliAmpsTotal; }
uint16_t getMaxCurrent() { return _milliAmpsMax; } uint16_t getMaxCurrent() override { return _milliAmpsMax; }
void reinit(); void reinit();
void cleanup(); void cleanup();
@ -256,11 +255,11 @@ class BusPwm : public Bus {
BusPwm(BusConfig &bc); BusPwm(BusConfig &bc);
~BusPwm() { cleanup(); } ~BusPwm() { cleanup(); }
void setPixelColor(uint16_t pix, uint32_t c); void setPixelColor(uint16_t pix, uint32_t c) override;
uint32_t getPixelColor(uint16_t pix); //does no index check uint32_t getPixelColor(uint16_t pix) override; //does no index check
uint8_t getPins(uint8_t* pinArray); uint8_t getPins(uint8_t* pinArray) override;
uint16_t getFrequency() { return _frequency; } uint16_t getFrequency() override { return _frequency; }
void show(); void show() override;
void cleanup() { deallocatePins(); } void cleanup() { deallocatePins(); }
private: private:
@ -297,13 +296,13 @@ class BusNetwork : public Bus {
BusNetwork(BusConfig &bc); BusNetwork(BusConfig &bc);
~BusNetwork() { cleanup(); } ~BusNetwork() { cleanup(); }
bool hasRGB() { return true; } bool hasRGB() override { return true; }
bool hasWhite() { return _rgbw; } bool hasWhite() override { return _rgbw; }
bool canShow() { return !_broadcastLock; } // this should be a return value from UDP routine if it is still sending data out bool canShow() override { return !_broadcastLock; } // this should be a return value from UDP routine if it is still sending data out
void setPixelColor(uint16_t pix, uint32_t c); void setPixelColor(uint16_t pix, uint32_t c) override;
uint32_t getPixelColor(uint16_t pix); uint32_t getPixelColor(uint16_t pix) override;
uint8_t getPins(uint8_t* pinArray); uint8_t getPins(uint8_t* pinArray) override;
void show(); void show() override;
void cleanup(); void cleanup();
private: private: