I'm comparing some of the ZBOSS API between what's in the nRF5 SDK for Zigbee and what's in the nRF Connect SDK, and I'm curious about the differences in some cluster list declarations, such as ZB_HA_DECLARE_DIMMER_SWITCH_CLUSTER_LIST. The version in the nRF Connect SDK leaves out several cluster groups, including useful ones such as ZB_ZCL_CLUSTER_ID_ON_OFF., and sets their attribute count to zero and desc_list to NULL.
Why is that?
For reference, here is #define ZB_HA_DECLARE_DIMMER_SWITCH_CLUSTER_LIST from the nRF5 SDK for Zigbee and from the nRF Connect SDK.
nRF5 SDK for Zigbee:
#define ZB_HA_DECLARE_DIMMER_SWITCH_CLUSTER_LIST( \
cluster_list_name, \
basic_server_attr_list, \
identify_client_attr_list, \
identify_server_attr_list, \
scenes_client_attr_list, \
groups_client_attr_list, \
on_off_client_attr_list, \
level_control_client_attr_list) \
zb_zcl_cluster_desc_t cluster_list_name[] = \
{ \
ZB_ZCL_CLUSTER_DESC( \
ZB_ZCL_CLUSTER_ID_BASIC, \
ZB_ZCL_ARRAY_SIZE(basic_server_attr_list, zb_zcl_attr_t), \
(basic_server_attr_list), \
ZB_ZCL_CLUSTER_SERVER_ROLE, \
ZB_ZCL_MANUF_CODE_INVALID \
), \
ZB_ZCL_CLUSTER_DESC( \
ZB_ZCL_CLUSTER_ID_IDENTIFY, \
ZB_ZCL_ARRAY_SIZE(identify_server_attr_list, zb_zcl_attr_t), \
(identify_server_attr_list), \
ZB_ZCL_CLUSTER_SERVER_ROLE, \
ZB_ZCL_MANUF_CODE_INVALID \
), \
ZB_ZCL_CLUSTER_DESC( \
ZB_ZCL_CLUSTER_ID_IDENTIFY, \
ZB_ZCL_ARRAY_SIZE(identify_client_attr_list, zb_zcl_attr_t), \
(identify_client_attr_list), \
ZB_ZCL_CLUSTER_CLIENT_ROLE, \
ZB_ZCL_MANUF_CODE_INVALID \
), \
ZB_ZCL_CLUSTER_DESC( \
ZB_ZCL_CLUSTER_ID_SCENES, \
ZB_ZCL_ARRAY_SIZE(scenes_client_attr_list, zb_zcl_attr_t), \
(scenes_client_attr_list), \
ZB_ZCL_CLUSTER_CLIENT_ROLE, \
ZB_ZCL_MANUF_CODE_INVALID \
), \
ZB_ZCL_CLUSTER_DESC( \
ZB_ZCL_CLUSTER_ID_GROUPS, \
ZB_ZCL_ARRAY_SIZE(groups_client_attr_list, zb_zcl_attr_t), \
(groups_client_attr_list), \
ZB_ZCL_CLUSTER_CLIENT_ROLE, \
ZB_ZCL_MANUF_CODE_INVALID \
), \
ZB_ZCL_CLUSTER_DESC( \
ZB_ZCL_CLUSTER_ID_ON_OFF, \
ZB_ZCL_ARRAY_SIZE(on_off_client_attr_list, zb_zcl_attr_t), \
(on_off_client_attr_list), \
ZB_ZCL_CLUSTER_CLIENT_ROLE, \
ZB_ZCL_MANUF_CODE_INVALID \
), \
ZB_ZCL_CLUSTER_DESC( \
ZB_ZCL_CLUSTER_ID_LEVEL_CONTROL, \
ZB_ZCL_ARRAY_SIZE(level_control_client_attr_list, zb_zcl_attr_t), \
(level_control_client_attr_list), \
ZB_ZCL_CLUSTER_CLIENT_ROLE, \
ZB_ZCL_MANUF_CODE_INVALID \
) \
}
nRF Connect SDK:
#define ZB_HA_DECLARE_DIMMER_SWITCH_CLUSTER_LIST( \
cluster_list_name, \
basic_attr_list, \
identify_attr_list) \
zb_zcl_cluster_desc_t cluster_list_name[] = \
{ \
ZB_ZCL_CLUSTER_DESC( \
ZB_ZCL_CLUSTER_ID_IDENTIFY, \
ZB_ZCL_ARRAY_SIZE(identify_attr_list, zb_zcl_attr_t), \
(identify_attr_list), \
ZB_ZCL_CLUSTER_SERVER_ROLE, \
ZB_ZCL_MANUF_CODE_INVALID \
), \
ZB_ZCL_CLUSTER_DESC( \
ZB_ZCL_CLUSTER_ID_BASIC, \
ZB_ZCL_ARRAY_SIZE(basic_attr_list, zb_zcl_attr_t), \
(basic_attr_list), \
ZB_ZCL_CLUSTER_SERVER_ROLE, \
ZB_ZCL_MANUF_CODE_INVALID \
), \
ZB_ZCL_CLUSTER_DESC( \
ZB_ZCL_CLUSTER_ID_IDENTIFY, \
0, \
NULL, \
ZB_ZCL_CLUSTER_CLIENT_ROLE, \
ZB_ZCL_MANUF_CODE_INVALID \
), \
ZB_ZCL_CLUSTER_DESC( \
ZB_ZCL_CLUSTER_ID_SCENES, \
0, \
NULL, \
ZB_ZCL_CLUSTER_CLIENT_ROLE, \
ZB_ZCL_MANUF_CODE_INVALID \
), \
ZB_ZCL_CLUSTER_DESC( \
ZB_ZCL_CLUSTER_ID_GROUPS, \
0, \
NULL, \
ZB_ZCL_CLUSTER_CLIENT_ROLE, \
ZB_ZCL_MANUF_CODE_INVALID \
), \
ZB_ZCL_CLUSTER_DESC( \
ZB_ZCL_CLUSTER_ID_ON_OFF, \
0, \
NULL, \
ZB_ZCL_CLUSTER_CLIENT_ROLE, \
ZB_ZCL_MANUF_CODE_INVALID \
), \
ZB_ZCL_CLUSTER_DESC( \
ZB_ZCL_CLUSTER_ID_LEVEL_CONTROL, \
0, \
NULL, \
ZB_ZCL_CLUSTER_CLIENT_ROLE, \
ZB_ZCL_MANUF_CODE_INVALID \
) \
}

