Refactor CAN sending to interface agnostic

This commit is contained in:
Daniel Öster 2024-08-05 23:47:34 +03:00
parent 28703453f9
commit 4f508dba86
8 changed files with 78 additions and 57 deletions

View file

@ -878,3 +878,41 @@ void check_reset_reason() {
break;
}
}
void transmit_can(CAN_frame_t* tx_frame, int interface) {
switch (interface) {
case CAN_NATIVE:
ESP32Can.CANWriteFrame(tx_frame);
break;
case CANFD_NATIVE:
//TODO for stark
break;
case CAN_ADDON_MCP2515: {
#ifdef DUAL_CAN
//Struct with ACAN2515 library format, needed to use the MCP2515 library for CAN2
CANMessage MCP2515Frame;
MCP2515Frame.id = tx_frame->MsgID;
//MCP2515Frame.ext = false; //TODO: Howto handle this?
MCP2515Frame.len = tx_frame->FIR.B.DLC;
for (uint8_t i = 0; i < MCP2515Frame.len; i++) {
MCP2515Frame.data[i] = tx_frame->data.u8[i];
}
can.tryToSend(MCP2515Frame);
#endif
} break;
case CAN_ADDON_FD_MCP2518:
#ifdef CAN_FD
CANFDMessage MCP2518Frame;
MCP2518Frame.id = tx_frame->MsgID;
//MCP2518Frame.ext = false; //TODO: Howto handle this?
MCP2518Frame.len = tx_frame->FIR.B.DLC;
for (uint8_t i = 0; i < MCP2518Frame.len; i++) {
MCP2518Frame.data[i] = tx_frame->data.u8[i];
}
canfd.tryToSend(MCP2518Frame);
#endif
break;
default:
// Invalid interface sent with function call. TODO: Raise event that coders messed up
break;
}
}