extract StateConfig into a dedicated class

This commit is contained in:
Nicu Hodos 2024-05-02 21:24:41 +02:00
parent eace33902b
commit e67ce3b33c

View File

@ -75,9 +75,18 @@ namespace Ha {
};
struct Switch : Command {
static constexpr const char* type = "switch";
template <class T>
struct StateConfig {
char stateTopic[TOPIC_SIZE];
T* withStateTopic() {
sprintf(stateTopic, "homeassistant/%s/rc-gateway/%s/state", ((T*)this)->type, ((T*)this)->id);
return (T*)this;
}
};
struct Switch : Command, StateConfig<Switch> {
static constexpr const char* type = "switch";
const char* area;
virtual void onCommand(const char* msg){}
@ -105,11 +114,6 @@ namespace Ha {
if (stateTopic[0]) jsonDoc["state_topic"] = stateTopic;
}
Switch* withStateTopic() {
sprintf(stateTopic, "homeassistant/%s/rc-gateway/%s/state", type, id);
return this;
}
Switch* withArea(const char* area) {
this->area = area;
return this;