-
Notifications
You must be signed in to change notification settings - Fork 0
/
StaticMode.cpp
73 lines (54 loc) · 2.71 KB
/
StaticMode.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include "StaticMode.h"
StaticMode::StaticMode(ControllerService* controllerService) : AbstractMode(controllerService) {
this->modeTitle = "Static Mode";
this->modeDescription = "This mode sets the LEDs to a static color configured via MQTT.";
this->modeInternalName = "StaticMode";
this->modeAuthor = "Friedjof Noweck";
this->modeContact = "[email protected]";
this->modeVersion = "0.1.0";
this->modeLicense = "MIT";
}
void StaticMode::customSetup() {
// register mqtt topics
this->pushPubHexTopicFun = this->controllerService->subscribeModeTopic(
this->modeInternalName, "hex", this->hexColor.c_str(), payload_e::COLOR, std::function<void(String)>(std::bind(&StaticMode::hexCallback, this, std::placeholders::_1)));
this->pushPubBrightnessTopicFun = this->controllerService->subscribeModeTopic(
this->modeInternalName, "brightness", this->brightness, boundaries_t{0, 255}, payload_e::BYTE, std::function<void(String)>(std::bind(&StaticMode::brightnessCallback, this, std::placeholders::_1)));
}
void StaticMode::customLoop(unsigned long long steps) {
if (this->isFirstRun()) {
this->controllerService->setBrightness(this->brightness);
this->controllerService->setHexColor(this->hexColor);
this->controllerService->confirmLedConfig();
}
if (this->isNewHexColor()) {
this->controllerService->setHexColor(this->newHexColor);
this->hexColor = this->newHexColor;
this->controllerService->logMessage(LOG_LEVEL_DEBUG, LOG_MODE_ALL, "StaticMode set hex color: " + this->hexColor);
this->controllerService->confirmLedConfig();
}
if (this->isNewBrightness()) {
this->controllerService->setBrightness(this->newBrightness);
this->brightness = this->newBrightness;
this->controllerService->logMessage(LOG_LEVEL_DEBUG, LOG_MODE_ALL, "StaticMode set brightness: " + String(this->brightness));
this->controllerService->confirmLedConfig();
}
}
void StaticMode::hexCallback(String payload) {
this->controllerService->logMessage(LOG_LEVEL_DEBUG, LOG_MODE_ALL, "StaticMode hex callback: " + payload);
this->newHexColor = payload;
// publish the hex to the pub topic
this->pushPubHexTopicFun(payload);
}
void StaticMode::brightnessCallback(String payload) {
this->controllerService->logMessage(LOG_LEVEL_DEBUG, LOG_MODE_ALL, "StaticMode brightness callback: " + payload);
this->newBrightness = payload.toInt();
// publish the brightness to the pub topic
this->pushPubBrightnessTopicFun(payload);
}
bool StaticMode::isNewHexColor() {
return this->hexColor != this->newHexColor;
}
bool StaticMode::isNewBrightness() {
return this->brightness != this->newBrightness;
}