Stack Tokens#

These tokens are divided into three sections (the three main types of tokens mentioned in token.h):

  • manufacturing

  • stack

  • application

For a full explanation of the tokens, see hal/micro/token.h. See token-stack.h for source code.

A set of tokens is predefined in the APPLICATION DATA section at the end of token-stack.h because these tokens are required by the stack, but they are classified as application tokens since they are sized by the application via its CONFIGURATION_HEADER.

The user application can include its own tokens in a header file similar to this one. The macro ::APPLICATION_TOKEN_HEADER should be defined to equal the name of the header file in which application tokens are defined. See the APPLICATION DATA section at the end of token-stack.h for examples of token definitions.

Since token-stack.h contains both the typedefs and the token defs, two #defines are used to select which one is needed when this file is included. #define DEFINETYPES is used to select the type definitions and #define DEFINETOKENS is used to select the token definitions. See token.h and token.c to see how these are used.

Convenience Macros#

The following convenience macros are used to simplify the definition process for commonly specified parameters to the basic TOKEN_DEF macro. See hal/micro/token.h for a more complete explanation.

#define
DEFINE_BASIC_TOKEN (name, type, ...)
#define
DEFINE_COUNTER_TOKEN (name, type, ...)
#define
DEFINE_INDEXED_TOKEN (name, type, arraysize, ...)
#define
DEFINE_FIXED_BASIC_TOKEN (name, type, address, ...)
#define
DEFINE_FIXED_COUNTER_TOKEN (name, type, address, ...)
#define
DEFINE_FIXED_INDEXED_TOKEN (name, type, arraysize, address, ...)
#define
DEFINE_MFG_TOKEN (name, type, address, ...)

Creator Codes#

The CREATOR is used as a distinct identifier tag for the token.The CREATOR is necessary because the token name is defined differently depending on the hardware platform. Therefore, the CREATOR ensures that token definitions and data stay tagged and known. The only requirement is that each creator definition must be unique. See hal/micro/token.h for a more complete explanation.

#define
#define

NVM3 Object Keys#

The NVM3 object key is used as a distinct identifier tag for a token stored in NVM3.Every token must have a defined NVM3 object key and the object key must be unique. The object key defined must be in the following format: NVM3KEY_tokennamewhere tokenname is the name of the token without NVM3KEY_ or TOKEN_ prefix.

#define
#define
#define
#define
NVM3KEY_STACK_NVDATA_VERSION (NVM3KEY_DOMAIN_ZIGBEE | 0xFF01)
#define
NVM3KEY_STACK_BOOT_COUNTER (NVM3KEY_DOMAIN_ZIGBEE | 0xE263)
#define
NVM3KEY_STACK_NONCE_COUNTER (NVM3KEY_DOMAIN_ZIGBEE | 0xE563)
#define
NVM3KEY_STACK_ANALYSIS_REBOOT (NVM3KEY_DOMAIN_ZIGBEE | 0xE162)
#define
NVM3KEY_STACK_KEYS (NVM3KEY_DOMAIN_ZIGBEE | 0xEB79)
#define
NVM3KEY_STACK_NODE_DATA (NVM3KEY_DOMAIN_ZIGBEE | 0xEE64)
#define
NVM3KEY_STACK_CLASSIC_DATA (NVM3KEY_DOMAIN_ZIGBEE | 0xE364)
#define
NVM3KEY_STACK_ALTERNATE_KEY (NVM3KEY_DOMAIN_ZIGBEE | 0xE475)
#define
NVM3KEY_STACK_APS_FRAME_COUNTER (NVM3KEY_DOMAIN_ZIGBEE | 0xE123)
#define
NVM3KEY_STACK_TRUST_CENTER (NVM3KEY_DOMAIN_ZIGBEE | 0xE124)
#define
NVM3KEY_STACK_NETWORK_MANAGEMENT (NVM3KEY_DOMAIN_ZIGBEE | 0xE125)
#define
NVM3KEY_STACK_PARENT_INFO (NVM3KEY_DOMAIN_ZIGBEE | 0xE126)
#define
NVM3KEY_STACK_PARENT_ADDITIONAL_INFO (NVM3KEY_DOMAIN_ZIGBEE | 0xE127)
#define
NVM3KEY_STACK_MULTI_PHY_NWK_INFO (NVM3KEY_DOMAIN_ZIGBEE | 0xE128)
#define
NVM3KEY_STACK_MIN_RECEIVED_RSSI (NVM3KEY_DOMAIN_ZIGBEE | 0xE129)
#define
NVM3KEY_STACK_RESTORED_EUI64 (NVM3KEY_DOMAIN_ZIGBEE | 0xE12A)
#define
NVM3KEY_MULTI_NETWORK_STACK_KEYS (NVM3KEY_DOMAIN_ZIGBEE | 0x0000)
#define
NVM3KEY_MULTI_NETWORK_STACK_NODE_DATA (NVM3KEY_DOMAIN_ZIGBEE | 0x0080)
#define
NVM3KEY_MULTI_NETWORK_STACK_ALTERNATE_KEY (NVM3KEY_DOMAIN_ZIGBEE | 0x0100)
#define
NVM3KEY_MULTI_NETWORK_STACK_TRUST_CENTER (NVM3KEY_DOMAIN_ZIGBEE | 0x0180)
#define
NVM3KEY_MULTI_NETWORK_STACK_NETWORK_MANAGEMENT (NVM3KEY_DOMAIN_ZIGBEE | 0x0200)
#define
NVM3KEY_MULTI_NETWORK_STACK_PARENT_INFO (NVM3KEY_DOMAIN_ZIGBEE | 0x0280)
#define
NVM3KEY_MULTI_NETWORK_STACK_NONCE_COUNTER (NVM3KEY_DOMAIN_ZIGBEE | 0xE220)
#define
#define
NVM3KEY_STACK_GP_DATA (NVM3KEY_DOMAIN_ZIGBEE | 0xE258)
#define
NVM3KEY_STACK_GP_PROXY_TABLE (NVM3KEY_DOMAIN_ZIGBEE | 0x0380)
#define
NVM3KEY_STACK_GP_SINK_TABLE (NVM3KEY_DOMAIN_ZIGBEE | 0x0400)
#define
NVM3KEY_STACK_GP_INCOMING_FC (NVM3KEY_DOMAIN_ZIGBEE | 0x0480)
#define
NVM3KEY_STACK_BINDING_TABLE (NVM3KEY_DOMAIN_ZIGBEE | 0x0500)
#define
NVM3KEY_STACK_CHILD_TABLE (NVM3KEY_DOMAIN_ZIGBEE | 0x0580)
#define
NVM3KEY_STACK_KEY_TABLE (NVM3KEY_DOMAIN_ZIGBEE | 0x0600)
#define
NVM3KEY_STACK_CERTIFICATE_TABLE (NVM3KEY_DOMAIN_ZIGBEE | 0x0680)
#define
NVM3KEY_STACK_ZLL_DATA (NVM3KEY_DOMAIN_ZIGBEE | 0xE501)
#define
NVM3KEY_STACK_ZLL_SECURITY (NVM3KEY_DOMAIN_ZIGBEE | 0xE502)
#define
NVM3KEY_STACK_ADDITIONAL_CHILD_DATA (NVM3KEY_DOMAIN_ZIGBEE | 0x0700)
#define
NVM3KEY_STACK_GP_INCOMING_FC_IN_SINK (NVM3KEY_DOMAIN_ZIGBEE | 0x0780)
#define
NVM3KEY_STACK_KEY_TABLE_EXTENDED (NVM3KEY_DOMAIN_ZIGBEE | 0x892C)

Macros#

#define
TOKEN_NEXT_ADDRESS (region, address)

By default, tokens are automatically located after the previous token.

#define

The current version number of the stack tokens. MSB is the version, LSB is a complement.

#define
#define

Convenience Macros Documentation#

DEFINE_BASIC_TOKEN#

#define DEFINE_BASIC_TOKEN
Value:
(name, type, ...)

DEFINE_COUNTER_TOKEN#

#define DEFINE_COUNTER_TOKEN
Value:
(name, type, ...)

DEFINE_INDEXED_TOKEN#

#define DEFINE_INDEXED_TOKEN
Value:
(name, type, arraysize, ...)

DEFINE_FIXED_BASIC_TOKEN#

#define DEFINE_FIXED_BASIC_TOKEN
Value:
TOKEN_NEXT_ADDRESS(name, (address)) \
TOKEN_DEF(name, CREATOR_##name, 0, 0, type, 1, __VA_ARGS__)

DEFINE_FIXED_COUNTER_TOKEN#

#define DEFINE_FIXED_COUNTER_TOKEN
Value:
TOKEN_NEXT_ADDRESS(name, (address)) \
TOKEN_DEF(name, CREATOR_##name, 1, 0, type, 1, __VA_ARGS__)

DEFINE_FIXED_INDEXED_TOKEN#

#define DEFINE_FIXED_INDEXED_TOKEN
Value:
TOKEN_NEXT_ADDRESS(name, (address)) \
TOKEN_DEF(name, CREATOR_##name, 0, 1, type, (arraysize), __VA_ARGS__)

DEFINE_MFG_TOKEN#

#define DEFINE_MFG_TOKEN
Value:
TOKEN_NEXT_ADDRESS(name, (address)) \
TOKEN_MFG(name, CREATOR_##name, 0, 0, type, 1, __VA_ARGS__)

Creator Codes Documentation#

CREATOR_STACK_NVDATA_VERSION#

#define CREATOR_STACK_NVDATA_VERSION
Value:
0xFF01

CREATOR_STACK_BOOT_COUNTER#

#define CREATOR_STACK_BOOT_COUNTER
Value:
0xE263

CREATOR_STACK_NONCE_COUNTER#

#define CREATOR_STACK_NONCE_COUNTER
Value:
0xE563

CREATOR_STACK_ANALYSIS_REBOOT#

#define CREATOR_STACK_ANALYSIS_REBOOT
Value:
0xE162

CREATOR_STACK_KEYS#

#define CREATOR_STACK_KEYS
Value:
0xEB79

CREATOR_STACK_NODE_DATA#

#define CREATOR_STACK_NODE_DATA
Value:
0xEE64

CREATOR_STACK_CLASSIC_DATA#

#define CREATOR_STACK_CLASSIC_DATA
Value:
0xE364

CREATOR_STACK_ALTERNATE_KEY#

#define CREATOR_STACK_ALTERNATE_KEY
Value:
0xE475

CREATOR_STACK_APS_FRAME_COUNTER#

#define CREATOR_STACK_APS_FRAME_COUNTER
Value:
0xE123

CREATOR_STACK_TRUST_CENTER#

#define CREATOR_STACK_TRUST_CENTER
Value:
0xE124

CREATOR_STACK_NETWORK_MANAGEMENT#

#define CREATOR_STACK_NETWORK_MANAGEMENT
Value:
0xE125

CREATOR_STACK_PARENT_INFO#

#define CREATOR_STACK_PARENT_INFO
Value:
0xE126

CREATOR_STACK_PARENT_ADDITIONAL_INFO#

#define CREATOR_STACK_PARENT_ADDITIONAL_INFO
Value:
0xE127

CREATOR_STACK_MULTI_PHY_NWK_INFO#

#define CREATOR_STACK_MULTI_PHY_NWK_INFO
Value:
0xE128

CREATOR_STACK_MIN_RECEIVED_RSSI#

#define CREATOR_STACK_MIN_RECEIVED_RSSI
Value:
0xE129

CREATOR_STACK_RESTORED_EUI64#

#define CREATOR_STACK_RESTORED_EUI64
Value:
0xE12A

CREATOR_MULTI_NETWORK_STACK_KEYS#

#define CREATOR_MULTI_NETWORK_STACK_KEYS
Value:
0xE210

CREATOR_MULTI_NETWORK_STACK_NODE_DATA#

#define CREATOR_MULTI_NETWORK_STACK_NODE_DATA
Value:
0xE211

CREATOR_MULTI_NETWORK_STACK_ALTERNATE_KEY#

#define CREATOR_MULTI_NETWORK_STACK_ALTERNATE_KEY
Value:
0xE212

CREATOR_MULTI_NETWORK_STACK_TRUST_CENTER#

#define CREATOR_MULTI_NETWORK_STACK_TRUST_CENTER
Value:
0xE213

CREATOR_MULTI_NETWORK_STACK_NETWORK_MANAGEMENT#

#define CREATOR_MULTI_NETWORK_STACK_NETWORK_MANAGEMENT
Value:
0xE214

CREATOR_MULTI_NETWORK_STACK_PARENT_INFO#

#define CREATOR_MULTI_NETWORK_STACK_PARENT_INFO
Value:
0xE215

CREATOR_MULTI_NETWORK_STACK_NONCE_COUNTER#

#define CREATOR_MULTI_NETWORK_STACK_NONCE_COUNTER
Value:
0xE220

CREATOR_MULTI_NETWORK_STACK_PARENT_ADDITIONAL_INFO#

#define CREATOR_MULTI_NETWORK_STACK_PARENT_ADDITIONAL_INFO
Value:
0xE221

CREATOR_STACK_GP_DATA#

#define CREATOR_STACK_GP_DATA
Value:
0xE258

CREATOR_STACK_GP_PROXY_TABLE#

#define CREATOR_STACK_GP_PROXY_TABLE
Value:
0xE259

CREATOR_STACK_GP_SINK_TABLE#

#define CREATOR_STACK_GP_SINK_TABLE
Value:
0xE25A

CREATOR_STACK_GP_INCOMING_FC#

#define CREATOR_STACK_GP_INCOMING_FC
Value:
0xE25B

CREATOR_STACK_GP_INCOMING_FC_IN_SINK#

#define CREATOR_STACK_GP_INCOMING_FC_IN_SINK
Value:
0xE25C

CREATOR_STACK_BINDING_TABLE#

#define CREATOR_STACK_BINDING_TABLE
Value:
0xE274

CREATOR_STACK_CHILD_TABLE#

#define CREATOR_STACK_CHILD_TABLE
Value:
0xFF0D

CREATOR_STACK_KEY_TABLE#

#define CREATOR_STACK_KEY_TABLE
Value:
0xE456

CREATOR_STACK_CERTIFICATE_TABLE#

#define CREATOR_STACK_CERTIFICATE_TABLE
Value:
0xE500

CREATOR_STACK_ZLL_DATA#

#define CREATOR_STACK_ZLL_DATA
Value:
0xE501

CREATOR_STACK_ZLL_SECURITY#

#define CREATOR_STACK_ZLL_SECURITY
Value:
0xE502

CREATOR_STACK_ADDITIONAL_CHILD_DATA#

#define CREATOR_STACK_ADDITIONAL_CHILD_DATA
Value:
0xE503

CREATOR_STACK_KEY_TABLE_EXTENDED#

#define CREATOR_STACK_KEY_TABLE_EXTENDED
Value:
0xE510

NVM3 Object Keys Documentation#

NVM3KEY_DOMAIN_USER#

#define NVM3KEY_DOMAIN_USER
Value:
0x00000U

NVM3KEY_DOMAIN_ZIGBEE#

#define NVM3KEY_DOMAIN_ZIGBEE
Value:
0x10000U

NVM3KEY_DOMAIN_COMMON#

#define NVM3KEY_DOMAIN_COMMON
Value:
0x80000U

NVM3KEY_STACK_NVDATA_VERSION#

#define NVM3KEY_STACK_NVDATA_VERSION
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0xFF01)

NVM3KEY_STACK_BOOT_COUNTER#

#define NVM3KEY_STACK_BOOT_COUNTER
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0xE263)

NVM3KEY_STACK_NONCE_COUNTER#

#define NVM3KEY_STACK_NONCE_COUNTER
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0xE563)

NVM3KEY_STACK_ANALYSIS_REBOOT#

#define NVM3KEY_STACK_ANALYSIS_REBOOT
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0xE162)

NVM3KEY_STACK_KEYS#

#define NVM3KEY_STACK_KEYS
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0xEB79)

NVM3KEY_STACK_NODE_DATA#

#define NVM3KEY_STACK_NODE_DATA
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0xEE64)

NVM3KEY_STACK_CLASSIC_DATA#

#define NVM3KEY_STACK_CLASSIC_DATA
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0xE364)

NVM3KEY_STACK_ALTERNATE_KEY#

#define NVM3KEY_STACK_ALTERNATE_KEY
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0xE475)

NVM3KEY_STACK_APS_FRAME_COUNTER#

#define NVM3KEY_STACK_APS_FRAME_COUNTER
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0xE123)

NVM3KEY_STACK_TRUST_CENTER#

#define NVM3KEY_STACK_TRUST_CENTER
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0xE124)

NVM3KEY_STACK_NETWORK_MANAGEMENT#

#define NVM3KEY_STACK_NETWORK_MANAGEMENT
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0xE125)

NVM3KEY_STACK_PARENT_INFO#

#define NVM3KEY_STACK_PARENT_INFO
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0xE126)

NVM3KEY_STACK_PARENT_ADDITIONAL_INFO#

#define NVM3KEY_STACK_PARENT_ADDITIONAL_INFO
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0xE127)

NVM3KEY_STACK_MULTI_PHY_NWK_INFO#

#define NVM3KEY_STACK_MULTI_PHY_NWK_INFO
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0xE128)

NVM3KEY_STACK_MIN_RECEIVED_RSSI#

#define NVM3KEY_STACK_MIN_RECEIVED_RSSI
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0xE129)

NVM3KEY_STACK_RESTORED_EUI64#

#define NVM3KEY_STACK_RESTORED_EUI64
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0xE12A)

NVM3KEY_MULTI_NETWORK_STACK_KEYS#

#define NVM3KEY_MULTI_NETWORK_STACK_KEYS
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0x0000)

NVM3KEY_MULTI_NETWORK_STACK_NODE_DATA#

#define NVM3KEY_MULTI_NETWORK_STACK_NODE_DATA
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0x0080)

NVM3KEY_MULTI_NETWORK_STACK_ALTERNATE_KEY#

#define NVM3KEY_MULTI_NETWORK_STACK_ALTERNATE_KEY
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0x0100)

NVM3KEY_MULTI_NETWORK_STACK_TRUST_CENTER#

#define NVM3KEY_MULTI_NETWORK_STACK_TRUST_CENTER
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0x0180)

NVM3KEY_MULTI_NETWORK_STACK_NETWORK_MANAGEMENT#

#define NVM3KEY_MULTI_NETWORK_STACK_NETWORK_MANAGEMENT
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0x0200)

NVM3KEY_MULTI_NETWORK_STACK_PARENT_INFO#

#define NVM3KEY_MULTI_NETWORK_STACK_PARENT_INFO
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0x0280)

NVM3KEY_MULTI_NETWORK_STACK_NONCE_COUNTER#

#define NVM3KEY_MULTI_NETWORK_STACK_NONCE_COUNTER
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0xE220)

NVM3KEY_MULTI_NETWORK_STACK_PARENT_ADDITIONAL_INFO#

#define NVM3KEY_MULTI_NETWORK_STACK_PARENT_ADDITIONAL_INFO
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0x0300)

NVM3KEY_STACK_GP_DATA#

#define NVM3KEY_STACK_GP_DATA
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0xE258)

NVM3KEY_STACK_GP_PROXY_TABLE#

#define NVM3KEY_STACK_GP_PROXY_TABLE
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0x0380)

NVM3KEY_STACK_GP_SINK_TABLE#

#define NVM3KEY_STACK_GP_SINK_TABLE
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0x0400)

NVM3KEY_STACK_GP_INCOMING_FC#

#define NVM3KEY_STACK_GP_INCOMING_FC
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0x0480)

NVM3KEY_STACK_BINDING_TABLE#

#define NVM3KEY_STACK_BINDING_TABLE
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0x0500)

NVM3KEY_STACK_CHILD_TABLE#

#define NVM3KEY_STACK_CHILD_TABLE
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0x0580)

NVM3KEY_STACK_KEY_TABLE#

#define NVM3KEY_STACK_KEY_TABLE
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0x0600)

NVM3KEY_STACK_CERTIFICATE_TABLE#

#define NVM3KEY_STACK_CERTIFICATE_TABLE
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0x0680)

NVM3KEY_STACK_ZLL_DATA#

#define NVM3KEY_STACK_ZLL_DATA
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0xE501)

NVM3KEY_STACK_ZLL_SECURITY#

#define NVM3KEY_STACK_ZLL_SECURITY
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0xE502)

NVM3KEY_STACK_ADDITIONAL_CHILD_DATA#

#define NVM3KEY_STACK_ADDITIONAL_CHILD_DATA
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0x0700)

NVM3KEY_STACK_GP_INCOMING_FC_IN_SINK#

#define NVM3KEY_STACK_GP_INCOMING_FC_IN_SINK
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0x0780)

NVM3KEY_STACK_KEY_TABLE_EXTENDED#

#define NVM3KEY_STACK_KEY_TABLE_EXTENDED
Value:
(NVM3KEY_DOMAIN_ZIGBEE | 0x892C)

Macro Definition Documentation#

TOKEN_NEXT_ADDRESS#

#define TOKEN_NEXT_ADDRESS

By default, tokens are automatically located after the previous token.

If a token needs to be placed at a specific location, one of the DEFINE_FIXED_* definitions should be used. This macro is inherently used in the DEFINE_FIXED_* definition to locate a token and under special circumstances (such as manufacturing tokens) it may be explicitly used.


CURRENT_STACK_TOKEN_VERSION#

#define CURRENT_STACK_TOKEN_VERSION
Value:
0x03FC

The current version number of the stack tokens. MSB is the version, LSB is a complement.

See hal/micro/token.h for a more complete explanation.


STACK_KEYS_DEFAULT_VALUE#

#define STACK_KEYS_DEFAULT_VALUE
Value:
{ { 0, }, 0 }

STACK_ALT_NWK_KEY_DEFAULT_VALUE#

#define STACK_ALT_NWK_KEY_DEFAULT_VALUE
Value:
{ { 0, }, 0 }

ZLL_TOKENS_PRESENT#

#define ZLL_TOKENS_PRESENT