CanSerialPortFrame_ARTERY_F435/Inc/CanSerialPortFrame.h

72 lines
1.8 KiB
C

//
// 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