Update header

This commit is contained in:
Nicola Gutierrez
2022-02-19 11:48:51 +01:00
parent 21b406a270
commit e26751d5d4
8 changed files with 53 additions and 17 deletions
+4
View File
@@ -11,6 +11,10 @@ MmrCanHeader *MMR_CAN_HeaderFromBits(uint32_t *bits) {
}
bool MMR_CAN_IsHeaderScs(MmrCanHeader header) {
return header.messageType == MMR_CAN_MESSAGE_TYPE_SCS;
}
bool MMR_CAN_IsMultiFrame(MmrCanHeader *header) {
return header->messageType == MMR_CAN_MESSAGE_TYPE_MULTI_FRAME;
}
-6
View File
@@ -1,12 +1,6 @@
#include <stdint.h>
#include "mmr_can_message_id.h"
bool MMR_CAN_IsMessageIdSCS(MmrCanMessageId msgId) {
return MMR_CAN_IsMessageIdOfType(msgId, MMR_CAN_MESSAGE_ID_TYPE_SCS);
}
bool MMR_CAN_IsMessageIdOfType(
MmrCanMessageId msgId,
MmrCanMessageIdType type
+16 -3
View File
@@ -18,7 +18,7 @@ bool MMR_CAN_MaybeHandleAck(MmrCanHeader header) {
return false;
}
header.messageType = MMR_CAN_MESSAGE_TYPE_NORMAL;
header.messageType = MMR_CAN_MESSAGE_TYPE_SCS;
MmrCanScsEntry *entry = findEntry(header);
if (entry == NULL) {
return false;
@@ -29,6 +29,15 @@ bool MMR_CAN_MaybeHandleAck(MmrCanHeader header) {
}
HalStatus MMR_CAN_SendAck(
CanHandle *hcan,
MmrCanHeader originalHeader
) {
originalHeader.messageType = MMR_CAN_MESSAGE_TYPE_ACK;
return sendScs(hcan, originalHeader);
}
HalStatus MMR_CAN_SendScs(
CanHandle *hcan,
MmrCanMessageId scsId,
@@ -38,9 +47,13 @@ HalStatus MMR_CAN_SendScs(
.senderId = senderId,
.messageId = scsId,
.priority = MMR_CAN_MESSAGE_PRIORITY_HIGH,
.messageType = MMR_CAN_MESSAGE_TYPE_SCS,
};
putEntry(header);
if (putEntry(header) == NULL) {
return HAL_ERROR;
}
return sendScs(hcan, header);
}
@@ -68,7 +81,7 @@ HalStatus sendScs(CanHandle *hcan, MmrCanHeader header) {
.length = 0,
};
return MMR_CAN_Send(hcan, packet);
return MMR_CAN_SendNoTamper(hcan, packet);
}
+19 -1
View File
@@ -36,14 +36,32 @@ HalStatus MMR_CAN_Send(CanHandle *hcan, MmrCanPacket packet) {
.TransmitGlobalTime = DISABLE,
},
};
syncHeaders(&tp);
syncHeaders(&tp);
return packet.length <= MMR_CAN_MAX_DATA_LENGTH
? sendNormal(&tp)
: sendMulti(&tp);
}
HalStatus MMR_CAN_SendNoTamper(CanHandle *hcan, MmrCanPacket packet) {
TransmissionParams tp = {
.handle = hcan,
.packet = &packet,
.headers.mmr = packet.header,
.headers.tx = {
.IDE = CAN_ID_EXT,
.RTR = CAN_RTR_DATA,
.DLC = packet.length,
.TransmitGlobalTime = DISABLE,
},
};
syncHeaders(&tp);
return send(&tp);
}
static HalStatus sendNormal(TransmissionParams *tp) {
setMessageType(tp, MMR_CAN_MESSAGE_TYPE_NORMAL);
return send(tp);