| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #pragma once
- #include "esphome/core/helpers.h"
- #include "esphome/core/component.h"
- #include "esphome/core/controller.h"
- #ifdef USE_ESP32_CAMERA
- #include "esphome/components/esp32_camera/esp32_camera.h"
- #endif
- namespace esphome {
- namespace api {
- class APIServer;
- class UserServiceDescriptor;
- class ComponentIterator {
- public:
- ComponentIterator(APIServer *server);
- void begin();
- void advance();
- virtual bool on_begin();
- #ifdef USE_BINARY_SENSOR
- virtual bool on_binary_sensor(binary_sensor::BinarySensor *binary_sensor) = 0;
- #endif
- #ifdef USE_COVER
- virtual bool on_cover(cover::Cover *cover) = 0;
- #endif
- #ifdef USE_FAN
- virtual bool on_fan(fan::FanState *fan) = 0;
- #endif
- #ifdef USE_LIGHT
- virtual bool on_light(light::LightState *light) = 0;
- #endif
- #ifdef USE_SENSOR
- virtual bool on_sensor(sensor::Sensor *sensor) = 0;
- #endif
- #ifdef USE_SWITCH
- virtual bool on_switch(switch_::Switch *a_switch) = 0;
- #endif
- #ifdef USE_TEXT_SENSOR
- virtual bool on_text_sensor(text_sensor::TextSensor *text_sensor) = 0;
- #endif
- virtual bool on_service(UserServiceDescriptor *service);
- #ifdef USE_ESP32_CAMERA
- virtual bool on_camera(esp32_camera::ESP32Camera *camera);
- #endif
- #ifdef USE_CLIMATE
- virtual bool on_climate(climate::Climate *climate) = 0;
- #endif
- virtual bool on_end();
- protected:
- enum class IteratorState {
- NONE = 0,
- BEGIN,
- #ifdef USE_BINARY_SENSOR
- BINARY_SENSOR,
- #endif
- #ifdef USE_COVER
- COVER,
- #endif
- #ifdef USE_FAN
- FAN,
- #endif
- #ifdef USE_LIGHT
- LIGHT,
- #endif
- #ifdef USE_SENSOR
- SENSOR,
- #endif
- #ifdef USE_SWITCH
- SWITCH,
- #endif
- #ifdef USE_TEXT_SENSOR
- TEXT_SENSOR,
- #endif
- SERVICE,
- #ifdef USE_ESP32_CAMERA
- CAMERA,
- #endif
- #ifdef USE_CLIMATE
- CLIMATE,
- #endif
- MAX,
- } state_{IteratorState::NONE};
- size_t at_{0};
- APIServer *server_;
- };
- } // namespace api
- } // namespace esphome
|