canbus: Move canbus uuid calculation to canbus.c
Move the uuid hash calculation to canbus.c and call canbus_set_uuid() from src/stm32/chipid.c . This simplifies the low-level canbus hardware code. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user