3#ifdef USE_CONTROLLER_REGISTRY
13void ControllerRegistry::notify(
void *obj, DispatchFunc dispatch) {
22#define CONTROLLER_REGISTRY_NOTIFY(entity_type, entity_name) \
23 void ControllerRegistry::notify_##entity_name##_update(entity_type *obj) { \
24 notify(obj, [](Controller *c, void *o) { c->on_##entity_name##_update(static_cast<entity_type *>(o)); }); \
28#define CONTROLLER_REGISTRY_NOTIFY_NO_UPDATE_SUFFIX(entity_type, entity_name) \
29 void ControllerRegistry::notify_##entity_name(entity_type *obj) { \
30 notify(obj, [](Controller *c, void *o) { c->on_##entity_name(static_cast<entity_type *>(o)); }); \
34#ifdef USE_BINARY_SENSOR
35CONTROLLER_REGISTRY_NOTIFY(binary_sensor::BinarySensor, binary_sensor)
39CONTROLLER_REGISTRY_NOTIFY(fan::Fan, fan)
43CONTROLLER_REGISTRY_NOTIFY(light::LightState, light)
47CONTROLLER_REGISTRY_NOTIFY(sensor::Sensor, sensor)
51CONTROLLER_REGISTRY_NOTIFY(switch_::Switch,
switch)
55CONTROLLER_REGISTRY_NOTIFY(cover::Cover, cover)
59CONTROLLER_REGISTRY_NOTIFY(text_sensor::TextSensor, text_sensor)
63CONTROLLER_REGISTRY_NOTIFY(climate::Climate, climate)
67CONTROLLER_REGISTRY_NOTIFY(number::Number, number)
70#ifdef USE_DATETIME_DATE
71CONTROLLER_REGISTRY_NOTIFY(datetime::DateEntity, date)
74#ifdef USE_DATETIME_TIME
75CONTROLLER_REGISTRY_NOTIFY(datetime::TimeEntity, time)
78#ifdef USE_DATETIME_DATETIME
79CONTROLLER_REGISTRY_NOTIFY(datetime::DateTimeEntity, datetime)
83CONTROLLER_REGISTRY_NOTIFY(text::Text, text)
87CONTROLLER_REGISTRY_NOTIFY(select::Select, select)
91CONTROLLER_REGISTRY_NOTIFY(lock::Lock, lock)
95CONTROLLER_REGISTRY_NOTIFY(valve::Valve, valve)
98#ifdef USE_MEDIA_PLAYER
99CONTROLLER_REGISTRY_NOTIFY(media_player::MediaPlayer, media_player)
102#ifdef USE_ALARM_CONTROL_PANEL
103CONTROLLER_REGISTRY_NOTIFY(alarm_control_panel::AlarmControlPanel, alarm_control_panel)
106#ifdef USE_WATER_HEATER
107CONTROLLER_REGISTRY_NOTIFY(water_heater::WaterHeater, water_heater)
111CONTROLLER_REGISTRY_NOTIFY_NO_UPDATE_SUFFIX(event::Event, event)
115CONTROLLER_REGISTRY_NOTIFY_NO_UPDATE_SUFFIX(update::UpdateEntity, update)
118#undef CONTROLLER_REGISTRY_NOTIFY
119#undef CONTROLLER_REGISTRY_NOTIFY_NO_UPDATE_SUFFIX
static void DispatchFunc dispatch
static void register_controller(Controller *controller)
Register a controller to receive entity state updates.
static StaticVector< Controller *, CONTROLLER_REGISTRY_MAX > controllers
Providing packet encoding functions for exchanging data with a remote host.