diff options
Diffstat (limited to 'src/generic')
-rw-r--r-- | src/generic/canbus.c | 8 | ||||
-rw-r--r-- | src/generic/canbus.h | 3 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/generic/canbus.c b/src/generic/canbus.c index 8526c5c1..3cc051c8 100644 --- a/src/generic/canbus.c +++ b/src/generic/canbus.c @@ -13,8 +13,11 @@ #include "board/misc.h" // console_sendf #include "canbus.h" // canbus_set_uuid #include "command.h" // DECL_CONSTANT +#include "fasthash.h" // fasthash64 #include "sched.h" // sched_wake_task +#define CANBUS_UUID_LEN 6 + // Global storage static struct canbus_data { uint32_t assigned_id; @@ -323,9 +326,10 @@ command_get_canbus_id(uint32_t *args) DECL_COMMAND_FLAGS(command_get_canbus_id, HF_IN_SHUTDOWN, "get_canbus_id"); void -canbus_set_uuid(void *uuid) +canbus_set_uuid(uint8_t *raw_uuid, uint32_t raw_uuid_len) { - memcpy(CanData.uuid, uuid, sizeof(CanData.uuid)); + uint64_t hash = fasthash64(raw_uuid, raw_uuid_len, 0xA16231A7); + memcpy(CanData.uuid, &hash, sizeof(CanData.uuid)); canbus_notify_rx(); } diff --git a/src/generic/canbus.h b/src/generic/canbus.h index 224d7037..79cb3245 100644 --- a/src/generic/canbus.h +++ b/src/generic/canbus.h @@ -5,7 +5,6 @@ #define CANBUS_ID_ADMIN 0x3f0 #define CANBUS_ID_ADMIN_RESP 0x3f1 -#define CANBUS_UUID_LEN 6 struct canbus_msg { uint32_t id; @@ -28,6 +27,6 @@ void canbus_set_filter(uint32_t id); // canbus.c void canbus_notify_tx(void); void canbus_process_data(struct canbus_msg *msg); -void canbus_set_uuid(void *data); +void canbus_set_uuid(uint8_t *raw_uuid, uint32_t raw_uuid_len); #endif // canbus.h |