Ember data type definitions.
See Ember ZigBee Light Link (ZLL) Data Types for details.
License#
Copyright 2018 Silicon Laboratories Inc. www.silabs.com
The licensor of this software is Silicon Laboratories Inc. Your use of this software is governed by the terms of Silicon Labs Master Software License Agreement (MSLA) available at www.silabs.com/about-us/legal/master-software-license-agreement. This software is distributed to you in Source Code format and is governed by the sections of the MSLA applicable to Source Code.
/***************************************************************************/
#ifndef SILABS_ZLL_TYPES_H
#define SILABS_ZLL_TYPES_H
#define EMBER_ZLL_PRIMARY_CHANNEL_MASK ((uint32_t)(BIT32(11) \
| BIT32(15) \
| BIT32(20) \
| BIT32(25)))
#define EMBER_ZLL_SECONDARY_CHANNEL_MASK ((uint32_t)(BIT32(12) \
| BIT32(13) \
| BIT32(14) \
| BIT32(16) \
| BIT32(17) \
| BIT32(18) \
| BIT32(19) \
| BIT32(21) \
| BIT32(22) \
| BIT32(23) \
| BIT32(24) \
| BIT32(26)))
#define EMBER_ZLL_NULL_NODE_ID 0x0000
#define EMBER_ZLL_MIN_NODE_ID 0x0001
#define EMBER_ZLL_MAX_NODE_ID 0xFFF7
#define EMBER_ZLL_NULL_GROUP_ID 0x0000
#define EMBER_ZLL_MIN_GROUP_ID 0x0001
#define EMBER_ZLL_MAX_GROUP_ID 0xFEFF
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberZllState
#else
typedef uint16_t EmberZllState;
enum
#endif
{
EMBER_ZLL_STATE_NONE = 0x0000,
EMBER_ZLL_STATE_FACTORY_NEW = 0x0001,
EMBER_ZLL_STATE_ADDRESS_ASSIGNMENT_CAPABLE = 0x0002,
EMBER_ZLL_STATE_LINK_INITIATOR = 0x0010,
EMBER_ZLL_STATE_LINK_PRIORITY_REQUEST = 0x0020,
EMBER_ZLL_STATE_PROFILE_INTEROP = 0x0080,
EMBER_ZLL_STATE_NON_ZLL_NETWORK = 0x0100,
EMBER_ZLL_TOKEN_POINTS_TO_PSA_ID = 0x0200,
};
typedef struct {
uint32_t transactionId;
uint32_t responseId;
uint16_t bitmask;
} EmberZllSecurityAlgorithmData;
typedef struct {
EmberZigbeeNetwork zigbeeNetwork;
EmberZllSecurityAlgorithmData securityAlgorithm;
EmberEUI64 eui64;
EmberNodeId nodeId;
EmberZllState state;
EmberNodeType nodeType;
uint8_t numberSubDevices;
uint8_t totalGroupIdentifiers;
uint8_t rssiCorrection;
} EmberZllNetwork;
typedef struct {
EmberEUI64 ieeeAddress;
uint8_t endpointId;
uint16_t profileId;
uint16_t deviceId;
uint8_t version;
uint8_t groupIdCount;
} EmberZllDeviceInfoRecord;
typedef struct {
EmberNodeId nodeId;
EmberNodeId freeNodeIdMin;
EmberNodeId freeNodeIdMax;
EmberMulticastId groupIdMin;
EmberMulticastId groupIdMax;
EmberMulticastId freeGroupIdMin;
EmberMulticastId freeGroupIdMax;
} EmberZllAddressAssignment;
#define EMBER_ZLL_CLUSTER_ID 0x1000
#define EMBER_ZLL_PROFILE_ID 0xC05E
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberZllKeyIndex
#else
typedef uint8_t EmberZllKeyIndex;
enum
#endif
{
EMBER_ZLL_KEY_INDEX_DEVELOPMENT = 0x00,
EMBER_ZLL_KEY_INDEX_MASTER = 0x04,
EMBER_ZLL_KEY_INDEX_CERTIFICATION = 0x0F,
};
#define EMBER_ZLL_KEY_MASK_DEVELOPMENT (1 << EMBER_ZLL_KEY_INDEX_DEVELOPMENT)
#define EMBER_ZLL_KEY_MASK_MASTER (1 << EMBER_ZLL_KEY_INDEX_MASTER)
#define EMBER_ZLL_KEY_MASK_CERTIFICATION (1 << EMBER_ZLL_KEY_INDEX_CERTIFICATION)
#define EMBER_ZLL_CERTIFICATION_ENCRYPTION_KEY \
{ 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, \
0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF }
#define EMBER_ZLL_CERTIFICATION_PRECONFIGURED_LINK_KEY \
{ 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, \
0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF }
typedef struct {
uint32_t bitmask;
EmberZllKeyIndex keyIndex;
EmberKeyData encryptionKey;
EmberKeyData preconfiguredKey;
} EmberZllInitialSecurityState;
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum EmberZllPolicy
#else
typedef uint8_t EmberZllPolicy;
enum
#endif
{
EMBER_ZLL_POLICY_DISABLED = 0x00,
EMBER_ZLL_POLICY_ENABLED = 0x01,
EMBER_ZLL_POLICY_TARGET = 0x02,
EMBER_ZLL_POLICY_STEALING_ENABLED = 0x04,
EMBER_ZLL_POLICY_REMOTE_RESET_ENABLED = 0x08,
};
typedef struct {
uint32_t bitmask;
uint16_t freeNodeIdMin;
uint16_t freeNodeIdMax;
uint16_t myGroupIdMin;
uint16_t freeGroupIdMin;
uint16_t freeGroupIdMax;
uint8_t rssiCorrection;
} EmberTokTypeStackZllData;
typedef struct {
uint32_t bitmask;
uint8_t keyIndex;
uint8_t encryptionKey[EMBER_ENCRYPTION_KEY_SIZE];
uint8_t preconfiguredKey[EMBER_ENCRYPTION_KEY_SIZE];
} EmberTokTypeStackZllSecurity;
#endif // SILABS_ZLL_TYPES_H
Modules#
ZigBee Light Link Types#
The list of primary ZLL channels.
The list of secondary ZLL channels.
A distinguished network identifier in the ZLL network address space that indicates no free network identifiers were assigned to the device.
The minimum network identifier in the ZLL network address space.
The maximum network identifier in the ZLL network address space.
A distinguished group identifier in the ZLL group address space that indicates no free group identifiers were assigned to the device.
The minimum group identifier in the ZLL group address space.
The maximum group identifier in the ZLL group address space.
The ZigBee Light Link Commissioning cluster ID.
The ZigBee Light Link Profile ID.
The key encryption bitmask corresponding to encryption key index EMBER_ZLL_KEY_INDEX_DEVELOPMENT.
The key encryption bitmask corresponding to encryption key index EMBER_ZLL_KEY_INDEX_MASTER.
THe key encryption bitmask corresponding to encryption key index EMBER_ZLL_KEY_INDEX_CERTIFICATION.
The encryption key for use during development and certification in conjunction with EMBER_ZLL_KEY_INDEX_CERTIFICATION.
The pre-configured link key for use during development and certification in conjunction with EMBER_ZLL_KEY_INDEX_CERTIFICATION.
A bitmask indicating the state of the ZLL device. This maps directly to the ZLL information field in the scan response.
The key encryption algorithms supported by the stack.
This enumeration indicates whether or not the stack processes ZLL messages.
ZigBee Light Link Types Documentation#
EMBER_ZLL_PRIMARY_CHANNEL_MASK#
#define EMBER_ZLL_PRIMARY_CHANNEL_MASKValue:
The list of primary ZLL channels.
38
of file stack/include/zll-types.h
EMBER_ZLL_SECONDARY_CHANNEL_MASK#
#define EMBER_ZLL_SECONDARY_CHANNEL_MASKValue:
The list of secondary ZLL channels.
46
of file stack/include/zll-types.h
EMBER_ZLL_NULL_NODE_ID#
#define EMBER_ZLL_NULL_NODE_IDValue:
0x0000
A distinguished network identifier in the ZLL network address space that indicates no free network identifiers were assigned to the device.
63
of file stack/include/zll-types.h
EMBER_ZLL_MIN_NODE_ID#
#define EMBER_ZLL_MIN_NODE_IDValue:
0x0001
The minimum network identifier in the ZLL network address space.
68
of file stack/include/zll-types.h
EMBER_ZLL_MAX_NODE_ID#
#define EMBER_ZLL_MAX_NODE_IDValue:
0xFFF7
The maximum network identifier in the ZLL network address space.
73
of file stack/include/zll-types.h
EMBER_ZLL_NULL_GROUP_ID#
#define EMBER_ZLL_NULL_GROUP_IDValue:
0x0000
A distinguished group identifier in the ZLL group address space that indicates no free group identifiers were assigned to the device.
79
of file stack/include/zll-types.h
EMBER_ZLL_MIN_GROUP_ID#
#define EMBER_ZLL_MIN_GROUP_IDValue:
0x0001
The minimum group identifier in the ZLL group address space.
84
of file stack/include/zll-types.h
EMBER_ZLL_MAX_GROUP_ID#
#define EMBER_ZLL_MAX_GROUP_IDValue:
0xFEFF
The maximum group identifier in the ZLL group address space.
89
of file stack/include/zll-types.h
EMBER_ZLL_CLUSTER_ID#
#define EMBER_ZLL_CLUSTER_IDValue:
0x1000
The ZigBee Light Link Commissioning cluster ID.
175
of file stack/include/zll-types.h
EMBER_ZLL_PROFILE_ID#
#define EMBER_ZLL_PROFILE_IDValue:
0xC05E
The ZigBee Light Link Profile ID.
180
of file stack/include/zll-types.h
EMBER_ZLL_KEY_MASK_DEVELOPMENT#
#define EMBER_ZLL_KEY_MASK_DEVELOPMENTValue:
(1 << EMBER_ZLL_KEY_INDEX_DEVELOPMENT)
The key encryption bitmask corresponding to encryption key index EMBER_ZLL_KEY_INDEX_DEVELOPMENT.
204
of file stack/include/zll-types.h
EMBER_ZLL_KEY_MASK_MASTER#
#define EMBER_ZLL_KEY_MASK_MASTERValue:
(1 << EMBER_ZLL_KEY_INDEX_MASTER)
The key encryption bitmask corresponding to encryption key index EMBER_ZLL_KEY_INDEX_MASTER.
210
of file stack/include/zll-types.h
EMBER_ZLL_KEY_MASK_CERTIFICATION#
#define EMBER_ZLL_KEY_MASK_CERTIFICATIONValue:
(1 << EMBER_ZLL_KEY_INDEX_CERTIFICATION)
THe key encryption bitmask corresponding to encryption key index EMBER_ZLL_KEY_INDEX_CERTIFICATION.
216
of file stack/include/zll-types.h
EMBER_ZLL_CERTIFICATION_ENCRYPTION_KEY#
#define EMBER_ZLL_CERTIFICATION_ENCRYPTION_KEYValue:
The encryption key for use during development and certification in conjunction with EMBER_ZLL_KEY_INDEX_CERTIFICATION.
222
of file stack/include/zll-types.h
EMBER_ZLL_CERTIFICATION_PRECONFIGURED_LINK_KEY#
#define EMBER_ZLL_CERTIFICATION_PRECONFIGURED_LINK_KEYValue:
The pre-configured link key for use during development and certification in conjunction with EMBER_ZLL_KEY_INDEX_CERTIFICATION.
230
of file stack/include/zll-types.h
EmberZllState#
EmberZllState
A bitmask indicating the state of the ZLL device. This maps directly to the ZLL information field in the scan response.
Enumerator | |
---|---|
EMBER_ZLL_STATE_NONE | No state. |
EMBER_ZLL_STATE_FACTORY_NEW | The device is factory new. |
EMBER_ZLL_STATE_ADDRESS_ASSIGNMENT_CAPABLE | The device is capable of assigning addresses to other devices. |
EMBER_ZLL_STATE_LINK_INITIATOR | The device is initiating a link operation. |
EMBER_ZLL_STATE_LINK_PRIORITY_REQUEST | The device is requesting link priority. |
EMBER_ZLL_STATE_PROFILE_INTEROP | The device is a ZigBee 3.0 device. |
EMBER_ZLL_STATE_NON_ZLL_NETWORK | The device is on a non-ZLL network. |
EMBER_ZLL_TOKEN_POINTS_TO_PSA_ID | Internal use: the ZLL token's key values point to a PSA key identifier |
96
of file stack/include/zll-types.h
EmberZllKeyIndex#
EmberZllKeyIndex
The key encryption algorithms supported by the stack.
Enumerator | |
---|---|
EMBER_ZLL_KEY_INDEX_DEVELOPMENT | The key encryption algorithm for use during development. |
EMBER_ZLL_KEY_INDEX_MASTER | The key encryption algorithm shared by all certified devices. |
EMBER_ZLL_KEY_INDEX_CERTIFICATION | The key encryption algorithm for use during development and certification. |
186
of file stack/include/zll-types.h
EmberZllPolicy#
EmberZllPolicy
This enumeration indicates whether or not the stack processes ZLL messages.
Enumerator | |
---|---|
EMBER_ZLL_POLICY_DISABLED | Initial state - all touchlinking is disabled. |
EMBER_ZLL_POLICY_ENABLED | Indicates that ZLL processing is enabled. |
EMBER_ZLL_POLICY_TARGET | Indicates that ZLL target is enabled. |
EMBER_ZLL_POLICY_STEALING_ENABLED | Indicates that stealing and network update are enabled for non factory new devices. |
EMBER_ZLL_POLICY_REMOTE_RESET_ENABLED | Indicates that remote reset is enabled for non factory new devices. |
253
of file stack/include/zll-types.h