From ff6ed730c534a809ea32648b0b30832b2993aaae Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Wed, 5 Feb 2025 19:57:40 +0100 Subject: [PATCH] alif/se_services: Use EUI extension for unique id. The right service call to get UID is SERVICES_system_get_eui_extension which returns an 8 bytes UID. Signed-off-by: iabdalkader --- ports/alif/modmachine.c | 2 +- ports/alif/se_services.c | 7 ++----- ports/alif/se_services.h | 2 +- ports/alif/usbd.c | 2 +- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/ports/alif/modmachine.c b/ports/alif/modmachine.c index 29a70305dd..b77a207fe2 100644 --- a/ports/alif/modmachine.c +++ b/ports/alif/modmachine.c @@ -38,7 +38,7 @@ static void mp_machine_idle(void) { } static mp_obj_t mp_machine_unique_id(void) { - uint8_t id[5]; + uint8_t id[8] = {0}; se_services_get_unique_id(id); return mp_obj_new_bytes(id, sizeof(id)); } diff --git a/ports/alif/se_services.c b/ports/alif/se_services.c index cbf66bfac6..e79a5b97c8 100644 --- a/ports/alif/se_services.c +++ b/ports/alif/se_services.c @@ -139,12 +139,9 @@ void se_services_dump_device_data(void) { printf("\n"); } -void se_services_get_unique_id(uint8_t id[5]) { +void se_services_get_unique_id(uint8_t id[8]) { uint32_t error_code; - SERVICES_version_data_t data; - SERVICES_system_get_device_data(se_services_handle, &data, &error_code); - // The MfgData has 5 bytes of valid data, at least on REV_B2. - memcpy(id, data.MfgData, 5); + SERVICES_system_get_eui_extension(se_services_handle, false, id, &error_code); } __attribute__((noreturn)) void se_services_reset_soc(void) { diff --git a/ports/alif/se_services.h b/ports/alif/se_services.h index b1079130c1..87deb05592 100644 --- a/ports/alif/se_services.h +++ b/ports/alif/se_services.h @@ -30,7 +30,7 @@ void se_services_init(void); void se_services_dump_device_data(void); -void se_services_get_unique_id(uint8_t id[5]); +void se_services_get_unique_id(uint8_t id[8]); __attribute__((noreturn)) void se_services_reset_soc(void); uint64_t se_services_rand64(void); uint32_t se_services_enable_clock(clock_enable_t clock, bool enable); diff --git a/ports/alif/usbd.c b/ports/alif/usbd.c index da16905d43..8d841d188c 100644 --- a/ports/alif/usbd.c +++ b/ports/alif/usbd.c @@ -33,7 +33,7 @@ #include "se_services.h" void mp_usbd_port_get_serial_number(char *serial_buf) { - uint8_t id[5]; + uint8_t id[8] = {0}; se_services_get_unique_id(id); MP_STATIC_ASSERT(sizeof(id) * 2 <= MICROPY_HW_USB_DESC_STR_MAX); mp_usbd_hex_str(serial_buf, id, sizeof(id));