Developing with ZBOSS for Zigbee
ZCL commands shared by all clusters

Modules

 Default response command sending and parsing.
 
 Read attributes request and response sending and parsing.
 
 Write attributes command sending and parsing.
 
 Discover attributes request and response sending and parsing.
 
 Configure reporting command sending and parsing
 
 Report attribute command parsing
 
 Read reporting configuration command sending and parsing
 

Data Structures

struct  zb_zcl_disc_cmd_req_s
 ZCL Discovery Commands Command frame. More...
 
struct  zb_zcl_disc_cmd_resp_s
 ZCL Discovery Commands Command frame. More...
 

Macros

#define ZB_ZCL_BROADCAST_ENDPOINT   0xFFU
 ZCL broadcast endpoint.
 
#define ZB_ZCL_BROADCAST_ENDPOINT_CMD_RESP_JITTER   (ZB_MILLISECONDS_TO_BEACON_INTERVAL(500))
 Minimum time delay between responses to ZCL command sent to broadcast endpoint.
 
#define ZB_ZCL_GENERAL_DISC_COMMAND_GENERATED_REQ(_buffer, _direction, _def_resp, _addr, _dst_addr_mode, _dst_ep, _ep, _profile_id, _cluster_id, _cb, _is_manuf, _manuf_id, _start_cmd_id, _max_len)
 Discover commands Generated command. More...
 
#define ZB_ZCL_GENERAL_DISC_COMMAND_RECEIVED_REQ(_buffer, _direction, _def_resp, _addr, _dst_addr_mode, _dst_ep, _ep, _profile_id, _cluster_id, _cb, _is_manuf, _manuf_id, _start_cmd_id, _max_len)
 Discover commands Received command. More...
 
#define ZB_ZCL_GENERAL_GET_DISC_COMMAND(_data_ptr, _buffer, _status)
 Get parameter of Discovery command request. More...
 
#define ZB_ZCL_GENERAL_INIT_DISC_COMMAND_RESP(_cmd_ptr, _buffer, _direction, _seq, _cmd, _is_manuf, _manuf_id, _complete)
 Init Discover commands response manufacture specific and not specific. More...
 
#define ZB_ZCL_GENERAL_ADD_DISC_COMMAND_RESP(_cmd_ptr, _cmd_id)
 Add command Id to Discover commands response. More...
 
#define ZB_ZCL_GENERAL_FINISH_DISC_COMMAND_RESP(_buffer, _cmd_ptr, _addr, _dst_addr_mode, _dst_ep, _ep, _profile_id, _cluster_id)
 Finish command Id to Discover commands response. More...
 
#define ZB_ZCL_GENERAL_GET_DISC_COMMAND_RESP(_data_ptr, _buffer, _status)
 Get parameter of Discovery command response. More...
 
#define ZB_ZCL_GENERAL_GET_NEXT_CMD_ID_DISC_COMMAND_RESP(_cmd_id, _buffer, _status)
 Get next command ID from Discovery command response. More...
 

Typedefs

typedef zb_uint8_t zb_zcl_cmd_t
 Type for ZCL common command IDs. More...
 
typedef struct zb_zcl_disc_cmd_req_s zb_zcl_disc_cmd_req_t
 ZCL Discovery Commands Command frame. More...
 
typedef enum zb_zcl_disc_cmd_complete_e zb_zcl_disc_cmd_complete_t
 ZCL Discover command complete enum. More...
 
typedef struct zb_zcl_disc_cmd_resp_s zb_zcl_disc_cmd_resp_t
 ZCL Discovery Commands Command frame. More...
 

Enumerations

enum  zb_zcl_disc_cmd_complete_e { ZB_ZCL_DISC_CMD_NOT_COMPLETE = 0x00, ZB_ZCL_DISC_CMD_COMPLETE = 0x01 }
 ZCL Discover command complete enum. More...
 

ZCL common command IDs

See also
ZCL spec, clause 2.4
Note
These values do not contain commands not unused in ZB HA profile
#define ZB_ZCL_CMD_READ_ATTRIB   0x00U
 
#define ZB_ZCL_CMD_READ_ATTRIB_RESP   0x01U
 
#define ZB_ZCL_CMD_WRITE_ATTRIB   0x02U
 
#define ZB_ZCL_CMD_WRITE_ATTRIB_UNDIV   0x03U
 
#define ZB_ZCL_CMD_WRITE_ATTRIB_RESP   0x04U
 
#define ZB_ZCL_CMD_WRITE_ATTRIB_NO_RESP   0x05U
 
#define ZB_ZCL_CMD_CONFIG_REPORT   0x06U
 
#define ZB_ZCL_CMD_CONFIG_REPORT_RESP   0x07U
 
#define ZB_ZCL_CMD_READ_REPORT_CFG   0x08U
 
#define ZB_ZCL_CMD_READ_REPORT_CFG_RESP   0x09U
 
#define ZB_ZCL_CMD_REPORT_ATTRIB   0x0aU
 
#define ZB_ZCL_CMD_DEFAULT_RESP   0x0bU
 
#define ZB_ZCL_CMD_DISC_ATTRIB   0x0cU
 
#define ZB_ZCL_CMD_DISC_ATTRIB_RESP   0x0dU
 
#define ZB_ZCL_CMD_READ_ATTRIB_STRUCT   0x0eU
 
#define ZB_ZCL_CMD_WRITE_ATTRIB_STRUCT   0x0fU
 
#define ZB_ZCL_CMD_WRITE_ATTRIB_STRUCT_RESP   0x10U
 
#define ZB_ZCL_CMD_DISCOVER_COMMANDS_RECEIVED   0x11U
 
#define ZB_ZCL_CMD_DISCOVER_COMMANDS_RECEIVED_RES   0x12U
 
#define ZB_ZCL_CMD_DISCOVER_COMMANDS_GENERATED   0x13U
 
#define ZB_ZCL_CMD_DISCOVER_COMMANDS_GENERATED_RES   0x14U
 
#define ZB_ZCL_CMD_DISCOVER_ATTR_EXT   0x15U
 
#define ZB_ZCL_CMD_DISCOVER_ATTR_EXT_RES   0x16U
 

Detailed Description

This section describes data structures representing command payloads shared by all clusters, and APIs for sending these commands and parsing their payloads.

Macro Definition Documentation

◆ ZB_ZCL_CMD_CONFIG_REPORT

#define ZB_ZCL_CMD_CONFIG_REPORT   0x06U

Configure reporting command

◆ ZB_ZCL_CMD_CONFIG_REPORT_RESP

#define ZB_ZCL_CMD_CONFIG_REPORT_RESP   0x07U

Configure reporting response command

◆ ZB_ZCL_CMD_DEFAULT_RESP

#define ZB_ZCL_CMD_DEFAULT_RESP   0x0bU

Default response command

◆ ZB_ZCL_CMD_DISC_ATTRIB

#define ZB_ZCL_CMD_DISC_ATTRIB   0x0cU

Discover attributes command

◆ ZB_ZCL_CMD_DISC_ATTRIB_RESP

#define ZB_ZCL_CMD_DISC_ATTRIB_RESP   0x0dU

Discover attributes response command

◆ ZB_ZCL_CMD_DISCOVER_ATTR_EXT

#define ZB_ZCL_CMD_DISCOVER_ATTR_EXT   0x15U

Discover attributes extended command

◆ ZB_ZCL_CMD_DISCOVER_ATTR_EXT_RES

#define ZB_ZCL_CMD_DISCOVER_ATTR_EXT_RES   0x16U

Discover attributes extended response command

◆ ZB_ZCL_CMD_DISCOVER_COMMANDS_GENERATED

#define ZB_ZCL_CMD_DISCOVER_COMMANDS_GENERATED   0x13U

Discover Commands Generated command

◆ ZB_ZCL_CMD_DISCOVER_COMMANDS_GENERATED_RES

#define ZB_ZCL_CMD_DISCOVER_COMMANDS_GENERATED_RES   0x14U

Discover Commands Generated response command

◆ ZB_ZCL_CMD_DISCOVER_COMMANDS_RECEIVED

#define ZB_ZCL_CMD_DISCOVER_COMMANDS_RECEIVED   0x11U

Discover Commands Received command

◆ ZB_ZCL_CMD_DISCOVER_COMMANDS_RECEIVED_RES

#define ZB_ZCL_CMD_DISCOVER_COMMANDS_RECEIVED_RES   0x12U

Discover Commands Received response command

◆ ZB_ZCL_CMD_READ_ATTRIB

#define ZB_ZCL_CMD_READ_ATTRIB   0x00U

Read attributes command

◆ ZB_ZCL_CMD_READ_ATTRIB_RESP

#define ZB_ZCL_CMD_READ_ATTRIB_RESP   0x01U

Read attributes response command

◆ ZB_ZCL_CMD_READ_ATTRIB_STRUCT

#define ZB_ZCL_CMD_READ_ATTRIB_STRUCT   0x0eU

Read attributes structured

◆ ZB_ZCL_CMD_READ_REPORT_CFG

#define ZB_ZCL_CMD_READ_REPORT_CFG   0x08U

Read reporting config command

◆ ZB_ZCL_CMD_READ_REPORT_CFG_RESP

#define ZB_ZCL_CMD_READ_REPORT_CFG_RESP   0x09U

Read reporting config response command

◆ ZB_ZCL_CMD_REPORT_ATTRIB

#define ZB_ZCL_CMD_REPORT_ATTRIB   0x0aU

Report attribute command

◆ ZB_ZCL_CMD_WRITE_ATTRIB

#define ZB_ZCL_CMD_WRITE_ATTRIB   0x02U

Write attributes foundation command

◆ ZB_ZCL_CMD_WRITE_ATTRIB_NO_RESP

#define ZB_ZCL_CMD_WRITE_ATTRIB_NO_RESP   0x05U

Write attributes no response command

◆ ZB_ZCL_CMD_WRITE_ATTRIB_RESP

#define ZB_ZCL_CMD_WRITE_ATTRIB_RESP   0x04U

Write attributes response command

◆ ZB_ZCL_CMD_WRITE_ATTRIB_STRUCT

#define ZB_ZCL_CMD_WRITE_ATTRIB_STRUCT   0x0fU

Write attributes structured

◆ ZB_ZCL_CMD_WRITE_ATTRIB_STRUCT_RESP

#define ZB_ZCL_CMD_WRITE_ATTRIB_STRUCT_RESP   0x10U

Write attributes structured response

◆ ZB_ZCL_CMD_WRITE_ATTRIB_UNDIV

#define ZB_ZCL_CMD_WRITE_ATTRIB_UNDIV   0x03U

Write attributes undivided command

◆ ZB_ZCL_GENERAL_ADD_DISC_COMMAND_RESP

#define ZB_ZCL_GENERAL_ADD_DISC_COMMAND_RESP (   _cmd_ptr,
  _cmd_id 
)
Value:
{ \
ZB_ZCL_PACKET_PUT_DATA8((_cmd_ptr), (_cmd_id)); \
}

Add command Id to Discover commands response.

Parameters
_cmd_ptr- pointer of current part command
_cmd_id- The discovery complete field is a boolean field

◆ ZB_ZCL_GENERAL_DISC_COMMAND_GENERATED_REQ

#define ZB_ZCL_GENERAL_DISC_COMMAND_GENERATED_REQ (   _buffer,
  _direction,
  _def_resp,
  _addr,
  _dst_addr_mode,
  _dst_ep,
  _ep,
  _profile_id,
  _cluster_id,
  _cb,
  _is_manuf,
  _manuf_id,
  _start_cmd_id,
  _max_len 
)
Value:
{ \
zb_uint8_t *cmd_ptr = ZB_ZCL_START_PACKET((_buffer)); \
ZB_ZCL_CONSTRUCT_GENERAL_COMMAND_REQ_FRAME_CONTROL_EXT(cmd_ptr, \
(_direction), (_def_resp)); \
ZB_ZCL_CONSTRUCT_COMMAND_HEADER_EXT(cmd_ptr, ZB_ZCL_GET_SEQ_NUM(), (_is_manuf), \
ZB_ZCL_PACKET_PUT_DATA8(cmd_ptr, (_start_cmd_id)); \
ZB_ZCL_PACKET_PUT_DATA8(cmd_ptr, (_max_len)); \
ZB_ZCL_FINISH_PACKET((_buffer), cmd_ptr) \
ZB_ZCL_SEND_COMMAND_SHORT((_buffer), (_addr), (_dst_addr_mode), (_dst_ep), (_ep), \
(_profile_id), (_cluster_id), (_cb)); \
}

Discover commands Generated command.

Parameters
_bufferto put packet to
_direction- direction client-to-server or server-to-client
_def_resp- enable/disable default response
_addr- address to send packet to
_dst_addr_mode- addressing mode
_dst_ep- destination endpoint
_ep- sending endpoint
_profile_id- profile identifier
_cluster_id- cluster identifier
_cb- callback for getting command send status
_is_manuf- is discovery manufacturer attributes
_manuf_id- manufacturer ID
_start_cmd_id- start command ID
_max_len- max count

◆ ZB_ZCL_GENERAL_DISC_COMMAND_RECEIVED_REQ

#define ZB_ZCL_GENERAL_DISC_COMMAND_RECEIVED_REQ (   _buffer,
  _direction,
  _def_resp,
  _addr,
  _dst_addr_mode,
  _dst_ep,
  _ep,
  _profile_id,
  _cluster_id,
  _cb,
  _is_manuf,
  _manuf_id,
  _start_cmd_id,
  _max_len 
)
Value:
{ \
zb_uint8_t *cmd_ptr = ZB_ZCL_START_PACKET((_buffer)); \
ZB_ZCL_CONSTRUCT_GENERAL_COMMAND_REQ_FRAME_CONTROL_EXT(cmd_ptr, \
(_direction), (_def_resp)); \
ZB_ZCL_CONSTRUCT_COMMAND_HEADER_EXT(cmd_ptr, ZB_ZCL_GET_SEQ_NUM(), (_is_manuf), \
ZB_ZCL_PACKET_PUT_DATA8(cmd_ptr, (_start_cmd_id)); \
ZB_ZCL_PACKET_PUT_DATA8(cmd_ptr, (_max_len)); \
ZB_ZCL_FINISH_PACKET((_buffer), cmd_ptr) \
ZB_ZCL_SEND_COMMAND_SHORT((_buffer), (_addr), (_dst_addr_mode), (_dst_ep), (_ep), \
(_profile_id), (_cluster_id), (_cb)); \
}

Discover commands Received command.

Parameters
_bufferto put packet to
_direction- direction client-to-server or server-to-client
_def_resp- enable/disable default response
_addr- address to send packet to
_dst_addr_mode- addressing mode
_dst_ep- destination endpoint
_ep- sending endpoint
_profile_id- profile identifier
_cluster_id- cluster identifier
_cb- callback for getting command send status
_is_manuf- is discovery manufacturer attributes
_manuf_id- manufacturer ID
_start_cmd_id- start command ID
_max_len- max count

◆ ZB_ZCL_GENERAL_FINISH_DISC_COMMAND_RESP

#define ZB_ZCL_GENERAL_FINISH_DISC_COMMAND_RESP (   _buffer,
  _cmd_ptr,
  _addr,
  _dst_addr_mode,
  _dst_ep,
  _ep,
  _profile_id,
  _cluster_id 
)
Value:
{ \
ZB_ZCL_FINISH_PACKET((_buffer), (_cmd_ptr)) \
ZB_ZCL_SEND_COMMAND_SHORT((_buffer), (_addr), (_dst_addr_mode), (_dst_ep), \
(_ep), (_profile_id), (_cluster_id), NULL); \
}

Finish command Id to Discover commands response.

Parameters
_bufferto put packet to
_cmd_ptr- pointer of current part command
_addr- address to send packet to
_dst_addr_mode- addressing mode
_dst_ep- destination endpoint
_ep- sending endpoint
_profile_id- profile identifier
_cluster_id- cluster identifier

◆ ZB_ZCL_GENERAL_GET_DISC_COMMAND

#define ZB_ZCL_GENERAL_GET_DISC_COMMAND (   _data_ptr,
  _buffer,
  _status 
)
Value:
{ \
if (zb_buf_len((_buffer)) != sizeof(zb_zcl_disc_cmd_req_t)) \
{ \
} \
else \
{ \
zb_zcl_disc_cmd_req_t *src_ptr = \
(_data_ptr)->start_cmd_id = src_ptr->start_cmd_id; \
(_data_ptr)->maximum = src_ptr->maximum; \
} \
}

Get parameter of Discovery command request.

Parameters
_buffer- buffer containing part of Discover command request data
_data_ptr- out pointer to zb_zcl_disc_cmd_req_t, containing Discover command data
_status- result parse, see zb_zcl_parse_status_t

◆ ZB_ZCL_GENERAL_GET_DISC_COMMAND_RESP

#define ZB_ZCL_GENERAL_GET_DISC_COMMAND_RESP (   _data_ptr,
  _buffer,
  _status 
)
Value:
{ \
if (zb_buf_len((_buffer)) < sizeof(zb_zcl_disc_cmd_resp_t)) \
{ \
} \
else \
{ \
zb_zcl_disc_cmd_resp_t *src_ptr = \
(_data_ptr)->complete = src_ptr->complete; \
(void)zb_buf_cut_left(()buffer), sizeof(zb_zcl_disc_cmd_resp_t)); \
} \
}

Get parameter of Discovery command response.

Parameters
_buffer- ID zb_bufid_t of a buffer containing part of Discover command response data
_data_ptr- out pointer to zb_zcl_disc_cmd_res_t, containing Discover command response
_status- result parse, see zb_zcl_parse_status_t

◆ ZB_ZCL_GENERAL_GET_NEXT_CMD_ID_DISC_COMMAND_RESP

#define ZB_ZCL_GENERAL_GET_NEXT_CMD_ID_DISC_COMMAND_RESP (   _cmd_id,
  _buffer,
  _status 
)
Value:
{ \
if (zb_buf_len((_buffer)) < sizeof(zb_uint8_t)) \
{ \
} \
else \
{ \
zb_uint8_t *cmd_id_list = (zb_uint8_t*)zb_buf_begin((_buffer)); \
(_cmd_id) = cmd_id_list[0]; \
(void)zb_buf_cut_left((_buffer), sizeof(zb_uint8_t)); \
} \
}

Get next command ID from Discovery command response.

Parameters
_buffer- ID zb_bufid_t of a buffer containing part of Discover command response data
_cmd_id- out next command ID
_status- result parse, see zb_zcl_parse_status_t

◆ ZB_ZCL_GENERAL_INIT_DISC_COMMAND_RESP

#define ZB_ZCL_GENERAL_INIT_DISC_COMMAND_RESP (   _cmd_ptr,
  _buffer,
  _direction,
  _seq,
  _cmd,
  _is_manuf,
  _manuf_id,
  _complete 
)
Value:
{ \
(_cmd_ptr) = ZB_ZCL_START_PACKET((_buffer)); \
ZB_ZCL_CONSTRUCT_GENERAL_COMMAND_RESP_FRAME_CONTROL_EXT((_cmd_ptr), \
((_is_manuf)!=ZB_FALSE ? \
(_direction)); \
ZB_ZCL_CONSTRUCT_COMMAND_HEADER_EXT((_cmd_ptr), (_seq), (_is_manuf), \
(_manuf_id), (_cmd)); \
ZB_ZCL_PACKET_PUT_DATA8((_cmd_ptr), (_complete)); \
}

Init Discover commands response manufacture specific and not specific.

Parameters
_cmd_ptr- pointer of current part command
_bufferto put packet to
_direction- direction client-to-server or server-to-client
_seq- sequence of request
_cmd- command Id
_is_manuf- is manufacturer specific
_manuf_id- manufacturer ID
_complete- The discovery complete field is a boolean field

Typedef Documentation

◆ zb_zcl_cmd_t

Type for ZCL common command IDs.

◆ zb_zcl_disc_cmd_complete_t

ZCL Discover command complete enum.

See also
HA spec, subclause 12.1.2.1.2.

◆ zb_zcl_disc_cmd_req_t

ZCL Discovery Commands Command frame.

See also
HA spec, 12.1.1 Discovery Commands Command
HA spec, 12.1.3 Discovery Commands Command

◆ zb_zcl_disc_cmd_resp_t

ZCL Discovery Commands Command frame.

See also
HA spec, 12.1.2 Discovery Commands Command
HA spec, 12.1.4 Discovery Commands Command

Enumeration Type Documentation

◆ zb_zcl_disc_cmd_complete_e

ZCL Discover command complete enum.

See also
HA spec, subclause 12.1.2.1.2.
Enumerator
ZB_ZCL_DISC_CMD_NOT_COMPLETE 

Are more commands to be discovered

ZB_ZCL_DISC_CMD_COMPLETE 

No more commands to be discovered

ZB_ZCL_START_PACKET
#define ZB_ZCL_START_PACKET(zbbuf)
Initializes zb_buf_t buffer and returns pointer to the beginning of array.
Definition: zb_zcl_common.h:1431
zb_uint8_t
unsigned char zb_uint8_t
Project-local 1-byte unsigned int type.
Definition: zb_types.h:149
zb_zcl_disc_cmd_req_s
ZCL Discovery Commands Command frame.
Definition: zb_zcl_commands.h:2017
ZB_ZCL_GET_SEQ_NUM
#define ZB_ZCL_GET_SEQ_NUM()
Return next sequence number for ZCL frame.
Definition: zb_zcl_common.h:1349
zb_zcl_disc_cmd_resp_s
ZCL Discovery Commands Command frame.
Definition: zb_zcl_commands.h:2129
ZB_ZCL_CMD_DISCOVER_COMMANDS_GENERATED
#define ZB_ZCL_CMD_DISCOVER_COMMANDS_GENERATED
Definition: zb_zcl_commands.h:88
ZB_ZCL_NOT_MANUFACTURER_SPECIFIC
#define ZB_ZCL_NOT_MANUFACTURER_SPECIFIC
Definition: zb_zcl_common.h:912
zb_buf_cut_left
#define zb_buf_cut_left(buf, size)
Definition: zboss_api_buf.h:473
zb_buf_begin
#define zb_buf_begin(buf)
Definition: zboss_api_buf.h:344
ZB_ZCL_MANUFACTURER_SPECIFIC
#define ZB_ZCL_MANUFACTURER_SPECIFIC
Definition: zb_zcl_common.h:915
ZB_ZCL_CMD_DISCOVER_COMMANDS_RECEIVED
#define ZB_ZCL_CMD_DISCOVER_COMMANDS_RECEIVED
Definition: zb_zcl_commands.h:85
ZB_ZCL_PARSE_STATUS_SUCCESS
@ ZB_ZCL_PARSE_STATUS_SUCCESS
Definition: zb_zcl_common.h:328
ZB_ZCL_PARSE_STATUS_FAILURE
@ ZB_ZCL_PARSE_STATUS_FAILURE
Definition: zb_zcl_common.h:329
zb_zcl_disc_cmd_resp_t
struct zb_zcl_disc_cmd_resp_s zb_zcl_disc_cmd_resp_t
ZCL Discovery Commands Command frame.
ZB_FALSE
#define ZB_FALSE
Definition: zb_types.h:370
zb_buf_len
#define zb_buf_len(buf)
Definition: zboss_api_buf.h:362