Skip to content

Commit f36bebe

Browse files
committed
subsys: ctr_info Add ctr_info_get_product_family
1 parent 62f1300 commit f36bebe

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

include/chester/ctr_info.h

+6
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ extern "C" {
1919
* @{
2020
*/
2121

22+
enum ctr_info_product_family {
23+
CTR_INFO_PRODUCT_FAMILY_CHESTER_M = 0x00b,
24+
CTR_INFO_PRODUCT_FAMILY_CHESTER_U1 = 0x00d,
25+
};
26+
2227
int ctr_info_get_vendor_name(char **vendor_name);
2328
int ctr_info_get_product_name(char **product_name);
2429
int ctr_info_get_hw_variant(char **hw_variant);
@@ -32,6 +37,7 @@ int ctr_info_get_claim_token(char **claim_token);
3237
int ctr_info_get_ble_devaddr(char **ble_devaddr);
3338
int ctr_info_get_ble_devaddr_uint64(uint64_t *ble_devaddr);
3439
int ctr_info_get_ble_passkey(char **ble_passkey);
40+
int ctr_info_get_product_family(enum ctr_info_product_family *product_family);
3541

3642
/** @} */
3743

subsys/ctr_info/ctr_info.c

+20-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ LOG_MODULE_REGISTER(ctr_info, CONFIG_CTR_INFO_LOG_LEVEL);
2828

2929
#define SIGNATURE_OFFSET 0x00
3030
#define SIGNATURE_LENGTH 4
31-
#define SIGNATURE_VALUE 0xbabecafe
31+
#define SIGNATURE_VALUE 0xbabecafe
3232

3333
#define VERSION_OFFSET 0x04
3434
#define VERSION_LENGTH 1
@@ -78,6 +78,7 @@ static char m_product_name[PRODUCT_NAME_LENGTH];
7878
static char m_hw_variant[HW_VARIANT_LENGTH];
7979
static char m_hw_revision[HW_REVISION_LENGTH];
8080
static char m_serial_number[SERIAL_NUMBER_LENGTH];
81+
static uint32_t m_serial_number_uint32;
8182
static char m_claim_token[CLAIM_TOKEN_LENGTH];
8283
static char m_ble_passkey[BLE_PASSKEY_LENGTH];
8384
static uint32_t m_crc;
@@ -137,6 +138,7 @@ static int load_uicr_customer(void)
137138

138139
/* Load serial number */
139140
memcpy(m_serial_number, uicr_customer + SERIAL_NUMBER_OFFSET, sizeof(m_serial_number));
141+
m_serial_number_uint32 = strtoul(m_serial_number, NULL, 10);
140142

141143
/* Load claim token */
142144
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)
270272
return -EIO;
271273
}
272274

273-
*serial_number = strtoul(m_serial_number, NULL, 10);
275+
*serial_number = m_serial_number_uint32;
274276

275277
return 0;
276278
}
@@ -337,6 +339,22 @@ int ctr_info_get_ble_passkey(char **ble_passkey)
337339
return 0;
338340
}
339341

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+
340358
static int init(void)
341359
{
342360
LOG_INF("System initialization");

0 commit comments

Comments
 (0)