Skip to content

Commit 4f0f2ca

Browse files
committed
fix: buffer backpressures to MSR
propagate queue-full failures to send back to the move status reporter task, which should ensure that acks get sent when they might otherwise have not made it into the buffer.
1 parent 00fc7ca commit 4f0f2ca

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

include/motor-control/core/tasks/move_status_reporter_task.hpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "motor-control/core/tasks/messages.hpp"
1010
#include "motor-control/core/tasks/usage_storage_task.hpp"
1111
#include "motor-control/core/utils.hpp"
12+
#include "common/core/hardware_delay.hpp"
1213

1314
namespace move_status_reporter_task {
1415

@@ -46,7 +47,9 @@ class MoveStatusMessageHandler {
4647
void handle_message(std::monostate&) {}
4748

4849
void handle_message(const can::messages::ErrorMessage& msg) {
49-
can_client.send_can_message(can::ids::NodeId::host, msg);
50+
while (!can_client.send_can_message(can::ids::NodeId::host, msg)) {
51+
vtask_hardware_delay(1);
52+
}
5053
}
5154

5255
void handle_message(const can::messages::StopRequest& msg) {
@@ -69,7 +72,9 @@ class MoveStatusMessageHandler {
6972
.encoder_position_um = end_position,
7073
.position_flags = message.position_flags,
7174
.ack_id = static_cast<uint8_t>(message.ack_id)};
72-
can_client.send_can_message(can::ids::NodeId::host, msg);
75+
while (!can_client.send_can_message(can::ids::NodeId::host, msg)) {
76+
vtask_hardware_delay(1);
77+
}
7378

7479
int32_t distance_traveled_um =
7580
end_position - fixed_point_multiply(um_per_encoder_pulse,
@@ -90,7 +95,9 @@ class MoveStatusMessageHandler {
9095
.encoder_position = fixed_point_multiply(
9196
um_per_encoder_pulse, message.encoder_pulses, radix_offset_0{}),
9297
.position_flags = message.position_flags};
93-
can_client.send_can_message(can::ids::NodeId::host, msg);
98+
while (!can_client.send_can_message(can::ids::NodeId::host, msg)) {
99+
vtask_hardware_delay(1);
100+
}
94101
}
95102

96103
void handle_message(const usage_messages::IncreaseForceTimeUsage& message) {

0 commit comments

Comments
 (0)