Developing with ZBOSS for Zigbee
|
Types and macros shared among all attributes' definitions.Use ZB_ZCL_SET_ATTRIBUTE. More...
Data Structures | |
struct | zb_zcl_attr_s |
ZCL attribute definition 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_CLUSTER_REVISION_DEFAULT 1 |
ZCL 6.0: Default value for cluster revision global attribute, see zcl_attr_global. | |
#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 sure 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 sure 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 sure 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) |
#define | ZB_ZCL_GET_ATTRIBUTE_VAL_SINGLE(attr_desc) (*(zb_single_t*)attr_desc->data_p) |
Typedefs | |
typedef zb_uint8_t | zb_zcl_attr_type_t |
Type for ZCL attribute data type values. More... | |
typedef zb_uint8_t | zb_zcl_attr_access_t |
Type for possible values of ZCL attribute access values. More... | |
typedef struct zb_zcl_attr_s | zb_zcl_attr_t |
ZCL attribute definition structure. | |
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) |
ZCL attribute access values | |
#define | ZB_ZCL_ATTR_ACCESS_READ_ONLY 0x01U |
#define | ZB_ZCL_ATTR_ACCESS_WRITE_ONLY 0x02U |
#define | ZB_ZCL_ATTR_ACCESS_READ_WRITE (ZB_ZCL_ATTR_ACCESS_READ_ONLY | ZB_ZCL_ATTR_ACCESS_WRITE_ONLY) |
#define | ZB_ZCL_ATTR_ACCESS_REPORTING 0x04U |
#define | ZB_ZCL_ATTR_ACCESS_SINGLETON 0x08U |
#define | ZB_ZCL_ATTR_ACCESS_SCENE 0x10U |
#define | ZB_ZCL_ATTR_MANUF_SPEC 0x20U |
#define | ZB_ZCL_ATTR_ACCESS_INTERNAL 0x40U |
Global attributes that are included to each cluster | |
| |
#define | ZB_ZCL_ATTR_GLOBAL_CLUSTER_REVISION_ID 0xfffdU |
#define | ZB_ZCL_ATTR_GLOBAL_ATTRIBUTE_REPORTING_STATUS_ID 0xfffeU |
Types and macros shared among all attributes' definitions.
Use ZB_ZCL_SET_ATTRIBUTE.
#define ZB_ZCL_ATTR_ACCESS_INTERNAL 0x40U |
ZBOSS Internal access only Attribute
#define ZB_ZCL_ATTR_ACCESS_READ_WRITE (ZB_ZCL_ATTR_ACCESS_READ_ONLY | ZB_ZCL_ATTR_ACCESS_WRITE_ONLY) |
Attribute is read/write
#define ZB_ZCL_ATTR_ACCESS_REPORTING 0x04U |
Attribute is allowed for reporting
#define ZB_ZCL_ATTR_ACCESS_SCENE 0x10U |
Attribute is accessed through scene
#define ZB_ZCL_ATTR_ACCESS_SINGLETON 0x08U |
Attribute is singleton
#define ZB_ZCL_ATTR_ACCESS_WRITE_ONLY 0x02U |
Attribute is write only
#define ZB_ZCL_ATTR_GLOBAL_ATTRIBUTE_REPORTING_STATUS_ID 0xfffeU |
Attribute reporting status
#define ZB_ZCL_ATTR_GLOBAL_CLUSTER_REVISION_ID 0xfffdU |
Cluster revision
#define ZB_ZCL_ATTR_MANUF_SPEC 0x20U |
Attribute is manufacturer specific
#define ZB_ZCL_ATTR_TYPE_128_BIT_KEY 0xf1U |
128-bit security key
#define ZB_ZCL_ATTR_TYPE_16BIT 0x09U |
16-bit value data type
#define ZB_ZCL_ATTR_TYPE_16BIT_ENUM 0x31U |
16-bit enumeration (U16 discrete) data type
#define ZB_ZCL_ATTR_TYPE_16BITMAP 0x19U |
16-bit bitmap data type
#define ZB_ZCL_ATTR_TYPE_24BIT 0x0aU |
24-bit value data type
#define ZB_ZCL_ATTR_TYPE_24BITMAP 0x1aU |
24-bit bitmap data type
#define ZB_ZCL_ATTR_TYPE_32BIT 0x0bU |
32-bit value data type
#define ZB_ZCL_ATTR_TYPE_32BITMAP 0x1bU |
32-bit bitmap data type
#define ZB_ZCL_ATTR_TYPE_40BIT 0x0cU |
40-bit value data type
#define ZB_ZCL_ATTR_TYPE_40BITMAP 0x1cU |
40-bit bitmap data type
#define ZB_ZCL_ATTR_TYPE_48BIT 0x0dU |
48-bit value data type
#define ZB_ZCL_ATTR_TYPE_48BITMAP 0x1dU |
48-bit bitmap data type
#define ZB_ZCL_ATTR_TYPE_56BIT 0x0eU |
56-bit value data type
#define ZB_ZCL_ATTR_TYPE_56BITMAP 0x1eU |
56-bit bitmap data type
#define ZB_ZCL_ATTR_TYPE_64BIT 0x0fU |
64-bit value data type
#define ZB_ZCL_ATTR_TYPE_64BITMAP 0x1fU |
64-bit bitmap data type
#define ZB_ZCL_ATTR_TYPE_8BIT 0x08U |
8-bit value data type
#define ZB_ZCL_ATTR_TYPE_8BIT_ENUM 0x30U |
8-bit enumeration (U8 discrete) data type
#define ZB_ZCL_ATTR_TYPE_8BITMAP 0x18U |
8-bit bitmap data type
#define ZB_ZCL_ATTR_TYPE_ARRAY 0x48U |
Array data type 2 + sum of content len
#define ZB_ZCL_ATTR_TYPE_ATTRIBUTE_ID 0xe9U |
Attribute ID, 2 bytes
#define ZB_ZCL_ATTR_TYPE_BACNET_OID 0xeaU |
BACnet OID, 4 bytes
#define ZB_ZCL_ATTR_TYPE_BAG 0x51U |
Collection:bag, size = sum of len of content
#define ZB_ZCL_ATTR_TYPE_BOOL 0x10U |
Boolean data type
#define ZB_ZCL_ATTR_TYPE_CHAR_STRING 0x42U |
Character string (array) data type
#define ZB_ZCL_ATTR_TYPE_CLUSTER_ID 0xe8U |
Cluster ID, 2 bytes
#define ZB_ZCL_ATTR_TYPE_CUSTOM_32ARRAY 0x4aU |
Custom array of 32 elems data type (now is equal to ZB_ZCL_ATTR_TYPE_ARRAY)
#define ZB_ZCL_ATTR_TYPE_DATE 0xe1U |
Date, 4 bytes
#define ZB_ZCL_ATTR_TYPE_DOUBLE 0x3aU |
8 byte floating point
#define ZB_ZCL_ATTR_TYPE_IEEE_ADDR 0xf0U |
IEEE address (U64) type
#define ZB_ZCL_ATTR_TYPE_INVALID 0xffU |
Invalid data type
#define ZB_ZCL_ATTR_TYPE_LONG_CHAR_STRING 0x44U |
Long character string
#define ZB_ZCL_ATTR_TYPE_LONG_OCTET_STRING 0x43U |
Long octet string
#define ZB_ZCL_ATTR_TYPE_NULL 0x00U |
Null data type
#define ZB_ZCL_ATTR_TYPE_OCTET_STRING 0x41U |
Octet string data type
#define ZB_ZCL_ATTR_TYPE_S16 0x29U |
Signed 16-bit value data type
#define ZB_ZCL_ATTR_TYPE_S24 0x2aU |
Signed 24-bit value data type
#define ZB_ZCL_ATTR_TYPE_S32 0x2bU |
Signed 32-bit value data type
#define ZB_ZCL_ATTR_TYPE_S40 0x2cU |
Signed 40-bit value data type
#define ZB_ZCL_ATTR_TYPE_S48 0x2dU |
Signed 48-bit value data type
#define ZB_ZCL_ATTR_TYPE_S56 0x2eU |
Signed 56-bit value data type
#define ZB_ZCL_ATTR_TYPE_S64 0x2fU |
Signed 64-bit value data type
#define ZB_ZCL_ATTR_TYPE_S8 0x28U |
Signed 8-bit value data type
#define ZB_ZCL_ATTR_TYPE_SEMI 0x38U |
2 byte floating point
#define ZB_ZCL_ATTR_TYPE_SET 0x50U |
Collection:set, size = sum of len of content
#define ZB_ZCL_ATTR_TYPE_SINGLE 0x39U |
4 byte floating point
#define ZB_ZCL_ATTR_TYPE_STRUCTURE 0x4cU |
Structure data type 2 + sum of content len
#define ZB_ZCL_ATTR_TYPE_TIME_OF_DAY 0xe0U |
Time of day, 4 bytes
#define ZB_ZCL_ATTR_TYPE_U16 0x21U |
Unsigned 16-bit value data type
#define ZB_ZCL_ATTR_TYPE_U24 0x22U |
Unsigned 24-bit value data type
#define ZB_ZCL_ATTR_TYPE_U32 0x23U |
Unsigned 32-bit value data type
#define ZB_ZCL_ATTR_TYPE_U40 0x24U |
Unsigned 40-bit value data type
#define ZB_ZCL_ATTR_TYPE_U48 0x25U |
Unsigned 48-bit value data type
#define ZB_ZCL_ATTR_TYPE_U56 0x26U |
Unsigned 56-bit value data type
#define ZB_ZCL_ATTR_TYPE_U64 0x27U |
Unsigned 64-bit value data type
#define ZB_ZCL_ATTR_TYPE_U8 0x20U |
Unsigned 8-bit value data type
#define ZB_ZCL_ATTR_TYPE_UTC_TIME 0xe2U |
UTC Time, 4 bytes
#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_ATTRIBUTE_VAL_SINGLE | ( | attr_desc | ) | (*(zb_single_t*)attr_desc->data_p) |
Get 32-bit unsigned 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.
ep | - end point number. |
cluster_id | - cluster identifier. |
cluster_role | - role (see zcl_cluster_role) |
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 sure that no check for Access rights, Reporting and attribute type is needed.
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 sure that no check for Access rights, Reporting and attribute type is needed.
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 sure that no check for Access rights, Reporting and attribute type is needed.
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 | ) |
Turn ZCL Octet string into string with null-term.
typedef zb_uint8_t zb_zcl_attr_access_t |
Type for possible values of ZCL attribute access values.
Holds one of zcl_attr_access. Kept for backward compatibility as zcl_attr_access were declared previously as enum.
typedef zb_uint8_t zb_zcl_attr_type_t |
Type for ZCL attribute data type values.
|
static |
Add single byte to ZCL Octet String.
|
static |
Add some data to ZCL Octet String.