3#if defined(USE_ZIGBEE) && defined(USE_NRF52)
8#include <zboss_api_addons.h>
12#define ESPHOME_ZB_DECLARE_SIMPLE_DESC(ep_name, in_clusters_count, out_clusters_count) \
13 typedef ZB_PACKED_PRE struct zb_af_simple_desc_##ep_name##_##in_clusters_count##_##out_clusters_count##_s { \
14 zb_uint8_t endpoint; \
15 zb_uint16_t app_profile_id; \
16 zb_uint16_t app_device_id; \
17 zb_bitfield_t app_device_version : 4; \
18 zb_bitfield_t reserved : 4; \
19 zb_uint8_t app_input_cluster_count; \
20 zb_uint8_t app_output_cluster_count; \
22 zb_uint16_t app_cluster_list[(in_clusters_count) + (out_clusters_count)]; \
23 } ZB_PACKED_STRUCT zb_af_simple_desc_##ep_name##_##in_clusters_count##_##out_clusters_count##_t
25#define ESPHOME_CAT7(a, b, c, d, e, f, g) a##b##c##d##e##f##g
27#define ESPHOME_ZB_AF_SIMPLE_DESC_TYPE(ep_name, in_num, out_num) \
28 ESPHOME_CAT7(zb_af_simple_desc_, ep_name, _, in_num, _, out_num, _t)
31#define ESPHOME_ZB_ZCL_DECLARE_SIMPLE_DESC(ep_name, ep_id, in_clust_num, out_clust_num, app_device_id, ...) \
32 ESPHOME_ZB_DECLARE_SIMPLE_DESC(ep_name, in_clust_num, out_clust_num); \
33 ESPHOME_ZB_AF_SIMPLE_DESC_TYPE(ep_name, in_clust_num, out_clust_num) \
34 simple_desc_##ep_name = {ep_id, ZB_AF_HA_PROFILE_ID, app_device_id, 0, 0, in_clust_num, out_clust_num, {__VA_ARGS__}}
37#define ESPHOME_ZB_HA_DECLARE_EP(ep_name, ep_id, cluster_list, in_cluster_num, out_cluster_num, report_attr_count, \
39 ESPHOME_ZB_ZCL_DECLARE_SIMPLE_DESC(ep_name, ep_id, in_cluster_num, out_cluster_num, app_device_id, __VA_ARGS__); \
40 ZBOSS_DEVICE_DECLARE_REPORTING_CTX(reporting_info##ep_name, report_attr_count); \
41 ZB_AF_DECLARE_ENDPOINT_DESC(ep_name, ep_id, ZB_AF_HA_PROFILE_ID, 0, NULL, \
42 ZB_ZCL_ARRAY_SIZE(cluster_list, zb_zcl_cluster_desc_t), cluster_list, \
43 (zb_af_simple_desc_1_1_t *) &simple_desc_##ep_name, report_attr_count, \
44 reporting_info##ep_name, 0, NULL)
65 void setup()
override;
67 void add_callback(zb_uint8_t endpoint, std::function<
void(zb_bufid_t bufid)> &&cb) {
69 this->
callbacks_[endpoint - 1] = std::move(cb);
81#ifdef USE_ZIGBEE_WIPE_ON_BOOT
84 std::array<std::function<void(zb_bufid_t bufid)>, ZIGBEE_ENDPOINTS_COUNT>
callbacks_{};
Trigger * get_join_trigger()
static void zcl_device_cb(zb_bufid_t bufid)
CallbackManager< void()> join_cb_
void add_join_callback(std::function< void()> &&cb)
void erase_flash_(int area)
std::array< std::function< void(zb_bufid_t bufid)>, ZIGBEE_ENDPOINTS_COUNT > callbacks_
void zboss_signal_handler_esphome(zb_bufid_t bufid)
void dump_config() override
void add_callback(zb_uint8_t endpoint, std::function< void(zb_bufid_t bufid)> &&cb)
ZigbeeComponent * parent_
void set_endpoint(zb_uint8_t endpoint)
void set_parent(ZigbeeComponent *parent)
zb_uchar_t description[ZB_ZCL_MAX_STRING_SIZE]
zb_uint16_t engineering_units
zb_uchar_t description[ZB_ZCL_MAX_STRING_SIZE]