// // 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 "cmsis_os2.h" #include "stdbool.h" #include "at32f435_437_can.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 struct { can_type *can; uint32_t id; uint32_t id1; eCanTypeFrame canTypeFrame; bool canFilterEnable; bool reInit; can_filter_init_type can_filter0_init_struct; can_filter_init_type can_filter1_init_struct; eCanBaudRate canBaudRate; osMessageQueueId_t rxDataQueue0; osMessageQueueId_t rxDataQueue1; osMessageQueueId_t rxDataSnifferQueue0; osMessageQueueId_t rxDataSnifferQueue1; osMessageQueueId_t txAccessQueue; } tCanSerialPortFrameArtery; void CanSerialPortFrameIrqRxProcessing0(tCanSerialPortFrameArtery *env); void CanSerialPortFrameIrqRxProcessing1(tCanSerialPortFrameArtery *env); void vCanSerialPortFrameInit( tCanSerialPortFrameArtery *env, can_type *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(tCanSerialPortFrameArtery *env, uint32_t id); void CanSerialPortFrameSetId1(tCanSerialPortFrameArtery *env, uint32_t id); void CanSerialPortFrameSetType(tCanSerialPortFrameArtery *env, eCanTypeFrame canTypeFrame); tSerialPortFrameIO CanPortFrame_GetIo(tCanSerialPortFrameArtery *env); tSerialPortFrameIO CanPortFrame_GetSnifferIo(tCanSerialPortFrameArtery *env); #endif //ARTERY_CAN_MODULE_CAN_FRAME_H