From 908f408c1b74fb95c2be6e846aebd914842f9f60 Mon Sep 17 00:00:00 2001 From: EhlOps Date: Wed, 26 Mar 2025 13:49:33 -0400 Subject: [PATCH 1/7] Add int8_t queue_prio_can_msg(can_msg_t msg) --- Core/Inc/can_handler.h | 8 ++++++++ Core/Src/can_handler.c | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/Core/Inc/can_handler.h b/Core/Inc/can_handler.h index fb075bc1..45c2bd83 100644 --- a/Core/Inc/can_handler.h +++ b/Core/Inc/can_handler.h @@ -23,6 +23,14 @@ void can1_callback(CAN_HandleTypeDef *hcan); */ int8_t queue_can_msg(can_msg_t msg); +/** + * @brief Place a CAN message in a queue at a high priority. + * + * @param msg CAN message to be sent. + * @return int8_t Error code. + */ +int8_t queue_prio_can_msg(can_msg_t msg); + /** * @brief Initialize CAN line 1. * diff --git a/Core/Src/can_handler.c b/Core/Src/can_handler.c index 437e1c3a..0b02b05f 100644 --- a/Core/Src/can_handler.c +++ b/Core/Src/can_handler.c @@ -96,6 +96,16 @@ int8_t queue_can_msg(can_msg_t msg) CAN_DISPATCH_FLAG); } +/* TODO: Find what queue_and_set_flag (in embedded base) is used in, then change to support prio */ +int8_t queue_prio_can_msg(can_msg_t msg) { + if (!can_outbound_queue) { return -1; } + + /* Set the priority flag to 1U (Higher number = higher priority) */ + osStatus_t status = osMessageQueuePut(queue, msg_ptr, 1U, 0U); + osThreadFlagsSet(thread_id, flags); + return status; +} + osThreadId_t can_dispatch_handle; const osThreadAttr_t can_dispatch_attributes = { .name = "CanDispatch", From 0fb0ba825527f187fc3253aa6e84733c5f424f2c Mon Sep 17 00:00:00 2001 From: EhlOps Date: Wed, 26 Mar 2025 13:59:54 -0400 Subject: [PATCH 2/7] Fix --- Core/Src/can_handler.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Core/Src/can_handler.c b/Core/Src/can_handler.c index 0b02b05f..b5225cae 100644 --- a/Core/Src/can_handler.c +++ b/Core/Src/can_handler.c @@ -101,8 +101,8 @@ int8_t queue_prio_can_msg(can_msg_t msg) { if (!can_outbound_queue) { return -1; } /* Set the priority flag to 1U (Higher number = higher priority) */ - osStatus_t status = osMessageQueuePut(queue, msg_ptr, 1U, 0U); - osThreadFlagsSet(thread_id, flags); + osStatus_t status = osMessageQueuePut(can_outbound_queue, msg, 1U, 0U); + osThreadFlagsSet(can_dispatch_handle, CAN_DISPATCH_FLAG); return status; } From e3575207a53ffad0b6036b7fb203791a25f78fd4 Mon Sep 17 00:00:00 2001 From: EhlOps Date: Wed, 26 Mar 2025 14:01:12 -0400 Subject: [PATCH 3/7] Clang format --- Core/Src/can_handler.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Core/Src/can_handler.c b/Core/Src/can_handler.c index b5225cae..fcc824d4 100644 --- a/Core/Src/can_handler.c +++ b/Core/Src/can_handler.c @@ -98,7 +98,9 @@ int8_t queue_can_msg(can_msg_t msg) /* TODO: Find what queue_and_set_flag (in embedded base) is used in, then change to support prio */ int8_t queue_prio_can_msg(can_msg_t msg) { - if (!can_outbound_queue) { return -1; } + if (!can_outbound_queue) { + return -1; + } /* Set the priority flag to 1U (Higher number = higher priority) */ osStatus_t status = osMessageQueuePut(can_outbound_queue, msg, 1U, 0U); From 6fb1814e103c0e46bb0676864c77379b83692359 Mon Sep 17 00:00:00 2001 From: EhlOps Date: Wed, 26 Mar 2025 14:13:01 -0400 Subject: [PATCH 4/7] Clang format --- Core/Src/can_handler.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Core/Src/can_handler.c b/Core/Src/can_handler.c index fcc824d4..ac76bc6d 100644 --- a/Core/Src/can_handler.c +++ b/Core/Src/can_handler.c @@ -98,9 +98,8 @@ int8_t queue_can_msg(can_msg_t msg) /* TODO: Find what queue_and_set_flag (in embedded base) is used in, then change to support prio */ int8_t queue_prio_can_msg(can_msg_t msg) { - if (!can_outbound_queue) { - return -1; - } + if (!can_outbound_queue) + return -1; /* Set the priority flag to 1U (Higher number = higher priority) */ osStatus_t status = osMessageQueuePut(can_outbound_queue, msg, 1U, 0U); From aaef76bf512229706172b6b459a0d74ac7b7a4b1 Mon Sep 17 00:00:00 2001 From: EhlOps Date: Wed, 26 Mar 2025 14:31:24 -0400 Subject: [PATCH 5/7] Add prio in dti.c --- Core/Src/dti.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Core/Src/dti.c b/Core/Src/dti.c index b4de3bdb..322be97d 100644 --- a/Core/Src/dti.c +++ b/Core/Src/dti.c @@ -131,7 +131,7 @@ void dti_send_brake_current(uint16_t brake_current) /* Send CAN message */ memcpy(&msg.data, &brake_current, 2); - queue_can_msg(msg); + queue_prio_can_msg(msg); } void dti_set_speed(int32_t rpm) @@ -145,7 +145,7 @@ void dti_set_speed(int32_t rpm) /* Send CAN message */ memcpy(msg.data, &rpm, msg.len); - queue_can_msg(msg); + queue_prio_can_msg(msg); } void dti_set_position(int16_t angle) @@ -157,7 +157,7 @@ void dti_set_position(int16_t angle) /* Send CAN message */ memcpy(msg.data, &angle, msg.len); - queue_can_msg(msg); + queue_prio_can_msg(msg); } void dti_set_relative_current(int16_t relative_current) @@ -169,7 +169,7 @@ void dti_set_relative_current(int16_t relative_current) /* Send CAN message */ memcpy(msg.data, &relative_current, msg.len); - queue_can_msg(msg); + queue_prio_can_msg(msg); } void dti_set_relative_brake_current(int16_t relative_brake_current) @@ -181,7 +181,7 @@ void dti_set_relative_brake_current(int16_t relative_brake_current) /* Send CAN message */ memcpy(msg.data, &relative_brake_current, msg.len); - queue_can_msg(msg); + queue_prio_can_msg(msg); } void dti_set_digital_output(uint8_t output, bool value) @@ -192,7 +192,7 @@ void dti_set_digital_output(uint8_t output, bool value) /* Send CAN message */ memcpy(msg.data, &ctrl, msg.len); - queue_can_msg(msg); + queue_prio_can_msg(msg); } void dti_set_max_ac_current(int16_t current) @@ -204,7 +204,7 @@ void dti_set_max_ac_current(int16_t current) /* Send CAN message */ memcpy(msg.data, ¤t, msg.len); - queue_can_msg(msg); + queue_prio_can_msg(msg); } void dti_set_max_ac_brake_current(int16_t current) @@ -216,7 +216,7 @@ void dti_set_max_ac_brake_current(int16_t current) /* Send CAN message */ memcpy(msg.data, ¤t, msg.len); - queue_can_msg(msg); + queue_prio_can_msg(msg); } void dti_set_max_dc_current(int16_t current) @@ -228,7 +228,7 @@ void dti_set_max_dc_current(int16_t current) /* Send CAN message */ memcpy(msg.data, ¤t, msg.len); - queue_can_msg(msg); + queue_prio_can_msg(msg); } void dti_set_max_dc_brake_current(int16_t current) @@ -240,7 +240,7 @@ void dti_set_max_dc_brake_current(int16_t current) /* Send CAN message */ memcpy(msg.data, ¤t, msg.len); - queue_can_msg(msg); + queue_prio_can_msg(msg); } void dti_set_drive_enable(bool drive_enable) @@ -249,7 +249,7 @@ void dti_set_drive_enable(bool drive_enable) /* Send CAN message */ memcpy(msg.data, &drive_enable, msg.len); - queue_can_msg(msg); + queue_prio_can_msg(msg); } int32_t dti_get_rpm(dti_t *mc) From 855c6ea63898ea5a5b8e59619c5d2e35de4c1628 Mon Sep 17 00:00:00 2001 From: EhlOps Date: Wed, 26 Mar 2025 14:32:39 -0400 Subject: [PATCH 6/7] Clang format --- Core/Src/can_handler.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Core/Src/can_handler.c b/Core/Src/can_handler.c index ac76bc6d..e60b8df6 100644 --- a/Core/Src/can_handler.c +++ b/Core/Src/can_handler.c @@ -97,7 +97,8 @@ int8_t queue_can_msg(can_msg_t msg) } /* TODO: Find what queue_and_set_flag (in embedded base) is used in, then change to support prio */ -int8_t queue_prio_can_msg(can_msg_t msg) { +int8_t queue_prio_can_msg(can_msg_t msg) +{ if (!can_outbound_queue) return -1; From cae9f6d520fe50b6448b90992254bcae8258efe1 Mon Sep 17 00:00:00 2001 From: EhlOps Date: Wed, 26 Mar 2025 14:34:30 -0400 Subject: [PATCH 7/7] Fix --- Core/Src/can_handler.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/Src/can_handler.c b/Core/Src/can_handler.c index e60b8df6..538168ab 100644 --- a/Core/Src/can_handler.c +++ b/Core/Src/can_handler.c @@ -103,7 +103,7 @@ int8_t queue_prio_can_msg(can_msg_t msg) return -1; /* Set the priority flag to 1U (Higher number = higher priority) */ - osStatus_t status = osMessageQueuePut(can_outbound_queue, msg, 1U, 0U); + osStatus_t status = osMessageQueuePut(can_outbound_queue, &msg, 1U, 0U); osThreadFlagsSet(can_dispatch_handle, CAN_DISPATCH_FLAG); return status; }