A token is a chunk of data that is stored in a special region of flash outside of the application space that can be used for storing information so that it persists across reboots and power loss. This special area in flash can also be interacted with using elcap which allows for things like calibration data or serial numbers to be provisioned without needing to modify the application.
There are 2 types of tokens: MFG and APP tokens. MFG tokens are pre-defined and built into all Trident IoT applications while APP tokens are defined by the end user and are optional to support. Currently APP tokens are only supported in Zigbee applications.
MFG tokens are manufacturing tokens that are supported by all Trident IoT devices. These are used for setting things such as XTAL calibration information or for storing information that is used by an application in a place that does not require it to be built into the application itself.
MFG tokens can be written at runtime only if the token was previously erased. Once it has been written, then that token cannot be written again from the application itself. MFG tokens can be read at runtime as many times as you wish. See MFG Tokens for the APIs used to interact with MFG tokens at runtime.
Interacting with tokens off the device is done via elcap.
Token ID | Size | Description |
---|---|---|
TR_MFG_TOKEN_VERSION | 2 | 2 byte version ID |
TR_MFG_TOKEN_CUSTOM_EUI | 8 | Used to override default EUI64 that comes provisioned in a chip |
TR_MFG_TOKEN_MFG_NAME | 32 | ASCII manufacturer name |
TR_MFG_TOKEN_MODEL_NAME | 32 | ASCII model name |
TR_MFG_TOKEN_HW_VERSION | 1 | Single byte hardware version ID |
TR_MFG_TOKEN_MANUF_ID | 2 | Set MFG ID used by Zigbee applications |
TR_MFG_TOKEN_SERIAL_NUM | 8 | Used to provision serial number into device |
TR_MFG_TOKEN_XTAL_TRIM | 2 | XTAL frequency calibration value (Valid values: 0-63) |
TR_MFG_TOKEN_PHY_CONFIG | 2 | Future support |
TR_MFG_TOKEN_CCA_THRESHOLD | 2 | Sets 802.15.4 CCA threshold magnitude (ex. 80 = -80dBm) |
TR_MFG_TOKEN_CBKE_DATA | 92 | Future support |
TR_MFG_TOKEN_INSTALLATION_CODE | 20 | Zigbee Install Code |
TR_MFG_TOKEN_DISTRIBUTED_KEY | 16 | Zigbee Distributed Network Key |
TR_MFG_TOKEN_SECURITY_CONFIG | 2 | Future support |
TR_MFG_TOKEN_CBKE_283K1_DATA | 148 | Future support |
TR_MFG_TOKEN_NVM_CRYPTO_KEY | 16 | Future support |
TR_MFG_TOKEN_BOOTLOAD_AES_KEY | 16 | Future support |
TR_MFG_TOKEN_SECURE_BOOTLOADER_KEY | 16 | 128-bit key for secure bootloader to decrypt OTA images - Future Support |
TR_MFG_TOKEN_SIGNED_BOOTLOADER_KEY_X | 32 | X component of ECDSA P-256 public key |
TR_MFG_TOKEN_SIGNED_BOOTLOADER_KEY_Y | 32 | Y component of ECDSA P-256 public key |
TR_MFG_TOKEN_SERIAL_BOOT_DELAY_SEC | 1 | Seconds to delay serial bootloader from starting application |
TR_MFG_TOKEN_THREAD_JOIN_KEY | 34 | Future support |
TR_MFG_TOKEN_ZWAVE_COUNTRY_FREQ | 1 | Z-Wave Frequency Region ID |
TR_MFG_TOKEN_ZWAVE_INITIALIZED | 1 | Indicates if Z-Wave fields are initialized |
TR_MFG_TOKEN_ZWAVE_QR_CODE | 106 | ASCII QR code string for Z-Wave DSK |
TR_MFG_TOKEN_ZWAVE_PUK | 32 | Z-Wave Public key |
TR_MFG_TOKEN_ZWAVE_PRK | 32 | Z-Wave Private key |
APP tokens are custom tokens that can be created by the application developer for doing things like storing device specific calibration data or storing miscellaneous data in persistent memory. Defining APP tokens is done using the Trident framework from within a project. See APP Tokens for APIs used to do this. See any of the Zigbee Sample Applications for a sample implementation.
APP tokens differ from MFG tokens in 2 key ways. APP tokens are defined by the user in their specific application and are not pre-defined by Trident IoT. They can also be written during run time multiple times instead of the single write that MFG tokens support.
Interacting with tokens off the device is done via elcap.