aboutsummaryrefslogtreecommitdiffstats
path: root/src/generic
diff options
context:
space:
mode:
Diffstat (limited to 'src/generic')
-rw-r--r--src/generic/canbus.c8
-rw-r--r--src/generic/canbus.h3
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