15static const uint16_t START_CODE = 0xEFAA;
16static constexpr size_t HLK_FM22X_NAME_SIZE = 32;
18static constexpr size_t HLK_FM22X_MAX_RESPONSE_SIZE = 36;
76 void setup()
override;
127 std::array<uint8_t, HLK_FM22X_MAX_RESPONSE_SIZE>
recv_buf_;
149 void
play(const Ts &...
x)
override {
150 auto name = this->name_.value(
x...);
152 this->parent_->enroll_face(name,
direction);
160 void play(
const Ts &...
x)
override {
161 auto face_id = this->face_id_.value(
x...);
162 this->
parent_->delete_face(face_id);
168 void play(
const Ts &...
x)
override { this->
parent_->delete_all_faces(); }
virtual void play(const Ts &...x)=0
Helper class to easily give an object a parent of type T.
HlkFm22xComponent * parent_
This class simplifies creating components that periodically check a state.
Base class for all binary_sensor-type classes.
TEMPLATABLE_VALUE(int16_t, face_id) void play(const Ts &...x) override
void play(const Ts &...x) override
TEMPLATABLE_VALUE(std::string, name) TEMPLATABLE_VALUE(uint8_t
direction void play(const Ts &...x) override
void delete_face(int16_t face_id)
sensor::Sensor * last_face_id_sensor_
void handle_reply_(const uint8_t *data, size_t length)
text_sensor::TextSensor * last_face_name_text_sensor_
void add_on_enrollment_failed_callback(F &&callback)
void add_on_face_scan_matched_callback(F &&callback)
CallbackManager< void(int16_t, int16_t, int16_t, int16_t, int16_t, int16_t, int16_t, int16_t)> face_info_callback_
void enroll_face(const std::string &name, HlkFm22xFaceDirection direction)
void send_command_(HlkFm22xCommand command, const uint8_t *data=nullptr, size_t size=0)
CallbackManager< void(uint8_t)> face_scan_invalid_callback_
std::array< uint8_t, HLK_FM22X_MAX_RESPONSE_SIZE > recv_buf_
void set_face_count_sensor(sensor::Sensor *face_count_sensor)
sensor::Sensor * face_count_sensor_
CallbackManager< void()> face_scan_unmatched_callback_
void set_enrolling_binary_sensor(binary_sensor::BinarySensor *enrolling_binary_sensor)
void set_version_text_sensor(text_sensor::TextSensor *version_text_sensor)
void set_enrolling_(bool enrolling)
void add_on_face_scan_unmatched_callback(F &&callback)
CallbackManager< void(int16_t, uint8_t)> enrollment_done_callback_
void set_last_face_id_sensor(sensor::Sensor *last_face_id_sensor)
void add_on_face_info_callback(F &&callback)
CallbackManager< void(uint8_t)> enrollment_failed_callback_
void add_on_face_scan_invalid_callback(F &&callback)
sensor::Sensor * status_sensor_
text_sensor::TextSensor * version_text_sensor_
void handle_note_(const uint8_t *data, size_t length)
void set_last_face_name_text_sensor(text_sensor::TextSensor *last_face_name_text_sensor)
void add_on_enrollment_done_callback(F &&callback)
CallbackManager< void(int16_t, std::string)> face_scan_matched_callback_
binary_sensor::BinarySensor * enrolling_binary_sensor_
HlkFm22xCommand active_command_
void set_status_sensor(sensor::Sensor *status_sensor)
void dump_config() override
void play(const Ts &...x) override
void play(const Ts &...x) override
Base-class for all sensors.
@ FACE_DIRECTION_UNDEFINED