From 7a46db43e61ef9ba8cec1557ba966f2a38d6e2d4 Mon Sep 17 00:00:00 2001 From: aesthetic-sofa <71275573+aesthetic-sofa@users.noreply.github.com> Date: Tue, 10 May 2022 20:16:52 +0200 Subject: [PATCH 1/2] odometry id --- Inc/mmr_can_message_id.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Inc/mmr_can_message_id.h b/Inc/mmr_can_message_id.h index cdeb956..7af93c6 100644 --- a/Inc/mmr_can_message_id.h +++ b/Inc/mmr_can_message_id.h @@ -120,8 +120,10 @@ enum MmrCanMessageId { MMR_CAN_MESSAGE_ID_AMC_BE, // !AUTONOMOUS_MISSION_CONTROL // DRIVE - MMR_CAN_MESSAGE_ID_D_STEERING_ANGLE = 160, + MMR_CAN_MESSAGE_ID_D_STEERING_ANGLE = 138, MMR_CAN_MESSAGE_ID_D_BREAKING_PERCENTAGE, + MMR_CAN_MESSAGE_ID_D_ACCELERATOR_PERCENTAGE, + MMR_CAN_MESSAGE_ID_D_SPEED_ODOMETRY, // !DRIVE // ECU_BOSCH MMR_CAN_MESSAGE_ID_ECU_BOSCH_ = 192, -- 2.52.0 From d63f41a8d56438a64343b8eece584d1a7fdc73b2 Mon Sep 17 00:00:00 2001 From: Stefano Calabretti <45517710+cala-br@users.noreply.github.com> Date: Tue, 10 May 2022 20:22:53 +0200 Subject: [PATCH 2/2] Bugfix (#12) * Cycle mailboxes * Fix send bug * Refactor --- .gitignore | 3 ++- Src/mmr_can_send.c | 30 +++++++++++++++++++++--------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 8c76af6..ac572a3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ !.vscode/settings.json -.vscode \ No newline at end of file +.vscode +.DS_Store \ No newline at end of file diff --git a/Src/mmr_can_send.c b/Src/mmr_can_send.c index f92599d..6c4d613 100644 --- a/Src/mmr_can_send.c +++ b/Src/mmr_can_send.c @@ -14,7 +14,7 @@ typedef struct { } TransmissionParams; -static TransmissionParams buildParams(CanHandle *hcan, MmrCanPacket packet); +static TransmissionParams buildParams(CanHandle *hcan, MmrCanPacket *packet); static HalStatus send(TransmissionParams *tp); static HalStatus sendNormal(TransmissionParams *tp); static HalStatus sendMulti(TransmissionParams *tp); @@ -23,14 +23,18 @@ static uint8_t computeFramesToSend(MmrCanPacket *packet); static uint8_t computeNextMessageLength(MmrCanPacket *packet); static void setMessageType(TransmissionParams *header, MmrCanMessageType type); static void syncHeaders(TransmissionParams *tp); +static CanMailbox *getNextMailbox(); -static CanMailbox __mailbox; +#define MAILBOXES_COUNT 3 + +static CanMailbox __mailboxes[MAILBOXES_COUNT] = {}; +static uint8_t __currentMailbox = 0; HalStatus MMR_CAN_Send(CanHandle *hcan, MmrCanPacket packet) { TransmissionParams tp = - buildParams(hcan, packet); + buildParams(hcan, &packet); syncHeaders(&tp); return packet.length <= MMR_CAN_MAX_DATA_LENGTH @@ -41,21 +45,21 @@ HalStatus MMR_CAN_Send(CanHandle *hcan, MmrCanPacket packet) { HalStatus MMR_CAN_SendNoTamper(CanHandle *hcan, MmrCanPacket packet) { TransmissionParams tp = - buildParams(hcan, packet); + buildParams(hcan, &packet); return send(&tp); } -static TransmissionParams buildParams(CanHandle *hcan, MmrCanPacket packet) { +static TransmissionParams buildParams(CanHandle *hcan, MmrCanPacket *packet) { return (TransmissionParams) { .handle = hcan, - .packet = &packet, - .headers.mmr = packet.header, + .packet = packet, + .headers.mmr = packet->header, .headers.tx = { .IDE = CAN_ID_EXT, .RTR = CAN_RTR_DATA, - .DLC = packet.length, + .DLC = packet->length, .TransmitGlobalTime = DISABLE, }, }; @@ -108,11 +112,19 @@ static HalStatus send(TransmissionParams *tp) { tp->handle, &tp->headers.tx, tp->packet->data, - &__mailbox + getNextMailbox() ); } +static CanMailbox *getNextMailbox() { + __currentMailbox++; + __currentMailbox %= MAILBOXES_COUNT; + + return __mailboxes + __currentMailbox; +} + + static void syncHeaders(TransmissionParams *tp) { tp->headers.tx.ExtId = MMR_CAN_HeaderToBits(tp->headers.mmr); } -- 2.52.0