// // Created by cfif on 16.09.22. // #ifndef SERIALPORT_SERIALPORT_GIGA_H #define SERIALPORT_SERIALPORT_GIGA_H #include "SerialPort.h" #include "gd32f4xx.h" #include "cmsis_os2.h" #include "stdbool.h" typedef struct { uint32_t uart; dma_channel_enum dma_channel; dma_single_data_parameter_struct dma_init_struct; uint8_t* dma_buf; uint32_t offset; osMessageQueueId_t rxDataQueue; osMessageQueueId_t rxDataSnifferQueue; } tSerialPortGiga; void vSerialPortInit( tSerialPortGiga *env, uint32_t uart, uint32_t rxBufferLength ); void vSerialPortIrqProcessing(tSerialPortGiga *env); void vSerialPortIrqProcessingDMA(tSerialPortGiga *env); void vSerialPortIrqProcessingDMAloop(tSerialPortGiga *env, uint32_t len); tSerialPortIO vSerialPortGetIo(tSerialPortGiga *env); tSerialPortIO vSerialPortGetSnifferIo(tSerialPortGiga *env); uint16_t vSerialPortTransmit(tSerialPortGiga *env, uint8_t *data, uint16_t size, uint32_t timeout); #endif //SERIALPORT_SERIALPORT_GIGA_H