46 lines
1.5 KiB
C++
46 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include "esphome/core/defines.h"
|
|
#ifdef USE_API
|
|
#include "esphome/core/component.h"
|
|
#include "esphome/core/component_iterator.h"
|
|
namespace esphome::api {
|
|
|
|
class APIConnection;
|
|
|
|
// Macro for generating ListEntitiesIterator handlers
|
|
// Calls schedule_message_ which dispatches to try_send_*_info
|
|
#define LIST_ENTITIES_HANDLER(entity_type, EntityClass, ResponseType) \
|
|
bool ListEntitiesIterator::on_##entity_type(EntityClass *entity) { /* NOLINT(bugprone-macro-parentheses) */ \
|
|
return this->client_->schedule_message_(entity, ResponseType::MESSAGE_TYPE, ResponseType::ESTIMATED_SIZE); \
|
|
}
|
|
|
|
class ListEntitiesIterator final : public ComponentIterator {
|
|
public:
|
|
ListEntitiesIterator(APIConnection *client);
|
|
|
|
// Entity overrides (generated from entity_types.h).
|
|
// All implementations live in list_entities.cpp via LIST_ENTITIES_HANDLER.
|
|
// NOLINTBEGIN(bugprone-macro-parentheses)
|
|
#define ENTITY_TYPE_(type, singular, plural, count, upper) bool on_##singular(type *entity) override;
|
|
#define ENTITY_CONTROLLER_TYPE_(type, singular, plural, count, upper, callback) \
|
|
ENTITY_TYPE_(type, singular, plural, count, upper)
|
|
#include "esphome/core/entity_types.h"
|
|
#undef ENTITY_TYPE_
|
|
#undef ENTITY_CONTROLLER_TYPE_
|
|
// NOLINTEND(bugprone-macro-parentheses)
|
|
#ifdef USE_API_USER_DEFINED_ACTIONS
|
|
bool on_service(UserServiceDescriptor *service) override;
|
|
#endif
|
|
#ifdef USE_CAMERA
|
|
bool on_camera(camera::Camera *entity) override;
|
|
#endif
|
|
bool on_end() override;
|
|
|
|
protected:
|
|
APIConnection *client_;
|
|
};
|
|
|
|
} // namespace esphome::api
|
|
#endif
|