nRF5 SDK for Thread and Zigbee v3.2.0
Data Structures | Macros | Typedefs | Enumerations | Functions
General attributes' description

Data Structures

struct  zb_zcl_attr_s
 ZCL attribute definiton structure. More...
 

Macros

#define ZB_ZCL_SET_STRING_VAL(str, val, len)   (ZB_MEMCPY((zb_uint8_t*)(str) + 1, (val), (len)), *(zb_uint8_t*)(str) = (len))
 Sets correctly ZCL char string value.
 
#define ZB_ZCL_GET_STRING_LENGTH(str)   ((str)[0])
 Get ZCL string length.
 
#define ZB_ZCL_SET_STRING_LENGTH(str, _newlen)   (((str))[0] = _newlen)
 
#define ZB_ZCL_STRING_CONST_SIZE(str)   (zb_uint8_t)(sizeof(str) - 1)
 Returns size of a string constant.
 
#define ZB_ZCL_GET_STRING_BEGIN(_str)   (&((_str)[1]))
 
#define ZB_ZCL_GET_STRING_END(_str)   (ZB_ZCL_GET_STRING_BEGIN(_str) + ZB_ZCL_GET_STRING_LENGTH(_str))
 
#define ZB_ZCL_GET_STRING_REF_AT(_str, _pos)   (ZB_ZCL_GET_STRING_BEGIN(_str) + _pos)
 
#define ZB_ZCL_GET_STRING_CHAR_AT(_str, _pos)   *ZB_ZCL_GET_STRING_REF_AT(_str, _pos)
 
#define ZB_ZCL_STRING_TO_C_STRING(_str)
 
#define ZB_ZCL_STRING_CLEAR(_str)   (_str[0] = 0)
 
#define ZB_ZCL_STRING_APPEND_C_STR(_zcl_str, _zcl_str_max_size, _c_str)   zb_zcl_string_append_data(_zcl_str, _zcl_str_max_size, (const zb_uint8_t *) _c_str, strlen(_c_str))
 
#define ZB_ZCL_STATIC_STRING_APPEND_C_STR(_zcl_s_str, _c_str)   ZB_ZCL_STRING_APPEND_C_STR((zb_uint8_t *) _zcl_s_str, sizeof(_zcl_s_str), _c_str)
 
#define ZB_ZCL_STATIC_STRING_APPEND_CHAR(_zcl_s_str, _char)   zb_zcl_string_append_byte(_zcl_s_str, sizeof(_zcl_s_str), (zb_uint8_t) _char)
 
#define ZB_ZCL_ATTR_SET_WITH_ATTR_ID(_set, _id)   ((_set << 8) | (_id & 0xFF))
 
#define ZB_ZCL_ATTR_SET_WITH_ATTR_ID(_set, _id)   ((_set << 8) | (_id & 0xFF))
 
#define ZB_ZCL_CLUSTER_REVISION_DEFAULT   1
 ZCL 6.0: Default value for cluster revision global attribute, see zb_zcl_attr_global_e.
 
#define ZB_ZCL_SET_ATTRIBUTE(ep, cluster_id, cluster_role, attr_id, value_ptr, check_access)
 Sets attribute value, perform all needed checks before and after setting new value, including read-only check and marking for reporting. More...
 
#define ZB_ZCL_SET_DIRECTLY_ATTR_VAL8(attr_desc, value)
 Set attribute 8-bit value without any check. Use this macro on your own risk, if and only if you are absolutely shure that no check for Access rights, Reporting and attribute type is needed. More...
 
#define ZB_ZCL_SET_DIRECTLY_ATTR_VAL16(attr_desc, value)
 Set attribute 16-bit value without any check. Use this macro on your own risk, if and only if you are absolutely shure that no check for Access rights, Reporting and attribute type is needed. More...
 
#define ZB_ZCL_SET_DIRECTLY_ATTR_VAL32(attr_desc, value)
 Set attribute 32-bit value without any check. Use this macro on your own risk, if and only if you are absolutely shure that no check for Access rights, Reporting and attribute type is needed. More...
 
#define ZB_ZCL_GET_ATTRIBUTE_VAL_8(attr_desc)   (*(zb_uint8_t*)attr_desc->data_p)
 
#define ZB_ZCL_GET_ATTRIBUTE_VAL_S8(attr_desc)   (*(zb_int8_t*)attr_desc->data_p)
 
#define ZB_ZCL_GET_ATTRIBUTE_VAL_16(attr_desc)   (*(zb_uint16_t*)attr_desc->data_p)
 
#define ZB_ZCL_GET_ATTRIBUTE_VAL_S16(attr_desc)   (*(zb_int16_t*)attr_desc->data_p)
 
#define ZB_ZCL_GET_ATTRIBUTE_VAL_32(attr_desc)   (*(zb_uint32_t*)attr_desc->data_p)
 
#define ZB_ZCL_GET_ATTRIBUTE_VAL_S32(attr_desc)   (*(zb_int32_t*)attr_desc->data_p)
 

Typedefs

typedef enum zb_zcl_attr_type_e zb_zcl_attr_type_t
 ZCL attribute data type values. More...
 
typedef enum zb_zcl_attr_access_e zb_zcl_attr_access_t
 ZCL attribute access values.
 
typedef struct zb_zcl_attr_s zb_zcl_attr_t
 ZCL attribute definiton structure.
 

Enumerations

enum  zb_zcl_attr_type_e {
  ZB_ZCL_ATTR_TYPE_NULL = 0x00, ZB_ZCL_ATTR_TYPE_8BIT = 0x08, ZB_ZCL_ATTR_TYPE_16BIT = 0x09, ZB_ZCL_ATTR_TYPE_24BIT = 0x0a,
  ZB_ZCL_ATTR_TYPE_32BIT = 0x0b, ZB_ZCL_ATTR_TYPE_40BIT = 0x0c, ZB_ZCL_ATTR_TYPE_48BIT = 0x0d, ZB_ZCL_ATTR_TYPE_56BIT = 0x0e,
  ZB_ZCL_ATTR_TYPE_64BIT = 0x0f, ZB_ZCL_ATTR_TYPE_BOOL = 0x10, ZB_ZCL_ATTR_TYPE_8BITMAP = 0x18, ZB_ZCL_ATTR_TYPE_16BITMAP = 0x19,
  ZB_ZCL_ATTR_TYPE_24BITMAP = 0x1a, ZB_ZCL_ATTR_TYPE_32BITMAP = 0x1b, ZB_ZCL_ATTR_TYPE_40BITMAP = 0x1c, ZB_ZCL_ATTR_TYPE_48BITMAP = 0x1d,
  ZB_ZCL_ATTR_TYPE_56BITMAP = 0x1e, ZB_ZCL_ATTR_TYPE_64BITMAP = 0x1f, ZB_ZCL_ATTR_TYPE_U8 = 0x20, ZB_ZCL_ATTR_TYPE_U16 = 0x21,
  ZB_ZCL_ATTR_TYPE_U24 = 0x22, ZB_ZCL_ATTR_TYPE_U32 = 0x23, ZB_ZCL_ATTR_TYPE_U40 = 0x24, ZB_ZCL_ATTR_TYPE_U48 = 0x25,
  ZB_ZCL_ATTR_TYPE_U56 = 0x26, ZB_ZCL_ATTR_TYPE_U64 = 0x27, ZB_ZCL_ATTR_TYPE_S8 = 0x28, ZB_ZCL_ATTR_TYPE_S16 = 0x29,
  ZB_ZCL_ATTR_TYPE_S24 = 0x2a, ZB_ZCL_ATTR_TYPE_S32 = 0x2b, ZB_ZCL_ATTR_TYPE_S48 = 0x2d, ZB_ZCL_ATTR_TYPE_S56 = 0x2e,
  ZB_ZCL_ATTR_TYPE_S64 = 0x2f, ZB_ZCL_ATTR_TYPE_8BIT_ENUM = 0x30, ZB_ZCL_ATTR_TYPE_16BIT_ENUM = 0x31, ZB_ZCL_ATTR_TYPE_OCTET_STRING = 0x41,
  ZB_ZCL_ATTR_TYPE_CHAR_STRING = 0x42, ZB_ZCL_ATTR_TYPE_LONG_OCTET_STRING = 0x43, ZB_ZCL_ATTR_TYPE_LONG_CHAR_STRING = 0x44, ZB_ZCL_ATTR_TYPE_ARRAY = 0x48,
  ZB_ZCL_ATTR_TYPE_IEEE_ADDR = 0xf0, ZB_ZCL_ATTR_TYPE_128_BIT_KEY = 0xf1, ZB_ZCL_ATTR_TYPE_UTC_TIME = 0xe2, ZB_ZCL_ATTR_TYPE_CUSTOM_32ARRAY = 0x4a,
  ZB_ZCL_ATTR_TYPE_INVALID = 0xff
}
 ZCL attribute data type values. More...
 
enum  zb_zcl_attr_access_e {
  ZB_ZCL_ATTR_ACCESS_READ_ONLY = 0x01, ZB_ZCL_ATTR_ACCESS_WRITE_ONLY = 0x02, ZB_ZCL_ATTR_ACCESS_READ_WRITE = ZB_ZCL_ATTR_ACCESS_READ_ONLY | ZB_ZCL_ATTR_ACCESS_WRITE_ONLY, ZB_ZCL_ATTR_ACCESS_REPORTING = 0x04,
  ZB_ZCL_ATTR_ACCESS_WRITE_OPTIONAL = ZB_ZCL_ATTR_ACCESS_READ_ONLY, ZB_ZCL_ATTR_ACCESS_SINGLETON = 0x08, ZB_ZCL_ATTR_ACCESS_SCENE = 0x10, ZB_ZCL_ATTR_MANUF_SPEC = 0x20,
  ZB_ZCL_ATTR_ACCESS_INTERNAL = 0x40
}
 ZCL attribute access values. More...
 
enum  zb_zcl_attr_global_e { ZB_ZCL_ATTR_GLOBAL_CLUSTER_REVISION_ID = 0xfffd, ZB_ZCL_ATTR_GLOBAL_ATTRIBUTE_REPORTING_STATUS_ID = 0xfffe }
 ZCL 6.0: Global attributes that are included to each cluster. More...
 

Functions

static ZB_INLINE zb_uint16_t zb_zcl_string_append_data (zb_uint8_t *zcl_str, zb_uint8_t zcl_str_max_size, const zb_uint8_t *c_str, zb_uint8_t c_str_len)
 
static ZB_INLINE zb_uint16_t zb_zcl_string_append_byte (zb_uint8_t *zcl_str, zb_uint8_t zcl_str_max_size, zb_uint8_t value)
 

Detailed Description

Types and macros shared among all attributes' definitions.

Example
Use ZB_ZCL_SET_ATTRIBUTE
static zb_void_t set_on_off_off(zb_uint8_t param)
{
ZVUNUSED(param);
TRACE_MSG(TRACE_ZCL3, "Setting OnOff.OnOff OFF", (FMT__0));
HA_OUTPUT_ENDPOINT,
&value,
}
For more information see 5.6.3_scenes and other HA samples

Macro Definition Documentation

#define ZB_ZCL_GET_ATTRIBUTE_VAL_16 (   attr_desc)    (*(zb_uint16_t*)attr_desc->data_p)

Get 16-bit unsigned attribute value (without any check)

#define ZB_ZCL_GET_ATTRIBUTE_VAL_32 (   attr_desc)    (*(zb_uint32_t*)attr_desc->data_p)

Get 32-bit unsigned attribute value (without any check)

#define ZB_ZCL_GET_ATTRIBUTE_VAL_8 (   attr_desc)    (*(zb_uint8_t*)attr_desc->data_p)

Get 8-bit unsigned attribute value (without any check)

#define ZB_ZCL_GET_ATTRIBUTE_VAL_S16 (   attr_desc)    (*(zb_int16_t*)attr_desc->data_p)

Get 16-bit signed attribute value (without any check)

#define ZB_ZCL_GET_ATTRIBUTE_VAL_S32 (   attr_desc)    (*(zb_int32_t*)attr_desc->data_p)

Get 32-bit unsigned attribute value (without any check)

#define ZB_ZCL_GET_ATTRIBUTE_VAL_S8 (   attr_desc)    (*(zb_int8_t*)attr_desc->data_p)

Get 8-bit signed attribute value (without any check)

#define ZB_ZCL_GET_STRING_BEGIN (   _str)    (&((_str)[1]))

Get pointer to first char in the string.

#define ZB_ZCL_GET_STRING_CHAR_AT (   _str,
  _pos 
)    *ZB_ZCL_GET_STRING_REF_AT(_str, _pos)

Get char by specified pos.

#define ZB_ZCL_GET_STRING_END (   _str)    (ZB_ZCL_GET_STRING_BEGIN(_str) + ZB_ZCL_GET_STRING_LENGTH(_str))

Get pointer to (begin + length) char in the string.

#define ZB_ZCL_GET_STRING_REF_AT (   _str,
  _pos 
)    (ZB_ZCL_GET_STRING_BEGIN(_str) + _pos)

Get pointer to char in string at specified pos.

#define ZB_ZCL_SET_ATTRIBUTE (   ep,
  cluster_id,
  cluster_role,
  attr_id,
  value_ptr,
  check_access 
)

Sets attribute value, perform all needed checks before and after setting new value, including read-only check and marking for reporting.

Parameters
ep- end point number.
cluster_id- cluster identifier.
cluster_role- role (see zb_zcl_cluster_role_e)
attr_id- attribute identifier.
value_ptr- pointer to new attribute value.
check_access- boolean flag to specify if to perform access check or not.
#define ZB_ZCL_SET_DIRECTLY_ATTR_VAL16 (   attr_desc,
  value 
)

Set attribute 16-bit value without any check. Use this macro on your own risk, if and only if you are absolutely shure that no check for Access rights, Reporting and attribute type is needed.

Parameters
attr_desc- pointer to an attribute description structure zb_zcl_attr_s.
value- 16-bit value to be set.
#define ZB_ZCL_SET_DIRECTLY_ATTR_VAL32 (   attr_desc,
  value 
)

Set attribute 32-bit value without any check. Use this macro on your own risk, if and only if you are absolutely shure that no check for Access rights, Reporting and attribute type is needed.

Parameters
attr_desc- pointer to an attribute description structure zb_zcl_attr_s.
value- 32-bit value to be set.
#define ZB_ZCL_SET_DIRECTLY_ATTR_VAL8 (   attr_desc,
  value 
)

Set attribute 8-bit value without any check. Use this macro on your own risk, if and only if you are absolutely shure that no check for Access rights, Reporting and attribute type is needed.

Parameters
attr_desc- pointer to an attribute description structure zb_zcl_attr_s.
value- 8-bit value to be set.
#define ZB_ZCL_STATIC_STRING_APPEND_C_STR (   _zcl_s_str,
  _c_str 
)    ZB_ZCL_STRING_APPEND_C_STR((zb_uint8_t *) _zcl_s_str, sizeof(_zcl_s_str), _c_str)

Append C-string to ZCL static string.

#define ZB_ZCL_STATIC_STRING_APPEND_CHAR (   _zcl_s_str,
  _char 
)    zb_zcl_string_append_byte(_zcl_s_str, sizeof(_zcl_s_str), (zb_uint8_t) _char)

Append char to ZCL static string.

#define ZB_ZCL_STRING_APPEND_C_STR (   _zcl_str,
  _zcl_str_max_size,
  _c_str 
)    zb_zcl_string_append_data(_zcl_str, _zcl_str_max_size, (const zb_uint8_t *) _c_str, strlen(_c_str))

Append C-string to ZCL string.

#define ZB_ZCL_STRING_CLEAR (   _str)    (_str[0] = 0)

Set size of ZCL Octet String into 0 .

#define ZB_ZCL_STRING_TO_C_STRING (   _str)
Value:
{ \
zb_uint8_t _len = _str[0]; \
ZB_MEMMOVE(_str, _str + 1, _len); \
_str[_len] = 0; \
}
unsigned char zb_uint8_t
Project-local 1-byte unsigned int type.
Definition: zb_types.h:116

Turn ZCL Octet string into string with null-term.

Typedef Documentation

ZCL attribute data type values.

Note
The enumeration is not full, and does not contain ZCL types not used in HA profile.
See also
ZCL spec., subclause 2.5.2, Table 2-10. Data Types

Enumeration Type Documentation

ZCL attribute access values.

Enumerator
ZB_ZCL_ATTR_ACCESS_WRITE_ONLY 

Attribute is read/write

ZB_ZCL_ATTR_ACCESS_READ_WRITE 

Attribute is read/write

ZB_ZCL_ATTR_ACCESS_REPORTING 

Attribute is allowed for reporting

ZB_ZCL_ATTR_ACCESS_WRITE_OPTIONAL 

Attribute is read/write

ZB_ZCL_ATTR_ACCESS_SINGLETON 

Attribute is singleton

ZB_ZCL_ATTR_ACCESS_SCENE 

Attribute is accessed through scene

ZB_ZCL_ATTR_MANUF_SPEC 

Attribute is manufacturer specific

ZB_ZCL_ATTR_ACCESS_INTERNAL 

ZBOSS Internal accsess only Attribute

ZCL 6.0: Global attributes that are included to each cluster.

Enumerator
ZB_ZCL_ATTR_GLOBAL_CLUSTER_REVISION_ID 

Cluster revision

ZB_ZCL_ATTR_GLOBAL_ATTRIBUTE_REPORTING_STATUS_ID 

Attribute reporting status

ZCL attribute data type values.

Note
The enumeration is not full, and does not contain ZCL types not used in HA profile.
See also
ZCL spec., subclause 2.5.2, Table 2-10. Data Types
Enumerator
ZB_ZCL_ATTR_TYPE_NULL 

Null data type

ZB_ZCL_ATTR_TYPE_8BIT 

8-bit value data type

ZB_ZCL_ATTR_TYPE_16BIT 

16-bit value data type

ZB_ZCL_ATTR_TYPE_24BIT 

24-bit value data type

ZB_ZCL_ATTR_TYPE_32BIT 

32-bit value data type

ZB_ZCL_ATTR_TYPE_40BIT 

40-bit value data type

ZB_ZCL_ATTR_TYPE_48BIT 

48-bit value data type

ZB_ZCL_ATTR_TYPE_56BIT 

56-bit value data type

ZB_ZCL_ATTR_TYPE_64BIT 

64-bit value data type

ZB_ZCL_ATTR_TYPE_BOOL 

Boolean data type

ZB_ZCL_ATTR_TYPE_8BITMAP 

8-bit bitmap data type

ZB_ZCL_ATTR_TYPE_16BITMAP 

16-bit bitmap data type

ZB_ZCL_ATTR_TYPE_24BITMAP 

24-bit bitmap data type

ZB_ZCL_ATTR_TYPE_32BITMAP 

32-bit bitmap data type

ZB_ZCL_ATTR_TYPE_40BITMAP 

40-bit bitmap data type

ZB_ZCL_ATTR_TYPE_48BITMAP 

48-bit bitmap data type

ZB_ZCL_ATTR_TYPE_56BITMAP 

56-bit bitmap data type

ZB_ZCL_ATTR_TYPE_64BITMAP 

64-bit bitmap data type

ZB_ZCL_ATTR_TYPE_U8 

Unsigned 8-bit value data type

ZB_ZCL_ATTR_TYPE_U16 

Unsigned 16-bit value data type

ZB_ZCL_ATTR_TYPE_U24 

Unsigned 24-bit value data type

ZB_ZCL_ATTR_TYPE_U32 

Unsigned 32-bit value data type

ZB_ZCL_ATTR_TYPE_U40 

Signed 40-bit value data type

ZB_ZCL_ATTR_TYPE_U48 

Unsigned 48-bit value data type

ZB_ZCL_ATTR_TYPE_U56 

Unsigned 56-bit value data type

ZB_ZCL_ATTR_TYPE_U64 

Unsigned 64-bit value data type

ZB_ZCL_ATTR_TYPE_S8 

Signed 8-bit value data type

ZB_ZCL_ATTR_TYPE_S16 

Signed 16-bit value data type

ZB_ZCL_ATTR_TYPE_S24 

Signed 24-bit value data type

ZB_ZCL_ATTR_TYPE_S32 

Signed 32-bit value data type

ZB_ZCL_ATTR_TYPE_S48 

Signed 48-bit value data type

ZB_ZCL_ATTR_TYPE_S56 

Signed 56-bit value data type

ZB_ZCL_ATTR_TYPE_S64 

Signed 64-bit value data type

ZB_ZCL_ATTR_TYPE_8BIT_ENUM 

8-bit enumeration (U8 discrete) data type

ZB_ZCL_ATTR_TYPE_16BIT_ENUM 

16-bit enumeration (U16 discrete) data type

ZB_ZCL_ATTR_TYPE_OCTET_STRING 

Octet string data type,

ZB_ZCL_ATTR_TYPE_CHAR_STRING 

Charactery string (array) data type

ZB_ZCL_ATTR_TYPE_LONG_OCTET_STRING 

Long octet string

ZB_ZCL_ATTR_TYPE_LONG_CHAR_STRING 

Long character string

ZB_ZCL_ATTR_TYPE_ARRAY 

Array data type

ZB_ZCL_ATTR_TYPE_IEEE_ADDR 

IEEE address (U64) type

ZB_ZCL_ATTR_TYPE_128_BIT_KEY 

128-bit security key

ZB_ZCL_ATTR_TYPE_UTC_TIME 

UTC Time type

ZB_ZCL_ATTR_TYPE_CUSTOM_32ARRAY 

Custom array of 32 elems data type (now is equal to ZB_ZCL_ATTR_TYPE_ARRAY)

ZB_ZCL_ATTR_TYPE_INVALID 

Invalid data type

Function Documentation

static ZB_INLINE zb_uint16_t zb_zcl_string_append_byte ( zb_uint8_t zcl_str,
zb_uint8_t  zcl_str_max_size,
zb_uint8_t  value 
)
static

Add signle byte to ZCL Octet String.

static ZB_INLINE zb_uint16_t zb_zcl_string_append_data ( zb_uint8_t zcl_str,
zb_uint8_t  zcl_str_max_size,
const zb_uint8_t c_str,
zb_uint8_t  c_str_len 
)
static

Add some data to ZCL Octet String.


Documentation feedback | Developer Zone | Subscribe | Updated