diff options
author | xengineering <me@xengineering.eu> | 2024-04-20 22:08:08 +0200 |
---|---|---|
committer | xengineering <me@xengineering.eu> | 2024-04-21 12:26:00 +0200 |
commit | 96f2358caadfd55d6fd3b888ef5d21f22fc2439c (patch) | |
tree | 4d2145c0df358fa917bdec729e905130230bf7f6 /firmware/src/uid64.c | |
parent | 9a713b06c3f776684dd026646c916b6daea7b25b (diff) | |
download | iot-core-96f2358caadfd55d6fd3b888ef5d21f22fc2439c.tar iot-core-96f2358caadfd55d6fd3b888ef5d21f22fc2439c.tar.zst iot-core-96f2358caadfd55d6fd3b888ef5d21f22fc2439c.zip |
firmware: Add 64 bit MAC to shell prompt
This demonstrates that the readout of the 64 bit MAC address from the
STM32WL55 microcontroller works and is useful to recognize used devices.
Diffstat (limited to 'firmware/src/uid64.c')
-rw-r--r-- | firmware/src/uid64.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/firmware/src/uid64.c b/firmware/src/uid64.c new file mode 100644 index 0000000..984b7fe --- /dev/null +++ b/firmware/src/uid64.c @@ -0,0 +1,41 @@ +#include <stdio.h> + +#include <zephyr/devicetree.h> + +#include "uid64.h" + +#define UID64_NODE DT_NODELABEL(uid64) + +uint64_t uid64_get(void) { +#if DT_NODE_EXISTS(UID64_NODE) + return *(volatile uint64_t *) DT_REG_ADDR(UID64_NODE); +#else + return 0; +#endif +} + +void uid64_to_string(uint64_t uid, char *str) { + uint8_t *source = (uint8_t *)&uid + 7; + char *sink = str; + + for (unsigned int i = 0; i < 8; i++) { + /* delimiter */ + if (i > 0) { + *sink = ':'; + sink++; + } + + /* byte values */ + snprintf(sink, 3, "%02x", *source); + source--; + sink += 2; + } +} + +bool uid64_available(void) { +#if DT_NODE_EXISTS(UID64_NODE) + return true; +#else + return false; +#endif +} |