Developing with ZBOSS for Zigbee
ZCL Identify cluster

Data Structures

struct  zb_zcl_identify_effect_req_s
 Structured representation of Trigger effect command payload. More...
 
struct  zb_zcl_identify_effect_value_param_s
 Declare change Identify attribute for User Application. More...
 
struct  zb_zcl_identify_effect_user_app_schedule_e
 
struct  zb_zcl_identify_req_s
 Structured representation of Identify command payload. More...
 
struct  zb_zcl_identify_query_res_s
 Structured representation of Identify Query Response command payload. More...
 

Macros

#define ZB_ZCL_IDENTIFY_SEND_IDENTIFY_REQ( buffer, time, addr, dst_addr_mode, dst_ep, ep, prfl_id, def_resp, cb)
 Send Identify command. More...
 
#define ZB_ZCL_IDENTIFY_SEND_IDENTIFY_QUERY_REQ( buffer, addr, dst_addr_mode, dst_ep, ep, prfl_id, def_resp, cb)
 Send Identify Query command. More...
 
#define ZB_ZCL_IDENTIFY_SEND_IDENTIFY_QUERY_RES( buffer, time, addr, dst_addr_mode, dst_ep, ep, prfl_id, seq_num, aps_secured)
 Send Identify Query Response command. More...
 
#define ZB_ZCL_IDENTIFY_GET_IDENTIFY_REQ(data_ptr, buffer, status)
 Identify cluster Identify command payload structured read. More...
 
#define ZB_ZCL_IDENTIFY_GET_IDENTIFY_QUERY_RES(data_ptr, buffer, status)
 Identify cluster Identify Query Response command payload structured read. More...
 

Typedefs

typedef struct zb_zcl_identify_req_s zb_zcl_identify_req_t
 Structured representation of Identify command payload.
 
typedef struct zb_zcl_identify_query_res_s zb_zcl_identify_query_res_t
 Structured representation of Identify Query Response command payload.
 

Functions

zb_uint8_t zb_zcl_start_identifying (zb_uint8_t endpoint, zb_uint16_t timeout)
 Start identify process on given endpoint. More...
 
void zb_zcl_stop_identifying (zb_uint8_t endpoint)
 Stop identify process on given endpoint Complimentary function to zb_zcl_start_identifying. Used to force identify termination before timeout provided to zb_zcl_start_identifying is elapsed. More...
 
zb_uint8_t zb_zcl_is_identifying (zb_uint8_t endpoint)
 Indicates that endpoint supports Identify cluster and is identifying. More...
 

Identify cluster attributes

enum  zb_zcl_identify_attr_e { ZB_ZCL_ATTR_IDENTIFY_IDENTIFY_TIME_ID = 0x0000 }
 Identify cluster attribute identifier. More...
 
#define ZB_ZCL_IDENTIFY_IDENTIFY_TIME_DEFAULT_VALUE   0x0000
 Default value for Identify attribute.
 

Identify cluster command structures and definitions

enum  zb_zcl_identify_cmd_e { ZB_ZCL_CMD_IDENTIFY_IDENTIFY_ID = 0x00, ZB_ZCL_CMD_IDENTIFY_IDENTIFY_QUERY_ID = 0x01, ZB_ZCL_CMD_IDENTIFY_TRIGGER_EFFECT_ID = 0x40, ZB_ZCL_CMD_IDENTIFY_IDENTIFY_QUERY_RSP_ID = 0x00 }
 Command identifiers for "Identify" cluster. More...
 
enum  zb_zcl_identify_trigger_effect_e {
  ZB_ZCL_IDENTIFY_EFFECT_ID_BLINK = 0x00, ZB_ZCL_IDENTIFY_EFFECT_ID_BREATHE = 0x01, ZB_ZCL_IDENTIFY_EFFECT_ID_OKAY = 0x02, ZB_ZCL_IDENTIFY_EFFECT_ID_CHANNEL_CHANGE = 0xb,
  ZB_ZCL_IDENTIFY_EFFECT_ID_FINISH_EFFECT = 0xfe, ZB_ZCL_IDENTIFY_EFFECT_ID_STOP = 0xff
}
 
enum  zb_zcl_identify_trigger_variant_e { ZB_ZCL_IDENTIFY_EFFECT_ID_VARIANT_DEFAULT = 0x00 }
 
typedef struct zb_zcl_identify_effect_req_s zb_zcl_identify_effect_req_t
 Structured representation of Trigger effect command payload.
 
#define ZB_ZCL_IDENTIFY_SEND_TRIGGER_VARIANT_REQ( buffer, addr, dst_addr_mode, dst_ep, ep, prof_id, def_resp, cb, effect_id, effect_var)
 Send Trigger effect command. More...
 
#define ZB_ZCL_IDENTIFY_GET_TRIGGER_VARIANT_REQ(data_ptr, buffer, status)
 Parses Trigger effect command. More...
 

Inform User App about ZCL Identify cluster command and change attributes.

Internal structures and define-procedure for inform User App about ZCL Identify cluster command and change attributes.

typedef struct zb_zcl_identify_effect_value_param_s zb_zcl_identify_effect_value_param_t
 Declare change Identify attribute for User Application.
 
typedef struct zb_zcl_identify_effect_user_app_schedule_e zb_zcl_identify_effect_user_app_schedule_t
 
#define ZB_ZCL_IDENTIFY_EFFECT_SCHEDULE_USER_APP(buffer, pcmd_info, effectId, effectVar)
 

Detailed Description

Identify cluster implementation supports Identify command and Identify Query request-response command pair. All these commands have simple payload. Both Identify and Identify Query request are being processed, and Identify Query response is being generated in ZCL internals.

Example
Identify sending:
ZB_ZCL_IDENTIFY_SEND_IDENTIFY_REQ(buffer, 0, DST_ADDR, DST_ADDR_MODE, ENDPOINT_C, ENDPOINT_ED, ZB_AF_HA_PROFILE_ID, ZB_ZCL_ENABLE_DEFAULT_RESPONSE, NULL);
Identify Query request sending:
ZB_ZCL_IDENTIFY_SEND_IDENTIFY_QUERY_REQ(buffer, DST_ADDR, DST_ADDR_MODE, ENDPOINT_C, ENDPOINT_ED, ZB_AF_HA_PROFILE_ID, ZB_ZCL_ENABLE_DEFAULT_RESPONSE, NULL);

Macro Definition Documentation

◆ ZB_ZCL_IDENTIFY_EFFECT_SCHEDULE_USER_APP

#define ZB_ZCL_IDENTIFY_EFFECT_SCHEDULE_USER_APP (   buffer,
  pcmd_info,
  effectId,
  effectVar 
)
Value:
{ \
zb_zcl_identify_effect_user_app_schedule_t* data = \
ZB_BUF_GET_PARAM((buffer), zb_zcl_identify_effect_user_app_schedule_t); \
ZB_MEMMOVE(&(data->cmd_info), (pcmd_info), sizeof(zb_zcl_parsed_hdr_t)); \
data->param.effect_id = (effectId); \
data->param.effect_variant = (effectVar); \
ZB_SCHEDULE_CALLBACK(zb_zcl_identify_effect_invoke_user_app, (buffer)); \
}

◆ ZB_ZCL_IDENTIFY_GET_IDENTIFY_QUERY_RES

#define ZB_ZCL_IDENTIFY_GET_IDENTIFY_QUERY_RES (   data_ptr,
  buffer,
  status 
)
Value:
{ \
if (zb_buf_len((buffer)) != sizeof(zb_zcl_identify_query_res_t)) \
{ \
} \
else \
{ \
zb_zcl_identify_query_res_t *src_ptr = \
ZB_HTOLE16(&((data_ptr)->timeout), &(src_ptr->timeout)); \
} \
}

Identify cluster Identify Query Response command payload structured read.

Parameters
data_ptr- pointer to a variable of type zb_zcl_identify_query_res_t
buffercontaining the packet (by pointer).
status- variable to put parse status to (see zb_zcl_parse_status_t).

◆ ZB_ZCL_IDENTIFY_GET_IDENTIFY_REQ

#define ZB_ZCL_IDENTIFY_GET_IDENTIFY_REQ (   data_ptr,
  buffer,
  status 
)
Value:
{ \
if (zb_buf_len((buffer)) != sizeof(zb_zcl_identify_req_t)) \
{ \
} \
else \
{ \
zb_zcl_identify_req_t *src_ptr = \
ZB_HTOLE16(&((data_ptr)->timeout), &(src_ptr->timeout)); \
} \
}

Identify cluster Identify command payload structured read.

Parameters
data_ptr- pointer to a variable of type zb_zcl_identify_req_t
buffercontaining the packet (by pointer).
status- variable to put parse status to (see zb_zcl_parse_status_t).

◆ ZB_ZCL_IDENTIFY_GET_TRIGGER_VARIANT_REQ

#define ZB_ZCL_IDENTIFY_GET_TRIGGER_VARIANT_REQ (   data_ptr,
  buffer,
  status 
)
Value:
{ \
if (zb_buf_len((buffer)) != sizeof(zb_zcl_identify_effect_req_t)) \
{ \
} \
else \
{ \
zb_zcl_identify_effect_req_t *src_ptr = \
ZB_MEMCPY((data_ptr), src_ptr, sizeof(zb_zcl_identify_effect_req_t)); \
} \
}

Parses Trigger effect command.

Attention
Assumes that ZCL header already cut.
Parameters
data_ptr- pointer to a variable of type zb_zcl_identify_effect_req_s.
buffercontaining the packet (by pointer).
status- variable to put parse status to (see zb_zcl_parse_status_t).

◆ ZB_ZCL_IDENTIFY_SEND_IDENTIFY_QUERY_REQ

#define ZB_ZCL_IDENTIFY_SEND_IDENTIFY_QUERY_REQ (   buffer,
  addr,
  dst_addr_mode,
  dst_ep,
  ep,
  prfl_id,
  def_resp,
  cb 
)
Value:
{ \
zb_uint8_t* ptr = ZB_ZCL_START_PACKET_REQ(buffer) \
ZB_ZCL_CONSTRUCT_SPECIFIC_COMMAND_REQ_FRAME_CONTROL(ptr, def_resp) \
ZB_ZCL_CONSTRUCT_COMMAND_HEADER_REQ( \
ZB_ZCL_FINISH_PACKET(buffer, ptr) \
ZB_ZCL_SEND_COMMAND_SHORT( \
buffer, addr, dst_addr_mode, dst_ep, ep, prfl_id, ZB_ZCL_CLUSTER_ID_IDENTIFY, cb); \
}

Send Identify Query command.

Parameters
bufferto put packet to
addr- address to send packet to
dst_addr_mode- addressing mode
dst_ep- destination endpoint
ep- sending endpoint
prfl_id- profile identifier
def_resp- flag "Default response required"
cb- callback for getting command send status
ZB_ZCL_IDENTIFY_SEND_IDENTIFY_QUERY_REQ(buffer, DST_ADDR, DST_ADDR_MODE, ENDPOINT_C, ENDPOINT_ED, ZB_AF_HA_PROFILE_ID, ZB_ZCL_ENABLE_DEFAULT_RESPONSE, NULL);

◆ ZB_ZCL_IDENTIFY_SEND_IDENTIFY_QUERY_RES

#define ZB_ZCL_IDENTIFY_SEND_IDENTIFY_QUERY_RES (   buffer,
  time,
  addr,
  dst_addr_mode,
  dst_ep,
  ep,
  prfl_id,
  seq_num,
  aps_secured 
)
Value:
{ \
zb_uint8_t* ptr = ZB_ZCL_START_PACKET(buffer); \
ZB_ZCL_CONSTRUCT_SPECIFIC_COMMAND_RES_FRAME_CONTROL(ptr); \
ZB_ZCL_CONSTRUCT_COMMAND_HEADER(ptr, seq_num, ZB_ZCL_CMD_IDENTIFY_IDENTIFY_QUERY_RSP_ID); \
ZB_ZCL_PACKET_PUT_DATA16_VAL(ptr, time); \
ZB_ZCL_FINISH_N_SEND_PACKET_NEW(buffer, ptr, \
addr, dst_addr_mode, dst_ep, ep, prfl_id, ZB_ZCL_CLUSTER_ID_IDENTIFY, NULL, aps_secured, \
ZB_FALSE, 0); \
}

Send Identify Query Response command.

Parameters
bufferto put packet to
timethe device will be identifying
addr- address to send packet to
dst_addr_mode- addressing mode
dst_ep- destination endpoint
ep- sending endpoint
prfl_id- profile identifier
seq_num- sequence number
aps_secured- APS security mode

◆ ZB_ZCL_IDENTIFY_SEND_IDENTIFY_REQ

#define ZB_ZCL_IDENTIFY_SEND_IDENTIFY_REQ (   buffer,
  time,
  addr,
  dst_addr_mode,
  dst_ep,
  ep,
  prfl_id,
  def_resp,
  cb 
)
Value:
{ \
zb_uint8_t* ptr = ZB_ZCL_START_PACKET_REQ(buffer) \
ZB_ZCL_CONSTRUCT_SPECIFIC_COMMAND_REQ_FRAME_CONTROL(ptr, def_resp) \
ZB_ZCL_CONSTRUCT_COMMAND_HEADER_REQ(ptr, ZB_ZCL_GET_SEQ_NUM(), ZB_ZCL_CMD_IDENTIFY_IDENTIFY_ID); \
ZB_ZCL_PACKET_PUT_DATA16_VAL(ptr, time); \
ZB_ZCL_FINISH_PACKET(buffer, ptr) \
ZB_ZCL_SEND_COMMAND_SHORT( \
buffer, addr, dst_addr_mode, dst_ep, ep, prfl_id, ZB_ZCL_CLUSTER_ID_IDENTIFY, cb); \
}

Send Identify command.

Parameters
bufferto put packet to
timethe device will be identifying
addr- address to send packet to
dst_addr_mode- addressing mode
dst_ep- destination endpoint
ep- sending endpoint
prfl_id- profile identifier
def_resp- flag "Default response required"
cb- callback for getting command send status

◆ ZB_ZCL_IDENTIFY_SEND_TRIGGER_VARIANT_REQ

#define ZB_ZCL_IDENTIFY_SEND_TRIGGER_VARIANT_REQ (   buffer,
  addr,
  dst_addr_mode,
  dst_ep,
  ep,
  prof_id,
  def_resp,
  cb,
  effect_id,
  effect_var 
)
Value:
{ \
zb_uint8_t* ptr = ZB_ZCL_START_PACKET_REQ(buffer) \
ZB_ZCL_CONSTRUCT_SPECIFIC_COMMAND_REQ_FRAME_CONTROL(ptr, def_resp) \
ZB_ZCL_CONSTRUCT_COMMAND_HEADER_REQ(ptr, ZB_ZCL_GET_SEQ_NUM(), ZB_ZCL_CMD_IDENTIFY_TRIGGER_EFFECT_ID); \
ZB_ZCL_PACKET_PUT_DATA8(ptr, (effect_id)); \
ZB_ZCL_PACKET_PUT_DATA8(ptr, (effect_var)); \
ZB_ZCL_FINISH_PACKET(buffer, ptr) \
ZB_ZCL_SEND_COMMAND_SHORT( \
buffer, addr, dst_addr_mode, dst_ep, ep, prof_id, ZB_ZCL_CLUSTER_ID_IDENTIFY, cb); \
}

Send Trigger effect command.

Parameters
bufferto put packet to
addr- address to send packet to
dst_addr_mode- addressing mode
dst_ep- destination endpoint
ep- sending endpoint
prof_id- profile identifier
def_resp- flag "Default response required"
cb- callback for getting command send status
effect_id- effect identify, see zb_zcl_identify_trigger_effect_e
effect_var- effect variant, see zb_zcl_identify_trigger_variant_e

Typedef Documentation

◆ zb_zcl_identify_effect_user_app_schedule_t

Struct for invoke User App & continue after

Enumeration Type Documentation

◆ zb_zcl_identify_attr_e

Identify cluster attribute identifier.

See also
ZCL spec, subclause 3.5.2.2
Enumerator
ZB_ZCL_ATTR_IDENTIFY_IDENTIFY_TIME_ID 

Identify time attribute

◆ zb_zcl_identify_cmd_e

Command identifiers for "Identify" cluster.

See also
ZCL spec, subclauses 3.5.2.3, 3.5.2.4
Enumerator
ZB_ZCL_CMD_IDENTIFY_IDENTIFY_ID 

Identify command

ZB_ZCL_CMD_IDENTIFY_IDENTIFY_QUERY_ID 

Identify query command

ZB_ZCL_CMD_IDENTIFY_TRIGGER_EFFECT_ID 

"Trigger effect" command identifier.

ZB_ZCL_CMD_IDENTIFY_IDENTIFY_QUERY_RSP_ID 

Identify query response

◆ zb_zcl_identify_trigger_effect_e

Effect identifier enum

See also
ZCL spec 3.5.2.2.3.1
Enumerator
ZB_ZCL_IDENTIFY_EFFECT_ID_BLINK 

Effect identifier field value: Light is turned on/off once Effect identifier field value: Light turned on/off over 1 second and repeated 15 times

ZB_ZCL_IDENTIFY_EFFECT_ID_BREATHE 

Effect identifier field value: Colored light turns green for 1 second; non-colored light flashes twice

ZB_ZCL_IDENTIFY_EFFECT_ID_OKAY 

Effect identifier field value: Colored light turns orange for 8 seconds; non-colored light switches to maximum brightness for 0.5s and then minimum brightness for 7.5s

ZB_ZCL_IDENTIFY_EFFECT_ID_CHANNEL_CHANGE 

Effect identifier field value: Complete the current effect sequence before terminating. E.g., if in the middle of a breathe effect (as above), first complete the current 1s breathe effect and then terminate the effect

ZB_ZCL_IDENTIFY_EFFECT_ID_FINISH_EFFECT 

Effect identifier field value: Terminate the effect as soon as possible

◆ zb_zcl_identify_trigger_variant_e

Effect identifier enum

See also
ZCL spec 3.5.2.2.3.2
Enumerator
ZB_ZCL_IDENTIFY_EFFECT_ID_VARIANT_DEFAULT 

Effect variant field value: Default

Function Documentation

◆ zb_zcl_is_identifying()

zb_uint8_t zb_zcl_is_identifying ( zb_uint8_t  endpoint)

Indicates that endpoint supports Identify cluster and is identifying.

Parameters
endpointnumber to analyze
Returns
ZB_TRUE if endpoint is in the "identifying" state, ZB_FALSE otherwise.

◆ zb_zcl_start_identifying()

zb_uint8_t zb_zcl_start_identifying ( zb_uint8_t  endpoint,
zb_uint16_t  timeout 
)

Start identify process on given endpoint.

Parameters
endpoint- endpoint to start identifying on
timeout- time (in seconds) after which identifying will stop

◆ zb_zcl_stop_identifying()

void zb_zcl_stop_identifying ( zb_uint8_t  endpoint)

Stop identify process on given endpoint Complimentary function to zb_zcl_start_identifying. Used to force identify termination before timeout provided to zb_zcl_start_identifying is elapsed.

Parameters
endpointEndpoint
ZB_AF_HA_PROFILE_ID
#define ZB_AF_HA_PROFILE_ID
Definition: zboss_api_af.h:287
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:1428
zb_zcl_identify_req_s
Structured representation of Identify command payload.
Definition: zb_zcl_identify.h:321
ZB_ZCL_ENABLE_DEFAULT_RESPONSE
#define ZB_ZCL_ENABLE_DEFAULT_RESPONSE
Definition: zb_zcl_common.h:935
ZB_ZCL_CMD_IDENTIFY_IDENTIFY_QUERY_ID
@ ZB_ZCL_CMD_IDENTIFY_IDENTIFY_QUERY_ID
Definition: zb_zcl_identify.h:78
zb_zcl_identify_effect_req_s
Structured representation of Trigger effect command payload.
Definition: zb_zcl_identify.h:133
ZB_ZCL_CMD_IDENTIFY_IDENTIFY_ID
@ ZB_ZCL_CMD_IDENTIFY_IDENTIFY_ID
Definition: zb_zcl_identify.h:77
zb_zcl_parsed_hdr_s
Definition: zb_zcl_common.h:1040
ZB_ZCL_IDENTIFY_SEND_IDENTIFY_REQ
#define ZB_ZCL_IDENTIFY_SEND_IDENTIFY_REQ( buffer, time, addr, dst_addr_mode, dst_ep, ep, prfl_id, def_resp, cb)
Send Identify command.
Definition: zb_zcl_identify.h:236
zb_zcl_identify_effect_user_app_schedule_e
Definition: zb_zcl_identify.h:206
ZB_ZCL_GET_SEQ_NUM
#define ZB_ZCL_GET_SEQ_NUM()
Return next sequence number for ZCL frame.
Definition: zb_zcl_common.h:1348
ZB_ZCL_CLUSTER_ID_IDENTIFY
#define ZB_ZCL_CLUSTER_ID_IDENTIFY
Definition: zb_zcl_common.h:208
zb_zcl_identify_query_res_s
Structured representation of Identify Query Response command payload.
Definition: zb_zcl_identify.h:327
ZB_ZCL_CMD_IDENTIFY_TRIGGER_EFFECT_ID
@ ZB_ZCL_CMD_IDENTIFY_TRIGGER_EFFECT_ID
Definition: zb_zcl_identify.h:79
zb_buf_begin
#define zb_buf_begin(buf)
Definition: zboss_api_buf.h:343
ZB_ZCL_PARSE_STATUS_SUCCESS
@ ZB_ZCL_PARSE_STATUS_SUCCESS
Definition: zb_zcl_common.h:328
ZB_ZCL_CMD_IDENTIFY_IDENTIFY_QUERY_RSP_ID
@ ZB_ZCL_CMD_IDENTIFY_IDENTIFY_QUERY_RSP_ID
Definition: zb_zcl_identify.h:80
ZB_ZCL_PARSE_STATUS_FAILURE
@ ZB_ZCL_PARSE_STATUS_FAILURE
Definition: zb_zcl_common.h:329
ZB_ZCL_IDENTIFY_SEND_IDENTIFY_QUERY_REQ
#define ZB_ZCL_IDENTIFY_SEND_IDENTIFY_QUERY_REQ( buffer, addr, dst_addr_mode, dst_ep, ep, prfl_id, def_resp, cb)
Send Identify Query command.
Definition: zb_zcl_identify.h:260
ZB_FALSE
#define ZB_FALSE
Definition: zb_types.h:370
zb_buf_len
#define zb_buf_len(buf)
Definition: zboss_api_buf.h:361