unify execution of containers inside the list

This commit is contained in:
Nicu Hodos 2024-05-15 10:19:03 +02:00
parent ae525d7e15
commit 6a287007d7
2 changed files with 16 additions and 8 deletions

View File

@ -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) {

View File

@ -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);
}
}
};