Macros | |
| #define | ZB_ZCL_START_PACKET(zbbuf) |
| Initializes zb_buf_t buffer and returns pointer to the beginning of array. | |
| #define | ZB_ZCL_GET_BYTES_WRITTEN(zbbuf, ptr) |
| Return number of bytes written to the buffer. | |
| #define | ZB_ZCL_GET_BYTES_AVAILABLE_WITH_FRAGMENTATION(zbbuf, ptr) (ZB_ASDU_MAX_FRAG_LEN - ZB_ZCL_GET_BYTES_WRITTEN(zbbuf, ptr)) |
| #define | ZB_ZCL_GET_BYTES_AVAILABLE_WO_FRAGMENTATION(zbbuf, ptr) (ZB_ZCL_HI_WO_IEEE_MAX_PAYLOAD_SIZE - ZB_ZCL_GET_BYTES_WRITTEN(zbbuf, ptr)) |
| #define | ZB_ZCL_GET_BYTES_AVAILABLE(zbbuf, ptr, profile_id, cluster_id) |
| Return number of bytes available in a packet. | |
| #define | ZB_ZCL_PACKET_PUT_DATA8(ptr, val) |
| Put 8-bit value to packet. | |
| #define | ZB_ZCL_PACKET_PUT_DATA16(ptr, val) |
| #define | ZB_ZCL_PACKET_PUT_DATA16_VAL(ptr, val) (ptr) = zb_put_next_htole16((ptr), val) |
| #define | ZB_ZCL_PACKET_PUT_2DATA16_VAL(ptr, val1, val2) (ptr) = zb_put_next_2_htole16((ptr),(val1),(val2)) |
| #define | ZB_ZCL_PACKET_PUT_2DATA32_VAL(ptr, val1, val2) (ptr) = zb_put_next_2_htole32((ptr),(val1),(val2)) |
| #define | ZB_ZCL_PACKET_PUT_DATA32_VAL(ptr, val) |
| Put 32-bit value to packet. More... | |
| #define | ZB_ZCL_PACKET_PUT_DATA32(ptr, val) |
| Put 32-bit value to packet. More... | |
| #define | ZB_ZCL_PACKET_PUT_DATA48_VAL(ptr, val) |
| Put 48-bit value to packet. More... | |
| #define | ZB_ZCL_PACKET_PUT_DATA48(ptr, val) |
| Put 48-bit value to packet. More... | |
| #define | ZB_ZCL_PACKET_PUT_DATA24_VAL(ptr, val) |
| Put 24-bit value to packet. More... | |
| #define | ZB_ZCL_PACKET_PUT_DATA24(ptr, val) |
| Put 24-bit value to packet. More... | |
| #define | ZB_ZCL_PACKET_PUT_DATA64(ptr, val) |
| Put 64-bit value to packet. More... | |
| #define | ZB_ZCL_PACKET_GET_DATA8(dst_ptr, src_ptr) |
| Get 8-bit value from packet. More... | |
| #define | ZB_ZCL_PACKET_PUT_DATA_N(ptr, val, n) |
| Put N byte data to packet. More... | |
| #define | ZB_ZCL_PACKET_GET_DATA16(dst_ptr, src_ptr) |
| Get 16-bit value from packet. More... | |
| #define | ZB_ZCL_PACKET_GET_DATA24(dst_ptr, src_ptr) |
| Get 24-bit value from packet. More... | |
| #define | ZB_ZCL_PACKET_GET_DATA48(dst_ptr, src_ptr) |
| Get 48-bit value from packet. More... | |
| #define | ZB_ZCL_PACKET_GET_DATA32(dst_ptr, src_ptr) |
| Get 32-bit value from packet. More... | |
| #define | ZB_ZCL_PACKET_GET_DATA64(dst_ptr, src_ptr) |
| Get 64-bit value from packet. More... | |
| #define | ZB_ZCL_PACKET_GET_DATA_IEEE(dst_ptr, src_ptr) |
| Get IEEE address from packet. More... | |
| #define | ZB_ZCL_PACKET_PUT_DATA_IEEE(dst_ptr, src_ptr) |
| Put IEEE address into packet. More... | |
| #define | ZB_ZCL_PACKET_PUT_STRING(_ptr, _val) |
| #define | ZB_ZCL_PACKET_GET_STRING(_zcl_str, data, _zcl_str_max_size) |
| #define | ZB_ZCL_PACKET_GET_STATIC_STRING(_zcl_str, data) ZB_ZCL_PACKET_GET_STRING(_zcl_str, data, sizeof(_zcl_str)) |
| #define | ZB_ZCL_PACKET_GET_DATA_N(dst_ptr, src_ptr, n) |
| Get N-byte value from packet. More... | |
| #define | ZB_ZCL_FINISH_PACKET(zbbuf, ptr) (void) zb_zcl_finish_and_send_packet((zbbuf), (ptr), |
| #define | ZB_ZCL_SEND_COMMAND_SHORT(buffer, addr, dst_addr_mode, dst_ep, ep, prof_id, cluster_id, cb) (const zb_addr_u *)(const void *)(&(addr)), (dst_addr_mode), (dst_ep), (ep), (prof_id), (cluster_id), (cb)) |
| #define | ZB_ZCL_FINISH_N_SEND_PACKET(zbbuf, ptr, addr, dst_addr_mode, dst_ep, ep, prof_id, cluster_id, cb) (void) zb_zcl_finish_and_send_packet((zbbuf), (ptr),(const zb_addr_u *)(const void *)(&(addr)), dst_addr_mode, dst_ep, ep, prof_id, cluster_id, cb) |
| #define | ZB_ZCL_FINISH_N_SEND_PACKET_NEW(zbbuf, ptr, addr, dst_addr_mode, dst_ep, ep, prof_id, cluster_id, cb, aps_secured, disable_aps_ack, delay) (void) zb_zcl_finish_and_send_packet_new((zbbuf), (ptr),(zb_addr_u *)(void *)(&(addr)), dst_addr_mode, dst_ep, ep, prof_id, cluster_id, cb, aps_secured, disable_aps_ack, delay) |
| #define | ZB_ZCL_FINISH_PACKET_O(zbbuf, ptr) (ptr) = zb_buf_alloc_left((zbbuf), ZB_ZCL_GET_BYTES_WRITTEN((zbbuf), (ptr))); |
Functions | |
| zb_bool_t | zb_zcl_can_cluster_be_fragmented (zb_uint16_t profile_id, zb_uint16_t cluster_id) |
| zb_ret_t | zb_zcl_finish_and_send_packet (zb_bufid_t buffer, zb_uint8_t *ptr, const zb_addr_u *dst_addr, zb_uint8_t dst_addr_mode, zb_uint8_t dst_ep, zb_uint8_t ep, zb_uint16_t prof_id, zb_uint16_t cluster_id, zb_callback_t cb) |
| ZCL finish and send packet. More... | |
| zb_ret_t | zb_zcl_finish_and_send_packet_new (zb_bufid_t buffer, zb_uint8_t *ptr, const zb_addr_u *dst_addr, zb_uint8_t dst_addr_mode, zb_uint8_t dst_ep, zb_uint8_t ep, zb_uint16_t prof_id, zb_uint16_t cluster_id, zb_callback_t cb, zb_bool_t aps_secured, zb_bool_t disable_aps_ack, zb_uint16_t delay) |
Detailed Description
Types and macros shared fill Fill ZCL packet.
- Example
- zb_uint8_t *cmd_ptr;TRACE_MSG(TRACE_APP1, "Send read attr TEST_STEP_READ_GLOBAL_CLUSTER_REVISION", (FMT__0));cmd_ptr = ZB_ZCL_START_PACKET(buffer);ZB_ZCL_CONSTRUCT_GENERAL_COMMAND_REQ_FRAME_CONTROL_A(cmd_ptr,cmd_ptr,DST_ADDR,ENDPOINT_C,ENDPOINT_ED,NULL);
Macro Definition Documentation
◆ ZB_ZCL_FINISH_PACKET
| #define ZB_ZCL_FINISH_PACKET | ( | zbbuf, | |
| ptr | |||
| ) | (void) zb_zcl_finish_and_send_packet((zbbuf), (ptr), |
Finish ZCL packet filling. Used bytes number are marked in a buffer.
- Parameters
-
zbbuf - pointer to zb_buf_t buffer. ptr - pointer to the byte after the last written byte in the buffer.
- Attention
- After ZB_ZCL_FINISH_PACKET() call, pointer ptr is set to the beginning of the buffer data.
- Note
- Please note that this macro does not return ret code, so if this macro is used without callback, this may lead to buffer leaks (if function is failed to send the packet). Please use zb_zcl_finish_and_send_packet() function directly to be able to check ret code.
◆ ZB_ZCL_PACKET_GET_DATA16
| #define ZB_ZCL_PACKET_GET_DATA16 | ( | dst_ptr, | |
| src_ptr | |||
| ) |
{ \ ZB_LETOH16((dst_ptr), (src_ptr)); \ (src_ptr) += sizeof(zb_uint16_t); \}unsigned short zb_uint16_tProject-local 2-byte unsigned int type. Definition: zb_types.h:159
Get 16-bit value from packet.
- Parameters
-
dst_ptr - pointer to the memory to store value (pointer value preserved). src_ptr - pointer to the memory to get value from (will be incremented by value size).
◆ ZB_ZCL_PACKET_GET_DATA24
| #define ZB_ZCL_PACKET_GET_DATA24 | ( | dst_ptr, | |
| src_ptr | |||
| ) |
{ \ ZB_LETOH24(dst_ptr, src_ptr); \ (src_ptr) += ZB_24BIT_SIZE; \}
Get 24-bit value from packet.
- Parameters
-
dst_ptr - pointer to the memory to store value (pointer value preserved). src_ptr - pointer to the memory to get value from (will be incremented by value size).
◆ ZB_ZCL_PACKET_GET_DATA32
| #define ZB_ZCL_PACKET_GET_DATA32 | ( | dst_ptr, | |
| src_ptr | |||
| ) |
{ \ ZB_LETOH32((dst_ptr), (src_ptr)); \ (src_ptr) += sizeof(zb_uint32_t); \}unsigned int zb_uint32_tProject-local 4-byte unsigned int type. Definition: zb_types.h:183
Get 32-bit value from packet.
- Parameters
-
dst_ptr - pointer to the memory to store value (pointer value preserved). src_ptr - pointer to the memory to get value from (will be incremented by value size).
◆ ZB_ZCL_PACKET_GET_DATA48
| #define ZB_ZCL_PACKET_GET_DATA48 | ( | dst_ptr, | |
| src_ptr | |||
| ) |
{ \ ZB_LETOH48(dst_ptr, src_ptr); \ (src_ptr) += ZB_48BIT_SIZE; \}
Get 48-bit value from packet.
- Parameters
-
dst_ptr - pointer to the memory to store value (pointer value preserved). src_ptr - pointer to the memory to get value from (will be incremented by value size).
◆ ZB_ZCL_PACKET_GET_DATA64
| #define ZB_ZCL_PACKET_GET_DATA64 | ( | dst_ptr, | |
| src_ptr | |||
| ) |
{ \ ZB_LETOH64((dst_ptr), (src_ptr)); \ (src_ptr) += 8; \}
Get 64-bit value from packet.
- Parameters
-
dst_ptr - pointer to the memory to store value (pointer value preserved). src_ptr - pointer to the memory to get value from (will be incremented by value size).
◆ ZB_ZCL_PACKET_GET_DATA8
| #define ZB_ZCL_PACKET_GET_DATA8 | ( | dst_ptr, | |
| src_ptr | |||
| ) |
{ \ *(dst_ptr) = *((src_ptr)++); \}
Get 8-bit value from packet.
- Parameters
-
dst_ptr - pointer to the memory to store value (pointer value preserved). src_ptr - pointer to the memory to get value from (will be incremented).
◆ ZB_ZCL_PACKET_GET_DATA_IEEE
| #define ZB_ZCL_PACKET_GET_DATA_IEEE | ( | dst_ptr, | |
| src_ptr | |||
| ) |
{ \ ZB_IEEE_ADDR_COPY((dst_ptr), (src_ptr)); \ (src_ptr) += sizeof(zb_ieee_addr_t); \}zb_64bit_addr_t zb_ieee_addr_tLong (64-bit) device address. Definition: zb_types.h:536
Get IEEE address from packet.
- Parameters
-
dst_ptr - pointer to the memory to store value (pointer value preserved). src_ptr - pointer to the memory to get value from (will be incremented by value size).
◆ ZB_ZCL_PACKET_GET_DATA_N
| #define ZB_ZCL_PACKET_GET_DATA_N | ( | dst_ptr, | |
| src_ptr, | |||
| n | |||
| ) |
{ \ ZB_MEMCPY((dst_ptr), (src_ptr), (n)); \ (src_ptr) += (n); \}
Get N-byte value from packet.
- Parameters
-
dst_ptr - pointer to the memory to store value (will be incremented by value size). src_ptr - pointer to the memory to get value from (pointer value preserved). n - data length.
◆ ZB_ZCL_PACKET_GET_STATIC_STRING
| #define ZB_ZCL_PACKET_GET_STATIC_STRING | ( | _zcl_str, | |
| data | |||
| ) | ZB_ZCL_PACKET_GET_STRING(_zcl_str, data, sizeof(_zcl_str)) |
Get ZCL String from packet and put it into array with fixed size.
◆ ZB_ZCL_PACKET_GET_STRING
| #define ZB_ZCL_PACKET_GET_STRING | ( | _zcl_str, | |
| data, | |||
| _zcl_str_max_size | |||
| ) |
{ \ ZB_ZCL_PACKET_GET_DATA8(&_zcl_str[0], data); \ if (_zcl_str_max_size > ZB_ZCL_GET_STRING_LENGTH(_zcl_str)) \ { \ ZB_ZCL_PACKET_GET_DATA_N(ZB_ZCL_GET_STRING_BEGIN(_zcl_str), \ data, \ ZB_ZCL_GET_STRING_LENGTH(_zcl_str)); \ } \ else \ { \ data = NULL; \ } \}#define ZB_ZCL_GET_STRING_LENGTH(str)Get ZCL string length. Definition: zb_zcl_common.h:511
Get ZCL String from packet.
- Note
- If string is invalid (cannot be stored in buffer) this macro sets data to NULL.
- Parameters
-
_zcl_str - Destination buffer. data - Pointer to incoming data. _zcl_str_max_size - Size of destination buffer.
◆ ZB_ZCL_PACKET_PUT_DATA16
| #define ZB_ZCL_PACKET_PUT_DATA16 | ( | ptr, | |
| val | |||
| ) |
◆ ZB_ZCL_PACKET_PUT_DATA16_VAL
| #define ZB_ZCL_PACKET_PUT_DATA16_VAL | ( | ptr, | |
| val | |||
| ) | (ptr) = zb_put_next_htole16((ptr), val) |
Put 16-bit value to packet
- Parameters
-
ptr - pointer to the place to put value to val - value to put into packet
◆ ZB_ZCL_PACKET_PUT_DATA24
| #define ZB_ZCL_PACKET_PUT_DATA24 | ( | ptr, | |
| val | |||
| ) |
Put 24-bit value to packet.
- Parameters
-
ptr - pointer to the place to put value to val - pointer to the value to put into packet
◆ ZB_ZCL_PACKET_PUT_DATA24_VAL
| #define ZB_ZCL_PACKET_PUT_DATA24_VAL | ( | ptr, | |
| val | |||
| ) |
Put 24-bit value to packet.
- Parameters
-
ptr - pointer to the place to put value to val - value to put into packet
◆ ZB_ZCL_PACKET_PUT_DATA32
| #define ZB_ZCL_PACKET_PUT_DATA32 | ( | ptr, | |
| val | |||
| ) |
Put 32-bit value to packet.
- Parameters
-
ptr - pointer to the place to put value to val - pointer to the value to put into packet
◆ ZB_ZCL_PACKET_PUT_DATA32_VAL
| #define ZB_ZCL_PACKET_PUT_DATA32_VAL | ( | ptr, | |
| val | |||
| ) |
Put 32-bit value to packet.
- Parameters
-
ptr - pointer to the place to put value to val - pointer to the value to put into packet
◆ ZB_ZCL_PACKET_PUT_DATA48
| #define ZB_ZCL_PACKET_PUT_DATA48 | ( | ptr, | |
| val | |||
| ) |
Put 48-bit value to packet.
- Parameters
-
ptr - pointer to the place to put value to val - pointer to the value to put into packet
◆ ZB_ZCL_PACKET_PUT_DATA48_VAL
| #define ZB_ZCL_PACKET_PUT_DATA48_VAL | ( | ptr, | |
| val | |||
| ) |
Put 48-bit value to packet.
- Parameters
-
ptr - pointer to the place to put value to val - value to put into packet
◆ ZB_ZCL_PACKET_PUT_DATA64
| #define ZB_ZCL_PACKET_PUT_DATA64 | ( | ptr, | |
| val | |||
| ) |
Put 64-bit value to packet.
- Parameters
-
ptr - pointer to the place to put value to val - pointer to the value to put into packet
◆ ZB_ZCL_PACKET_PUT_DATA_IEEE
| #define ZB_ZCL_PACKET_PUT_DATA_IEEE | ( | dst_ptr, | |
| src_ptr | |||
| ) |
{ \ ZB_IEEE_ADDR_COPY((dst_ptr), (src_ptr)); \ (dst_ptr) += sizeof(zb_ieee_addr_t); \}zb_64bit_addr_t zb_ieee_addr_tLong (64-bit) device address. Definition: zb_types.h:536
Put IEEE address into packet.
- Parameters
-
dst_ptr - pointer to the memory to store value (will be incremented by value size). src_ptr - pointer to the memory to get value from (pointer value preserved).
◆ ZB_ZCL_PACKET_PUT_DATA_N
| #define ZB_ZCL_PACKET_PUT_DATA_N | ( | ptr, | |
| val, | |||
| n | |||
| ) |
Put N byte data to packet.
- Parameters
-
ptr - pointer to the place to put value to. val - pointer to the value to put into packet. n - number of bytes to be copied.
◆ ZB_ZCL_PACKET_PUT_STRING
| #define ZB_ZCL_PACKET_PUT_STRING | ( | _ptr, | |
| _val | |||
| ) |
{ \ ZB_ZCL_PACKET_PUT_DATA8 (_ptr, ZB_ZCL_GET_STRING_LENGTH(_val)); \ ZB_ZCL_PACKET_PUT_DATA_N(_ptr, ZB_ZCL_GET_STRING_BEGIN(_val), \ ZB_ZCL_GET_STRING_LENGTH(_val)); \}#define ZB_ZCL_GET_STRING_LENGTH(str)Get ZCL string length. Definition: zb_zcl_common.h:511
Put ZCL Octet String to packet
Function Documentation
◆ zb_zcl_finish_and_send_packet()
| zb_ret_t zb_zcl_finish_and_send_packet | ( | zb_bufid_t | buffer, |
| zb_uint8_t * | ptr, | ||
| const zb_addr_u * | dst_addr, | ||
| zb_uint8_t | dst_addr_mode, | ||
| zb_uint8_t | dst_ep, | ||
| zb_uint8_t | ep, | ||
| zb_uint16_t | prof_id, | ||
| zb_uint16_t | cluster_id, | ||
| zb_callback_t | cb | ||
| ) |
ZCL finish and send packet.
- Parameters
-
buffer pointer to the buffer where ZCL cmd is stored ptr pointer to the end of ZCL cmd in buffer dst_addr destination address (see zb_addr_u) dst_addr_mode destination address mode (only ZB_APS_ADDR_MODE_16_GROUP_ENDP_NOT_PRESENT and ZB_APS_ADDR_MODE_16_ENDP_PRESENT are supported) dst_ep destination endpoint ep source endpoint prof_id profile the command belongs to cluster_id cluster identifier cb command send status callback