Developing with ZBOSS for Zigbee
ZCL Control4 Network cluster

Data Structures

struct  zb_zcl_control4_zap_info_notify_s
 

Control4 Network cluster attributes

enum  zb_zcl_control4_networking_attr_e {
  ZB_ZCL_ATTR_CONTROL4_NETWORKING_DEVICE_TYPE_ID = 0x0000, ZB_ZCL_ATTR_CONTROL4_NETWORKING_ANNOUNCE_WINDOW_ID = 0x0001, ZB_ZCL_ATTR_CONTROL4_NETWORKING_MTORR_PERIOD_ID = 0x0002, ZB_ZCL_ATTR_CONTROL4_NETWORKING_FIRMWARE_VERSION_ID = 0x0004,
  ZB_ZCL_ATTR_CONTROL4_NETWORKING_REFLASH_VERSION_ID = 0x0005, ZB_ZCL_ATTR_CONTROL4_NETWORKING_BOOT_COUNT_ID = 0x0006, ZB_ZCL_ATTR_CONTROL4_NETWORKING_PRODUCT_STRING_ID = 0x0007, ZB_ZCL_ATTR_CONTROL4_NETWORKING_ACCESS_POINT_NODE_ID_ID = 0x0008,
  ZB_ZCL_ATTR_CONTROL4_NETWORKING_ACCESS_POINT_LONG_ID_ID = 0x0009, ZB_ZCL_ATTR_CONTROL4_NETWORKING_ACCESS_POINT_COST_ID = 0x000a, ZB_ZCL_ATTR_CONTROL4_NETWORKING_MESH_CHANNEL_ID = 0x000c, ZB_ZCL_ATTR_CONTROL4_NETWORKING_AVG_RSSI_ID = 0x0013,
  ZB_ZCL_ATTR_CONTROL4_NETWORKING_AVG_LQI_ID = 0x0014, ZB_ZCL_ATTR_CONTROL4_NETWORKING_BATTERY_LEVEL_ID = 0x0015, ZB_ZCL_ATTR_CONTROL4_NETWORKING_RADIO_4_BARS_ID = 0x0016
}
 
enum  zb_zcl_control4_networking_device_type_e { ZB_ZCL_CONTROL4_NETWORKING_DEVICE_TYPE_END_DEVICE = 0x03, ZB_ZCL_CONTROL4_NETWORKING_DEVICE_TYPE_SLEEPY_END_DEVICE = 0x04 }
 
#define ZB_ZCL_CONTROL4_NETWORKING_REFLASH_VERSION_VENDOR_SPECIFIC   0xff
 
#define ZB_ZCL_CONTROL4_NETWORKING_BOOT_COUNT_DEF_VALUE   0
 
#define ZB_ZCL_CONTROL4_NETWORKING_ANNOUNCE_WINDOW_MIN_VALUE   ((zb_uint16_t)0x000f)
 
#define ZB_ZCL_CONTROL4_NETWORKING_ANNOUNCE_WINDOW_DEF_VALUE   ((zb_uint16_t)0x012c)
 
#define ZB_ZCL_CONTROL4_NETWORKING_MTORR_PERIOD_MIN_VALUE   ((zb_uint16_t)0x000f)
 
#define ZB_ZCL_CONTROL4_NETWORKING_MTORR_PERIOD_DEF_VALUE   ((zb_uint16_t)0x012c)
 
#define ZB_ZCL_CONTROL4_NETWORKING_ACCESS_POINT_NODE_ID_DEF_VALUE   ((zb_uint16_t)0xffff)
 
#define ZB_ZCL_CONTROL4_NETWORKING_ACCESS_POINT_LONG_ID_DEF_VALUE   {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
 
#define ZB_ZCL_CONTROL4_NETWORKING_ACCESS_POINT_COST_DEF_VALUE   0xff
 
#define ZB_ZCL_CONTROL4_NETWORKING_MESH_CHANNEL_MIN_VALUE   0x0b
 
#define ZB_ZCL_CONTROL4_NETWORKING_MESH_CHANNEL_MAX_VALUE   0x19
 
#define ZB_ZCL_CONTROL4_NETWORKING_AVG_RSSI_MIN_VALUE   -128
 
#define ZB_ZCL_CONTROL4_NETWORKING_AVG_RSSI_MAX_VALUE   0
 
#define ZB_ZCL_CONTROL4_NETWORKING_BATTERY_LEVEL_MIN_VALUE   0
 
#define ZB_ZCL_CONTROL4_NETWORKING_BATTERY_LEVEL_MAX_VALUE   100
 
#define ZB_ZCL_CONTROL4_NETWORKING_RADIO_4_BARS_MAX_VALUE   4
 
#define ZB_ZCL_CONTROL4_NETWORK_SEARCHING_ZAP_ATTEMPTS   2
 
#define ZB_ZCL_DECLARE_CONTROL4_NETWORKING_ATTRIB_LIST_SRV(attr_list, device_type, firmware_version, reflash_version, boot_count, product_string, access_point_node_ID, access_point_long_ID, access_point_cost, mesh_channel)
 Declare attribute list for C4 Network cluster. More...
 
#define ZB_ZCL_DECLARE_CONTROL4_NETWORKING_ATTRIB_LIST_SRV_EXT(attr_list, device_type, firmware_version, announce_window, MTORR_period, reflash_version, boot_count, product_string, access_point_node_ID, access_point_long_ID, access_point_cost, mesh_channel, avg_RSSI, avg_LQI, battery_level, radio_4_bars)
 Declare extended attribute list for C4 Network cluster. More...
 

Control4 Network cluster commands

enum  zb_zcl_control4_networking_cmd_e { ZB_ZCL_CMD_CONTROL4_NETWORKING_IMMEDIATE_ANNOUNCE_ID = 0x00 }
 
enum  zb_zcl_control4_network_state_e { ZB_ZCL_CONTROL4_NETWORK_STATE_IDLE, ZB_ZCL_CONTROL4_NETWORK_STATE_SEARCHING_ZAP, ZB_ZCL_CONTROL4_NETWORK_STATE_RUNNING, ZB_ZCL_CONTROL4_NETWORK_STATE_STOPPED }
 
enum  zb_zcl_control4_zap_discover_event_e { ZB_ZCL_CONTROL4_NETWORK_ZAP_UPDATED, ZB_ZCL_CONTROL4_NETWORK_ZAP_DISCOVER_FAILED }
 
typedef enum zb_zcl_control4_network_state_e zb_zcl_control4_network_state_t
 
typedef enum zb_zcl_control4_zap_discover_event_e zb_zcl_control4_zap_discover_event_t
 
typedef struct zb_zcl_control4_zap_info_notify_s zb_zcl_control4_zap_info_notify_t
 
zb_ret_t zb_zcl_control4_network_cluster_start (void)
 
void zb_zcl_control4_network_cluster_stop (void)
 
zb_zcl_control4_network_state_t zb_zcl_control4_network_cluster_get_state (void)
 
void zb_zcl_control4_network_cluster_read_attr_resp_handler (zb_bufid_t param)
 
#define ZB_ZCL_CLUSTER_ID_CONTROL4_NETWORKING_CLIENT_ROLE_GENERATED_CMD_LIST   ZB_ZCL_CMD_CONTROL4_NETWORKING_IMMEDIATE_ANNOUNCE_ID \
 
#define ZB_ZCL_CLUSTER_ID_CONTROL4_NETWORKING_SERVER_ROLE_RECEIVED_CMD_LIST   ZB_ZCL_CLUSTER_ID_CONTROL4_NETWORKING_CLIENT_ROLE_GENERATED_CMD_LIST
 
#define ZB_CONTROL4_NETWORK_ENDPOINT   0xc4
 
#define ZB_ZCL_CONTROL4_NETWORK_DECLARE_CLUSTER_LIST( cluster_list_name, c4_network_attr_list)
 
#define ZB_ZCL_CONTROL4_NETWORK_DECLARE_SIMPLE_DESC(ep_name)
 Declare simple descriptor for C4 Network Cluster endpoint. More...
 
#define ZB_ZCL_CONTROL4_NETWORK_DECLARE_EP(ep_name, cluster_list)
 Declare endpoint for C4 Network Cluster. More...
 

Detailed Description

Warning
Using this cluster makes an application not conforming to the Zigbee PRO specification

This cluster provides an application level interface between Zigbee devices and a Control4 Controller.

This is implemented using Control4 specific profile ZB_AF_CONTROL4_PROFILE_ID.

Control4 Network cluster also uses Many-To-One routing requests.

Macro Definition Documentation

◆ ZB_CONTROL4_NETWORK_ENDPOINT

#define ZB_CONTROL4_NETWORK_ENDPOINT   0xc4

Control4 Network Cluster Endpoint.

Attention
This endpoint number is reserved for internal usage in the stack (for Control4 feature).

◆ ZB_ZCL_CONTROL4_NETWORK_DECLARE_CLUSTER_LIST

#define ZB_ZCL_CONTROL4_NETWORK_DECLARE_CLUSTER_LIST (   cluster_list_name,
  c4_network_attr_list 
)
Value:
zb_zcl_cluster_desc_t cluster_list_name[] = \
{ \
ZB_ZCL_CLUSTER_DESC( \
ZB_ZCL_CLUSTER_ID_CONTROL4_NETWORKING, \
ZB_ZCL_ARRAY_SIZE(c4_network_attr_list, zb_zcl_attr_t), \
(c4_network_attr_list), \
), \
ZB_ZCL_CLUSTER_DESC( \
ZB_ZCL_CLUSTER_ID_CONTROL4_NETWORKING, \
0, \
NULL, \
) \
}

◆ ZB_ZCL_CONTROL4_NETWORK_DECLARE_EP

#define ZB_ZCL_CONTROL4_NETWORK_DECLARE_EP (   ep_name,
  cluster_list 
)
Value:
ZB_AF_DECLARE_ENDPOINT_DESC(ep_name, \
ZB_CONTROL4_NETWORK_ENDPOINT, ZB_AF_CONTROL4_PROFILE_ID, \
0, \
NULL, \
ZB_ZCL_ARRAY_SIZE(cluster_list, zb_zcl_cluster_desc_t), \
cluster_list, \
(zb_af_simple_desc_1_1_t*)&simple_desc_##ep_name, \
0, NULL, 0, NULL)

Declare endpoint for C4 Network Cluster.

Parameters
ep_name- endpoint variable name
cluster_list- endpoint cluster list

◆ ZB_ZCL_CONTROL4_NETWORK_DECLARE_SIMPLE_DESC

#define ZB_ZCL_CONTROL4_NETWORK_DECLARE_SIMPLE_DESC (   ep_name)
Value:
/* ZB_DECLARE_SIMPLE_DESC(1, 1); it is already defined */ \
ZB_AF_SIMPLE_DESC_TYPE(1, 1) simple_desc_##ep_name = \
{ \
ZB_CONTROL4_NETWORK_ENDPOINT, \
ZB_AF_CONTROL4_PROFILE_ID, \
0, 1, 0, 1, 1, \
{ \
ZB_ZCL_CLUSTER_ID_CONTROL4_NETWORKING, \
ZB_ZCL_CLUSTER_ID_CONTROL4_NETWORKING \
} \
}

Declare simple descriptor for C4 Network Cluster endpoint.

Parameters
ep_name- endpoint variable name

◆ ZB_ZCL_DECLARE_CONTROL4_NETWORKING_ATTRIB_LIST_SRV

#define ZB_ZCL_DECLARE_CONTROL4_NETWORKING_ATTRIB_LIST_SRV (   attr_list,
  device_type,
  firmware_version,
  reflash_version,
  boot_count,
  product_string,
  access_point_node_ID,
  access_point_long_ID,
  access_point_cost,
  mesh_channel 
)
Value:
ZB_ZCL_START_DECLARE_ATTRIB_LIST(attr_list) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_DEVICE_TYPE_ID, (device_type)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_FIRMWARE_VERSION_ID, (firmware_version)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_REFLASH_VERSION_ID, (reflash_version)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_BOOT_COUNT_ID, (boot_count)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_PRODUCT_STRING_ID, (product_string)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_ACCESS_POINT_NODE_ID_ID, (access_point_node_ID)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_ACCESS_POINT_LONG_ID_ID, (access_point_long_ID)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_ACCESS_POINT_COST_ID, (access_point_cost)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_MESH_CHANNEL_ID, (mesh_channel)) \
ZB_ZCL_FINISH_DECLARE_ATTRIB_LIST

Declare attribute list for C4 Network cluster.

Parameters
attr_list- attribute list name
device_type- pointer to variable to store Device Type attribute value
firmware_version- pointer to variable to store Firmware Version attribute value
reflash_version- pointer to variable to store Reflash Version attribute value
boot_count- pointer to variable to store Boot Count attribute value
product_string- pointer to variable to store Product String attribute value
access_point_node_ID- pointer to variable to store Access Point Node ID attribute value
access_point_long_ID- pointer to variable to store Access Point Long ID attribute value
access_point_cost- pointer to variable to store Access Point Cost ID attribute value
mesh_channel- pointer to variable to store Mesh Channel attribute value

◆ ZB_ZCL_DECLARE_CONTROL4_NETWORKING_ATTRIB_LIST_SRV_EXT

#define ZB_ZCL_DECLARE_CONTROL4_NETWORKING_ATTRIB_LIST_SRV_EXT (   attr_list,
  device_type,
  firmware_version,
  announce_window,
  MTORR_period,
  reflash_version,
  boot_count,
  product_string,
  access_point_node_ID,
  access_point_long_ID,
  access_point_cost,
  mesh_channel,
  avg_RSSI,
  avg_LQI,
  battery_level,
  radio_4_bars 
)
Value:
ZB_ZCL_START_DECLARE_ATTRIB_LIST(attr_list) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_DEVICE_TYPE_ID, (device_type)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_ANNOUNCE_WINDOW_ID, (announce_window)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_MTORR_PERIOD_ID, (MTORR_period)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_FIRMWARE_VERSION_ID, (firmware_version)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_REFLASH_VERSION_ID, (reflash_version)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_BOOT_COUNT_ID, (boot_count)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_PRODUCT_STRING_ID, (product_string)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_ACCESS_POINT_NODE_ID_ID, (access_point_node_ID)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_ACCESS_POINT_LONG_ID_ID, (access_point_long_ID)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_ACCESS_POINT_COST_ID, (access_point_cost)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_MESH_CHANNEL_ID, (mesh_channel)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_AVG_RSSI_ID, (avg_RSSI)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_AVG_LQI_ID, (avg_LQI)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_BATTERY_LEVEL_ID, (battery_level)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_CONTROL4_NETWORKING_RADIO_4_BARS_ID, (radio_4_bars)) \
ZB_ZCL_FINISH_DECLARE_ATTRIB_LIST

Declare extended attribute list for C4 Network cluster.

Parameters
attr_list- attribute list name
device_type- pointer to variable to store Device Type attribute value
firmware_version- pointer to variable to store Firmware Version attribute value
announce_window- pointer to variable to store Announce Window attribute value
MTORR_period- pointer to variable to store MTORR Period attribute value
reflash_version- pointer to variable to store Reflash Version attribute value
boot_count- pointer to variable to store Boot Count attribute value
product_string- pointer to variable to store Product String attribute value
access_point_node_ID- pointer to variable to store Access Point Node ID attribute value
access_point_long_ID- pointer to variable to store Access Point Long ID attribute value
access_point_cost- pointer to variable to store Access Point Cost ID attribute value
mesh_channel- pointer to variable to store Mesh Channel attribute value
avg_RSSI- pointer to variable to store Avg RSSI attribute value
avg_LQI- pointer to variable to store Avg LQI attribute value
battery_level- pointer to variable to store Battery Level attribute value
radio_4_bars- pointer to variable to store Radio 4-Bar attribute value

Typedef Documentation

◆ zb_zcl_control4_network_state_t

Control4 Network Cluster states

◆ zb_zcl_control4_zap_discover_event_t

Control4 Zigbee Access Point (ZAP) discovery events

◆ zb_zcl_control4_zap_info_notify_t

Control4 ZAP discover user app notification payload

Enumeration Type Documentation

◆ zb_zcl_control4_network_state_e

Control4 Network Cluster states

◆ zb_zcl_control4_networking_cmd_e

Enumerator
ZB_ZCL_CMD_CONTROL4_NETWORKING_IMMEDIATE_ANNOUNCE_ID 

"Immediate announce command" command.

◆ zb_zcl_control4_networking_device_type_e

Enumerator
ZB_ZCL_CONTROL4_NETWORKING_DEVICE_TYPE_END_DEVICE 

"Non-sleepy end device" value

ZB_ZCL_CONTROL4_NETWORKING_DEVICE_TYPE_SLEEPY_END_DEVICE 

"Sleepy end device" value

◆ zb_zcl_control4_zap_discover_event_e

Control4 Zigbee Access Point (ZAP) discovery events

Enumerator
ZB_ZCL_CONTROL4_NETWORK_ZAP_UPDATED 

Information from ZAP (NODE ID and/or LONG_NODE_ID) received and is different from the current and default value. Bindings and/or reporting in the user application may require to be updated

ZB_ZCL_CONTROL4_NETWORK_ZAP_DISCOVER_FAILED 

ZAP discovered failed after retrying ZB_ZCL_CONTROL4_NETWORK_SEARCHING_ZAP_ATTEMPTS times. User application may retry restart the Control4 network cluster or leave the network.

Function Documentation

◆ zb_zcl_control4_network_cluster_get_state()

zb_zcl_control4_network_state_t zb_zcl_control4_network_cluster_get_state ( void  )

Get Control4 Network Cluster state

◆ zb_zcl_control4_network_cluster_read_attr_resp_handler()

void zb_zcl_control4_network_cluster_read_attr_resp_handler ( zb_bufid_t  param)

Handle Read Attribute Response from Control4 Network Cluster

◆ zb_zcl_control4_network_cluster_start()

zb_ret_t zb_zcl_control4_network_cluster_start ( void  )

Start Control4 Network Cluster

◆ zb_zcl_control4_network_cluster_stop()

void zb_zcl_control4_network_cluster_stop ( void  )

Stop Control4 Network Cluster

ZB_ZCL_CLUSTER_CLIENT_ROLE
#define ZB_ZCL_CLUSTER_CLIENT_ROLE
Definition: zb_zcl_common.h:190
zb_zcl_cluster_desc_s
ZCL cluster description.
Definition: zb_zcl_common.h:127
zb_zcl_attr_s
ZCL attribute definition structure.
Definition: zb_zcl_common.h:651
ZB_CONTROL4_NETWORK_ENDPOINT
#define ZB_CONTROL4_NETWORK_ENDPOINT
Definition: zb_zcl_control4_networking.h:339
ZB_ZCL_MANUF_CODE_INVALID
#define ZB_ZCL_MANUF_CODE_INVALID
Internal invalid manufacturer code value.
Definition: zb_zcl_common.h:322
ZB_ZCL_CLUSTER_SERVER_ROLE
#define ZB_ZCL_CLUSTER_SERVER_ROLE
Definition: zb_zcl_common.h:188
ZB_ZCL_CONTROL4_NETWORK_DECLARE_SIMPLE_DESC
#define ZB_ZCL_CONTROL4_NETWORK_DECLARE_SIMPLE_DESC(ep_name)
Declare simple descriptor for C4 Network Cluster endpoint.
Definition: zb_zcl_control4_networking.h:366