10#ifndef TR_MFG_TOKENS_H
11#define TR_MFG_TOKENS_H
17#include "tr_platform_token_def.h"
21#define TR_START_MFG_TOKEN_DEFS \
22 typedef struct __attribute__((packed))
25#define TR_END_MFG_TOKEN_DEFS \
26 tr_mfg_token_struct_t;
30#define TR_CREATE_MFG_TOKEN(name, type) \
42#define tr_get_mfg_token_len(token) \
43 sizeof(((tr_mfg_token_struct_t*)0)->token)
48#define tr_get_mfg_token_offset(token) \
49 ((uint32_t)(&((tr_mfg_token_struct_t*)0)->token))
54#define tr_get_mfg_token(data, token) \
55 tr_platform_token_read((uint8_t*)data, \
56 (uint8_t)tr_get_mfg_token_len(token), \
57 (uint32_t)(TR_MFG_TOKEN_BASE + tr_get_mfg_token_offset(token)))
62#define tr_mfg_token_check_erased(token) \
64 bool is_erased = true; \
67 tr_get_mfg_token(data, token); \
68 for (size_t i = 0 ; i < tr_get_mfg_token_len(token) ; i++) { \
69 if (data[i] == 0xFF) { \
73 if (count != tr_get_mfg_token_len(token)) { \
83#define tr_set_mfg_token(data, data_len, token) \
85 if (tr_mfg_token_check_erased(token)) { \
86 tr_platform_token_write((uint8_t*)data, \
88 (uint32_t)(TR_MFG_TOKEN_BASE + tr_get_mfg_token_offset(token))); \
104typedef struct __attribute__((packed, scalar_storage_order(
"big-endian")))
113typedef struct __attribute__((packed, scalar_storage_order(
"big-endian")))
119typedef struct __attribute__((packed, scalar_storage_order(
"big-endian")))
124typedef struct __attribute__((packed, scalar_storage_order(
"big-endian")))
129typedef struct __attribute__((packed, scalar_storage_order(
"big-endian")))
136 uint8_t certificate[48];
137 uint8_t ca_public_key[22];
138 uint8_t private_key[21];
143typedef struct __attribute__((packed, scalar_storage_order(
"big-endian")))
155typedef struct __attribute__((packed, scalar_storage_order(
"big-endian")))
162 uint8_t certificate[74];
163 uint8_t ca_public_key[37];
164 uint8_t private_key[36];
175typedef struct __attribute__((packed, scalar_storage_order(
"big-endian")))
177 uint8_t join_key[32];
219void tr_mfg_tokens_process(
void);
Definition tr_mfg_tokens.h:161
uint8_t flags
Definition tr_mfg_tokens.h:167
Definition tr_mfg_tokens.h:135
uint8_t flags
Definition tr_mfg_tokens.h:141
Definition tr_mfg_tokens.h:130
uint16_t value
Definition tr_mfg_tokens.h:131
Definition tr_mfg_tokens.h:144
uint16_t flags
Definition tr_mfg_tokens.h:149
uint16_t crc
Definition tr_mfg_tokens.h:151
Definition tr_mfg_tokens.h:114
uint16_t value
Definition tr_mfg_tokens.h:115
Definition tr_mfg_tokens.h:125
uint16_t value
Definition tr_mfg_tokens.h:126
Definition tr_mfg_tokens.h:156
uint16_t value
Definition tr_mfg_tokens.h:157
Definition tr_mfg_tokens.h:176
uint16_t join_key_length
Definition tr_mfg_tokens.h:178
Definition tr_mfg_tokens.h:105
uint16_t value
Definition tr_mfg_tokens.h:106
Definition tr_mfg_tokens.h:120
uint16_t value
Definition tr_mfg_tokens.h:121
uint8_t tr_mfg_tok_type_mfg_name[32]
Definition tr_mfg_tokens.h:110
uint8_t tr_mfg_tok_type_zwave_qr_code[106]
Definition tr_mfg_tokens.h:183
uint8_t tr_mfg_tok_type_zwave_region
Definition tr_mfg_tokens.h:181
uint8_t tr_mfg_tok_type_custom_eui[8]
Definition tr_mfg_tokens.h:109
uint8_t tr_mfg_tok_type_nvm_crypto_key[16]
Definition tr_mfg_tokens.h:169
uint8_t tr_mfg_tok_type_hw_version
Definition tr_mfg_tokens.h:112
#define TR_END_MFG_TOKEN_DEFS
Definition tr_mfg_tokens.h:25
uint8_t tr_mfg_tok_type_model_name[32]
Definition tr_mfg_tokens.h:111
#define TR_CREATE_MFG_TOKEN(name, type)
Definition tr_mfg_tokens.h:30
uint8_t tr_mfg_tok_type_zwave_initialized
Definition tr_mfg_tokens.h:182
uint8_t tr_mfg_tok_type_secure_bootloader_key[16]
Definition tr_mfg_tokens.h:171
uint8_t tr_mfg_tok_type_zwave_puk[32]
Definition tr_mfg_tokens.h:184
uint8_t tr_mfg_tok_type_serial_num[8]
Definition tr_mfg_tokens.h:118
#define TR_START_MFG_TOKEN_DEFS
Definition tr_mfg_tokens.h:21
uint8_t tr_mfg_tok_type_distributed_key[16]
Definition tr_mfg_tokens.h:154
uint8_t tr_mfg_tok_type_serial_boot_delay_sec
Definition tr_mfg_tokens.h:174
uint8_t tr_mfg_tok_type_signed_bootloader_key_x[32]
Definition tr_mfg_tokens.h:172
uint8_t tr_mfg_tok_type_zwave_prk[32]
Definition tr_mfg_tokens.h:185
uint8_t tr_mfg_tok_type_signed_bootloader_key_y[32]
Definition tr_mfg_tokens.h:173
uint8_t tr_mfg_tok_type_bootload_aes_key[16]
Definition tr_mfg_tokens.h:170