@@ -28,7 +28,7 @@ LOG_MODULE_REGISTER(ctr_info, CONFIG_CTR_INFO_LOG_LEVEL);
28
28
29
29
#define SIGNATURE_OFFSET 0x00
30
30
#define SIGNATURE_LENGTH 4
31
- #define SIGNATURE_VALUE 0xbabecafe
31
+ #define SIGNATURE_VALUE 0xbabecafe
32
32
33
33
#define VERSION_OFFSET 0x04
34
34
#define VERSION_LENGTH 1
@@ -78,6 +78,7 @@ static char m_product_name[PRODUCT_NAME_LENGTH];
78
78
static char m_hw_variant [HW_VARIANT_LENGTH ];
79
79
static char m_hw_revision [HW_REVISION_LENGTH ];
80
80
static char m_serial_number [SERIAL_NUMBER_LENGTH ];
81
+ static uint32_t m_serial_number_uint32 ;
81
82
static char m_claim_token [CLAIM_TOKEN_LENGTH ];
82
83
static char m_ble_passkey [BLE_PASSKEY_LENGTH ];
83
84
static uint32_t m_crc ;
@@ -137,6 +138,7 @@ static int load_uicr_customer(void)
137
138
138
139
/* Load serial number */
139
140
memcpy (m_serial_number , uicr_customer + SERIAL_NUMBER_OFFSET , sizeof (m_serial_number ));
141
+ m_serial_number_uint32 = strtoul (m_serial_number , NULL , 10 );
140
142
141
143
/* Load claim token */
142
144
memcpy (m_claim_token , uicr_customer + CLAIM_TOKEN_OFFSET , sizeof (m_claim_token ));
@@ -270,7 +272,7 @@ int ctr_info_get_serial_number_uint32(uint32_t *serial_number)
270
272
return - EIO ;
271
273
}
272
274
273
- * serial_number = strtoul ( m_serial_number , NULL , 10 ) ;
275
+ * serial_number = m_serial_number_uint32 ;
274
276
275
277
return 0 ;
276
278
}
@@ -337,6 +339,22 @@ int ctr_info_get_ble_passkey(char **ble_passkey)
337
339
return 0 ;
338
340
}
339
341
342
+ int ctr_info_get_product_family (enum ctr_info_product_family * product_family )
343
+ {
344
+ if (!m_uicr_customer_valid ) {
345
+ return - EIO ;
346
+ }
347
+
348
+ if ((m_serial_number_uint32 & 0x80000000 ) == 0 ) {
349
+ return - EFAULT ;
350
+ }
351
+
352
+ * product_family =
353
+ (enum ctr_info_product_family )((m_serial_number_uint32 & 0x3FF00000 ) >> 20 );
354
+
355
+ return 0 ;
356
+ }
357
+
340
358
static int init (void )
341
359
{
342
360
LOG_INF ("System initialization" );
0 commit comments