// // Created by cfif on 16.03.2024. // #ifndef ARTERY_CAN_MODULE_CAN_FRAME_H #define ARTERY_CAN_MODULE_CAN_FRAME_H #include "SerialPortFrameIO.h" #include "SerialPortIO.h" #include "cmsis_os2.h" #include "n32g45x.h" typedef enum { CAN_BAUD_RATE_1000K, CAN_BAUD_RATE_500K, CAN_BAUD_RATE_250K, CAN_BAUD_RATE_125K } eCanBaudRate; typedef enum { CAN_STD_ID, CAN_EXT_ID } eCanTypeFrame; typedef enum { CAN_TX_MAILBOX0 = 0x00, CAN_TX_MAILBOX1 = 0x01, CAN_TX_MAILBOX2 = 0x02 } can_tx_mailbox_num_type; typedef struct { CAN_Module *can; uint32_t id; uint32_t id1; eCanTypeFrame canTypeFrame; bool reInit; eCanBaudRate canBaudRate; osMessageQueueId_t rxDataQueue0; osMessageQueueId_t rxDataQueue1; osMessageQueueId_t rxDataSnifferQueue0; osMessageQueueId_t rxDataSnifferQueue1; osMessageQueueId_t txAccessQueue1; osMessageQueueId_t txAccessQueue2; } tCanSerialPortFrameNation; void CanSerialPortFrameIrqRxProcessing0(tCanSerialPortFrameNation *env); void CanSerialPortFrameIrqRxProcessing1(tCanSerialPortFrameNation *env); void vCanSerialPortFrameInit( tCanSerialPortFrameNation *env, CAN_Module *CANx, eCanBaudRate canBaudRate, uint8_t irqSubPriority, eCanTypeFrame canTypeFrame, uint32_t canId, uint32_t rxBufferLength0, uint32_t rxSnifferLength0, uint32_t rxBufferLength1, uint32_t rxSnifferLength1 ); void CanSerialPortFrameSetId(tCanSerialPortFrameNation *env, uint32_t id); void CanSerialPortFrameSetId1(tCanSerialPortFrameNation *env, uint32_t id); void CanSerialPortFrameSetType(tCanSerialPortFrameNation *env, eCanTypeFrame canTypeFrame); tSerialPortFrameIO CanPortFrame_GetIo(tCanSerialPortFrameNation *env); tSerialPortFrameIO CanPortFrame_GetSnifferIo(tCanSerialPortFrameNation *env); void CanSerialPortFrameSetFilter(tCanSerialPortFrameNation *env, bool canFilterEnable, uint32_t canFilter0Id, uint32_t canFilter0Mask, uint32_t canFilter1Id, uint32_t canFilter1Mask); #endif //ARTERY_CAN_MODULE_CAN_FRAME_H