|
14 | 14 | #include MEMFAULT_ZEPHYR_INCLUDE(kernel.h)
|
15 | 15 | #include MEMFAULT_ZEPHYR_INCLUDE(logging/log.h)
|
16 | 16 | #include MEMFAULT_ZEPHYR_INCLUDE(shell/shell.h)
|
| 17 | +#include MEMFAULT_ZEPHYR_INCLUDE(drivers/hwinfo.h) |
17 | 18 | #include <zephyr/net/net_if.h>
|
18 | 19 | #include <zephyr/net/dhcpv4.h>
|
19 | 20 |
|
@@ -73,9 +74,32 @@ static void blink_forever(void) {
|
73 | 74 | #endif // CONFIG_QEMU_TARGET
|
74 | 75 | }
|
75 | 76 |
|
| 77 | +static const char *prv_get_device_id(void) { |
| 78 | + uint8_t dev_id[16] = { 0 }; |
| 79 | + static char dev_id_str[sizeof(dev_id) * 2 + 1]; |
| 80 | + static const char *dev_str = "UNKNOWN"; |
| 81 | + |
| 82 | + // Obtain the device id |
| 83 | + ssize_t length = hwinfo_get_device_id(dev_id, sizeof(dev_id)); |
| 84 | + |
| 85 | + // If this fails for some reason, use a fixed ID instead |
| 86 | + if (length <= 0) { |
| 87 | + dev_str = CONFIG_SOC_SERIES "-test"; |
| 88 | + length = strlen(dev_str); |
| 89 | + } else { |
| 90 | + // Render the obtained serial number in hexadecimal representation |
| 91 | + for (size_t i = 0; i < length; i++) { |
| 92 | + (void)snprintf(&dev_id_str[i * 2], sizeof(dev_id_str), "%02x", dev_id[i]); |
| 93 | + } |
| 94 | + dev_str = dev_id_str; |
| 95 | + } |
| 96 | + |
| 97 | + return dev_str; |
| 98 | +} |
| 99 | + |
76 | 100 | void memfault_platform_get_device_info(sMemfaultDeviceInfo *info) {
|
77 | 101 | *info = (sMemfaultDeviceInfo){
|
78 |
| - .device_serial = "DEMOSERIAL", |
| 102 | + .device_serial = prv_get_device_id(), |
79 | 103 | .software_type = "zephyr-app",
|
80 | 104 | .software_version =
|
81 | 105 | CONFIG_ZEPHYR_MEMFAULT_EXAMPLE_SOFTWARE_VERSION "+" ZEPHYR_MEMFAULT_EXAMPLE_GIT_SHA1,
|
@@ -249,7 +273,6 @@ static void initialize_net(void) {
|
249 | 273 | #endif
|
250 | 274 | addr_str, sizeof(addr_str)));
|
251 | 275 |
|
252 |
| - memfault_zephyr_port_install_root_certs(); |
253 | 276 | #endif // CONFIG_NETWORKING
|
254 | 277 | }
|
255 | 278 |
|
|
0 commit comments