mirror of
https://github.com/esphome/esphome.git
synced 2026-09-27 15:00:24 +00:00
Introduce entity_types.inc X-macro and entity_includes.h shared header to eliminate ~1000 lines of repetitive #ifdef/entity-type blocks across core files. entity_types.inc defines each entity type once with two macros: - ENTITY_TYPE_ for non-controller entities (button, infrared) - ENTITY_CONTROLLER_TYPE_ for entities with controller callbacks Each consumer includes the file with appropriate macro definitions. Sites wanting all entities delegate ENTITY_CONTROLLER_TYPE_ to ENTITY_TYPE_. Sites wanting only controller entities define ENTITY_TYPE_ as empty. entity_includes.h consolidates the conditional entity header includes shared by application.h, controller.h, and controller_registry.h. Also makes ComponentIterator::on_media_player pure virtual for consistency (trivial override added to web_server::ListEntitiesIterator).
80 lines
2.0 KiB
C
80 lines
2.0 KiB
C
#pragma once
|
|
|
|
// Shared entity component includes.
|
|
// Conditionally includes headers for all entity types based on USE_* defines.
|
|
|
|
#include "esphome/core/defines.h"
|
|
|
|
#ifdef USE_BINARY_SENSOR
|
|
#include "esphome/components/binary_sensor/binary_sensor.h"
|
|
#endif
|
|
#ifdef USE_COVER
|
|
#include "esphome/components/cover/cover.h"
|
|
#endif
|
|
#ifdef USE_FAN
|
|
#include "esphome/components/fan/fan.h"
|
|
#endif
|
|
#ifdef USE_LIGHT
|
|
#include "esphome/components/light/light_state.h"
|
|
#endif
|
|
#ifdef USE_SENSOR
|
|
#include "esphome/components/sensor/sensor.h"
|
|
#endif
|
|
#ifdef USE_SWITCH
|
|
#include "esphome/components/switch/switch.h"
|
|
#endif
|
|
#ifdef USE_BUTTON
|
|
#include "esphome/components/button/button.h"
|
|
#endif
|
|
#ifdef USE_TEXT_SENSOR
|
|
#include "esphome/components/text_sensor/text_sensor.h"
|
|
#endif
|
|
#ifdef USE_CLIMATE
|
|
#include "esphome/components/climate/climate.h"
|
|
#endif
|
|
#ifdef USE_NUMBER
|
|
#include "esphome/components/number/number.h"
|
|
#endif
|
|
#ifdef USE_DATETIME_DATE
|
|
#include "esphome/components/datetime/date_entity.h"
|
|
#endif
|
|
#ifdef USE_DATETIME_TIME
|
|
#include "esphome/components/datetime/time_entity.h"
|
|
#endif
|
|
#ifdef USE_DATETIME_DATETIME
|
|
#include "esphome/components/datetime/datetime_entity.h"
|
|
#endif
|
|
#ifdef USE_TEXT
|
|
#include "esphome/components/text/text.h"
|
|
#endif
|
|
#ifdef USE_SELECT
|
|
#include "esphome/components/select/select.h"
|
|
#endif
|
|
#ifdef USE_LOCK
|
|
#include "esphome/components/lock/lock.h"
|
|
#endif
|
|
#ifdef USE_VALVE
|
|
#include "esphome/components/valve/valve.h"
|
|
#endif
|
|
#ifdef USE_MEDIA_PLAYER
|
|
#include "esphome/components/media_player/media_player.h"
|
|
#endif
|
|
#ifdef USE_ALARM_CONTROL_PANEL
|
|
#include "esphome/components/alarm_control_panel/alarm_control_panel.h"
|
|
#endif
|
|
#ifdef USE_WATER_HEATER
|
|
#include "esphome/components/water_heater/water_heater.h"
|
|
#endif
|
|
#ifdef USE_INFRARED
|
|
#include "esphome/components/infrared/infrared.h"
|
|
#endif
|
|
#ifdef USE_SERIAL_PROXY
|
|
#include "esphome/components/serial_proxy/serial_proxy.h"
|
|
#endif
|
|
#ifdef USE_EVENT
|
|
#include "esphome/components/event/event.h"
|
|
#endif
|
|
#ifdef USE_UPDATE
|
|
#include "esphome/components/update/update_entity.h"
|
|
#endif
|