unify execution of containers inside the list
This commit is contained in:
parent
3a3a8f5801
commit
6cc142fa1d
@ -45,12 +45,12 @@ namespace Mqtt {
|
||||
(new PollinSwitch{"Train", "11111", 4, "Playroom"})->withStateTopic()
|
||||
};
|
||||
|
||||
Ha::Sensor* sensors[] = {
|
||||
Sensor* sensors[] = {
|
||||
OilTankRoomSensorBuilder::build("4"),
|
||||
OilSensorBuilder::build("7")
|
||||
};
|
||||
|
||||
void publishComponentConfig(Ha::Component& component) {
|
||||
void publishComponentConfig(Component& component) {
|
||||
StaticJsonDocument<JSON_SIZE> jsonDoc;
|
||||
component.buildConfig(jsonDoc);
|
||||
|
||||
@ -60,18 +60,20 @@ namespace Mqtt {
|
||||
publish(component.configTopic, message);
|
||||
}
|
||||
|
||||
void publishCleanupComponentConfig(Component& component) {
|
||||
publish(component.configTopic, "");
|
||||
}
|
||||
|
||||
void publishInit() {
|
||||
Ha::publisher = publish;
|
||||
for (List<Ha::Component>::Container* c = Ha::Component::components.first; c; c = c->next) {
|
||||
publishComponentConfig(*c->t);
|
||||
}
|
||||
List<Component>::exec(Component::components, [](Component* c)
|
||||
{ publishComponentConfig(*c); });
|
||||
ts.deleteTask(tPublishInit);
|
||||
}
|
||||
|
||||
void publishCleanupConfig() {
|
||||
for (List<Ha::Component>::Container* c = Ha::Component::components.first; c; c = c->next) {
|
||||
publish(c->t->configTopic, "");
|
||||
}
|
||||
List<Component>::exec(Component::components, [](Component* c)
|
||||
{ publishCleanupComponentConfig(*c); });
|
||||
}
|
||||
|
||||
void onMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) {
|
||||
|
||||
@ -17,4 +17,10 @@ struct List {
|
||||
last = c;
|
||||
}
|
||||
|
||||
static void exec(List list, void(*f)(T*)) {
|
||||
for (List::Container *c = list.first; c; c = c->next) {
|
||||
f(c->t);
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user