General Enumerations

Addressing Modes (teZCL_AddressMode)

The following enumerations are used to specify the addressing mode to be used in a communication with a remote node:

typedef enum
{
    E_ZCL_AM_BOUND,
    E_ZCL_AM_GROUP,
    E_ZCL_AM_SHORT,
    E_ZCL_AM_IEEE,
    E_ZCL_AM_BROADCAST,
    E_ZCL_AM_NO_TRANSMIT,
    E_ZCL_AM_BOUND_NO_ACK,
    E_ZCL_AM_SHORT_NO_ACK,
    E_ZCL_AM_IEEE_NO_ACK,
    E_ZCL_AM_BOUND_NON_BLOCKING,
    E_ZCL_AM_BOUND_NON_BLOCKING_NO_ACK,
    E_ZCL_AM_ENUM_END, /* enum End */
} teZCL_AddressMode;

The above enumerations are described in the table below.

Enumeration

Description

E_ZCL_AM_BOUND

Use one or more bound nodes/endpoints, with acknowledgments

E_ZCL_AM_GROUP

Use a pre-defined group address, with acknowledgments

E_ZCL_AM_SHORT

Use a 16-bit network address, with acknowledgments

E_ZCL_AM_IEEE

Use a 64-bit IEEE/MAC address, with acknowledgments

E_ZCL_AM_BROADCAST

Perform a broadcast (see Section 7.1.2)

E_ZCL_AM_NO_TRANSMIT

Do not transmit

E_ZCL_AM_BOUND_NO_ACK

Perform a bound transmission, with no acknowledgments

E_ZCL_AM_SHORT_NO_ACK

Perform a transmission using a 16-bit network address, with no acknowledgments

E_ZCL_AM_IEEE_NO_ACK

Perform a transmission using a 64-bit IEEE/MAC address, with no acknowledgments

E_ZCL_AM_BOUND_NON_BLOCKING

Perform a non-blocking bound transmission, with acknowledgments

E_ZCL_AM_BOUND_NON_BLOCKING_NO_ACK

Perform a non-blocking bound transmission, with no acknowledgments

The required addressing mode is specified in the structure tsZCL_Address (see Section 6.1.4).

Parent topic:General Enumerations

Broadcast Modes (ZPS_teAplAfBroadcastMode)

The following enumerations are used to specify the type of broadcast (when the addressing mode for a communication has been set to E_ZCL_AM_BROADCAST (see Section 7.1.1)):

typedef enum 
{
    ZPS_E_APL_AF_BROADCAST_ALL,
    ZPS_E_APL_AF_BROADCAST_RX_ON,
    ZPS_E_APL_AF_BROADCAST_ZC_ZR
} ZPS_teAplAfBroadcastMode;

The above enumerations are described in the table below.

Enumeration

Description

ZPS_E_APL_AF_BROADCAST_ALL

All End Devices

ZPS_E_APL_AF_BROADCAST_RX_ON

Nodes on which the radio receiver remains enabled when the node is idle (e.g. sleeping)

ZPS_E_APL_AF_BROADCAST_ZC_ZR

Only the Coordinator and Routers

The required broadcast mode is specified in the structure tsZCL_Address (see Section 6.1.4).

Parent topic:General Enumerations

Attribute Types (teZCL_ZCLAttributeType)

The following enumerations are used to represent the attribute types in the/ZCL clusters:

typedef enum 
{
    /* Null */
    E_ZCL_NULL            = 0x00,
    /* General Data */
    E_ZCL_GINT8           = 0x08,              // General 8 bit - not specified if signed
    E_ZCL_GINT16,
    E_ZCL_GINT24,
    E_ZCL_GINT32,
    E_ZCL_GINT40,
    E_ZCL_GINT48,
    E_ZCL_GINT56,
    E_ZCL_GINT64,
    /* Logical */
    E_ZCL_BOOL            = 0x10,
    /* Bitmap */
    E_ZCL_BMAP8           = 0x18,              // 8 bit bitmap
    E_ZCL_BMAP16,
    E_ZCL_BMAP24,
    E_ZCL_BMAP32,
    E_ZCL_BMAP40,
    E_ZCL_BMAP48,
    E_ZCL_BMAP56,
    E_ZCL_BMAP64,
    /* Unsigned Integer */
    E_ZCL_UINT8           = 0x20,              // Unsigned 8 bit
    E_ZCL_UINT16,
    E_ZCL_UINT24,
    E_ZCL_UINT32,
    E_ZCL_UINT40,
    E_ZCL_UINT48,
    E_ZCL_UINT56,
    E_ZCL_UINT64,
    /* Signed Integer */
    E_ZCL_INT8            = 0x28,           // Signed 8 bit
    E_ZCL_INT16,
    E_ZCL_INT24,
    E_ZCL_INT32,
    E_ZCL_INT40,
    E_ZCL_INT48,
    E_ZCL_INT56,
    E_ZCL_INT64,
    /* Enumeration */
    E_ZCL_ENUM8           = 0x30,           // 8 Bit enumeration
    E_ZCL_ENUM16,
    /* Floating Point */
    E_ZCL_FLOAT_SEMI      = 0x38,       // Semi precision
    E_ZCL_FLOAT_SINGLE,                // Single precision
    E_ZCL_FLOAT_DOUBLE,                 // Double precision
    /* String */
    E_ZCL_OSTRING         = 0x41,        // Octet string
    E_ZCL_CSTRING,                  // Character string
    E_ZCL_LOSTRING,                     // Long octet string
    E_ZCL_LCSTRING,                   // Long character string
    /* Ordered Sequence */
    E_ZCL_ARRAY           = 0x48,
    E_ZCL_STRUCT          = 0x4c,
    E_ZCL_SET             = 0x50,
    E_ZCL_BAG             = 0x51,
    /* Time */
    E_ZCL_TOD             = 0xe0,            // Time of day
    E_ZCL_DATE,                              // Date
    E_ZCL_UTCT,                              // UTC Time
    /* Identifier */
    E_ZCL_CLUSTER_ID      = 0xe8,          // Cluster ID
    E_ZCL_ATTRIBUTE_ID,                  // Attribute ID
    E_ZCL_BACNET_OID,                    // BACnet OID
    /* Miscellaneous */
    E_ZCL_IEEE_ADDR       = 0xf0,        // 64 Bit IEEE Address
    E_ZCL_KEY_128,                   // 128 Bit security key
    /* Unknown */
    E_ZCL_UNKNOWN         = 0xff
} teZCL_ZCLAttributeType;

Parent topic:General Enumerations

Command Status (teZCL_CommandStatus)

The following enumerations are used to indicate the status of a command:

typedef enum 
{
    E_ZCL_CMDS_SUCCESS =0x00,
    E_ZCL_CMDS_FAILURE,
    E_ZCL_CMDS_NOT_AUTHORIZED =0x7e,
    E_ZCL_CMDS_RESERVED_FIELD_NOT_ZERO,
    E_ZCL_CMDS_MALFORMED_COMMAND =0x80,
    E_ZCL_CMDS_UNSUP_CLUSTER_COMMAND,
    E_ZCL_CMDS_UNSUP_GENERAL_COMMAND,
    E_ZCL_CMDS_UNSUP_MANUF_CLUSTER_COMMAND,
    E_ZCL_CMDS_UNSUP_MANUF_GENERAL_COMMAND,
    E_ZCL_CMDS_INVALID_FIELD,
    E_ZCL_CMDS_UNSUPPORTED_ATTRIBUTE,
    E_ZCL_CMDS_INVALID_VALUE,
    E_ZCL_CMDS_READ_ONLY,
    E_ZCL_CMDS_INSUFFICIENT_SPACE,
    E_ZCL_CMDS_DUPLICATE_EXISTS,
    E_ZCL_CMDS_NOT_FOUND,
    E_ZCL_CMDS_UNREPORTABLE_ATTRIBUTE,
    E_ZCL_CMDS_INVALID_DATA_TYPE,
    E_ZCL_CMDS_INVALID_SELECTOR,
    E_ZCL_CMDS_WRITE_ONLY,
    E_ZCL_CMDS_INCONSISTENT_STARTUP_STATE,
    E_ZCL_CMDS_DEFINED_OUT_OF_BAND,
    E_ZCL_CMDS_INCONSISTENT,
    E_ZCL_CMDS_ACTION_DENIED,
    E_ZCL_CMDS_TIMEOUT,
    E_ZCL_CMDS_HARDWARE_FAILURE =0xc0,
    E_ZCL_CMDS_SOFTWARE_FAILURE,
    E_ZCL_CMDS_CALIBRATION_ERROR,
    E_ZCL_CMDS_UNSUPPORTED_CLUSTER,
    E_ZCL_CMDS_ENUM_END
} teZCL_CommandStatus;

The above enumerations are described in the table below.

Enumeration

Description

E_ZCL_CMDS_SUCCESS

Command was successful

E_ZCL_CMDS_FAILURE

Command was unsuccessful

E_ZCL_CMDS_NOT_AUTHORIZED

Sender does not have authorisation to issue the command

E_ZCL_CMDS_RESERVED_FIELD_NOT_ZERO

A reserved field of command is not set to zero

E_ZCL_CMDS_MALFORMED_COMMAND

Command has missing fields or invalid field values

E_ZCL_CMDS_UNSUP_CLUSTER_COMMAND

The specified cluster has not been registered with the ZCL on the device

E_ZCL_CMDS_UNSUP_GENERAL_COMMAND

Command does not have a handler enabled in the zcl_options.h file

E_ZCL_CMDS_UNSUP_MANUF_CLUSTER_COMMAND

Manufacturer-specific cluster command is not sup-ported or has unknown manufacturer code

E_ZCL_CMDS_UNSUP_MANUF_GENERAL_COMMAND

Manufacturer-specific ZCL command is not sup-ported or has unknown manufacturer code

E_ZCL_CMDS_INVALID_FIELD

Command has field which contains invalid value

E_ZCL_CMDS_UNSUPPORTED_ATTRIBUTE

Specified attribute is not supported on the device

E_ZCL_CMDS_INVALID_VALUE

Specified attribute value is out of range or a reserved value

E_ZCL_CMDS_READ_ONLY

Attempt to write to read-only attribute

E_ZCL_CMDS_INSUFFICIENT_SPACE

Not enough memory space to perform requested operation

E_ZCL_CMDS_DUPLICATE_EXISTS

Attempt made to create a table entry that already exists in the target table

E_ZCL_CMDS_NOT_FOUND

Requested information cannot be found

E_ZCL_CMDS_UNREPORTABLE_ATTRIBUTE

Periodic reports cannot be produced for this attribute

E_ZCL_CMDS_INVALID_DATA_TYPE

Invalid data type specified for attribute

E_ZCL_CMDS_INVALID_SELECTOR

Incorrect selector for this attribute

E_ZCL_CMDS_WRITE_ONLY

Issuer of command does not have authorisation to read specified attribute

E_ZCL_CMDS_INCONSISTENT_STARTUP_STATE

Setting the specified values would put device into an inconsistent state on start-up

E_ZCL_CMDS_DEFINED_OUT_OF_BAND

Attempt has been made to write to attribute using an out-of-band method or not over-air

E_ZCL_CMDS_HARDWARE_FAILURE

Command was unsuccessful due to hardware failure

E_ZCL_CMDS_SOFTWARE_FAILURE

Command was unsuccessful due to software failure

E_ZCL_CMDS_CALIBRATION_ERROR

Error occurred during calibration

E_ZCL_CMDS_UNSUPPORTED_CLUSTER

The cluster is not supported

Parent topic:General Enumerations

Report Attribute Status (teZCL_ReportAttributeStatus)

The following enumerations are used to indicate the status of a report attribute command.

typedef enum 
{
    E_ZCL_ATTR_REPORT_OK = 0x00,
    E_ZCL_ATTR_REPORT_EP_MISMATCH,
    E_ZCL_ATTR_REPORT_ADDR_MISMATCH,
    E_ZCL_ATTR_REPORT_ERR
} teZCL_ReportAttributeStatus;

The above enumerations are described in the table below.

Enumeration

Description

E_ZCL_ATTR_REPORT_OK

Indicates that report is valid

E_ZCL_ATTR_REPORT_EP_MISMATCH

Indicates that source endpoint does not match endpoint in mirror

E_ZCL_ATTR_REPORT_ADDR_MISMATCH

Indicates that source address does not match address in mirror

E_ZCL_ATTR_REPORT_ERR

Indicates that there is an error in the report

Parent topic:General Enumerations

Security Level (teZCL_ZCLSendSecurity)

The following enumerations are used to indicate the security level for transmissions:

typedef enum 
{
    E_ZCL_SECURITY_NETWORK = 0x00,
    E_ZCL_SECURITY_APPLINK,
    E_ZCL_SECURITY_TEMP_APPLINK,
    E_ZCL_SECURITY_ENUM_END
} teZCL_ZCLSendSecurity;

The above enumerations are described in the table below.

Enumeration

Description

E_ZCL_SECURITY_NETWORK

Network-level security, using a network key

E_ZCL_SECURITY_APPLINK

Application-level security, using an application link key

E_ZCL_SECURITY_TEMP_APPLINK

Temporary application-level security. This option is for internal use only. This is used for situations in which an application link key is to be used temporarily. For example, it can be used for an individual communication.

Parent topic:General Enumerations

Parent topic:Enumerations and Status Codes