1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- /*
- * uart_tasks.h
- *
- * Created on: Aug 14, 2024
- * Author: jakubski
- */
- #ifndef INC_UART_TASKS_H_
- #define INC_UART_TASKS_H_
- #include "FreeRTOS.h"
- #include "FreeRTOSConfig.h"
- #include "task.h"
- #include "message_buffer.h"
- #include "main.h"
- #include "serial_protocol.h"
- #include "measurements.h"
- #define UART_RX_BUFF_SIZE 256
- #define UART_TX_BUFF_SIZE 256
- #define UART1_RX_BUFF_SIZE UART_RX_BUFF_SIZE
- #define UART1_TX_BUFF_SIZE UART_TX_BUFF_SIZE
- #define UART2_RX_BUFF_SIZE UART_RX_BUFF_SIZE
- #define UART2_TX_BUFF_SIZE UART_TX_BUFF_SIZE
- #define UART3_RX_BUFF_SIZE UART_RX_BUFF_SIZE
- #define UART3_TX_BUFF_SIZE UART_TX_BUFF_SIZE
- #define UART6_RX_BUFF_SIZE UART_RX_BUFF_SIZE
- #define UART6_TX_BUFF_SIZE UART_TX_BUFF_SIZE
- #define UART8_RX_BUFF_SIZE UART_RX_BUFF_SIZE
- #define UART8_TX_BUFF_SIZE UART_TX_BUFF_SIZE
- #define INPUT_DATA_BUFF_SIZE UART8_RX_BUFF_SIZE
- #define OUTPUT_DATA_BUFF_SIZE 128
- struct _SerialProtocolFrameHeader {
- uint16_t frameId;
- SerialProtocolCommands frameCommand;
- SerialProtocolRespStatus respStatus;
- uint16_t frameDataLength;
- portBASE_TYPE isResponseFrame;
- };
- typedef struct _SerialProtocolFrameHeader SerialProtocolFrameHeader;
- struct _SerialProtocolFrameData {
- SerialProtocolFrameHeader frameHeader;
- uint8_t dataBuffer[INPUT_DATA_BUFF_SIZE];
- };
- typedef struct _SerialProtocolFrameData SerialProtocolFrameData;
- typedef void (*ProcessDataCallbackFunc) (void* arg, SerialProtocolFrameData* spFrameData);
- struct _UartTaskData {
- uint8_t* uartRxBuffer;
- uint16_t uartRxBufferLen;
- uint16_t uartRxBufferPos;
- uint8_t* uartTxBuffer;
- uint16_t uartTxBufferLen;
- uint8_t* frameData;
- uint16_t frameDataLen;
- uint16_t frameBytesCount;
- osThreadId_t uartRecieveTaskHandle;
- osThreadId_t uartTransmitTaskHandle;
- osMutexId_t rxDataBufferMutex;
- MessageBufferHandle_t processRxDataMsgBuffer;
- ProcessDataCallbackFunc processDataCb;
- osMessageQueueId_t *sendCmdToSlaveQueue;
- UART_HandleTypeDef* huart;
- uint8_t uartNumber;
- };
- typedef struct _UartTaskData UartTaskData;
- extern RESMeasurements resMeasurements[SLAVES_COUNT];
- extern SesnorsInfo sensorsInfo[SLAVES_COUNT];
- extern uint32_t slaveLastSeen[SLAVES_COUNT];
- extern osMutexId_t resMeasurementsMutex;
- extern osMutexId_t sensorsInfoMutex;
- extern UartTaskData uart1TaskData; // Board 1
- extern UartTaskData uart3TaskData; // Board 2
- extern UartTaskData uart6TaskData; // Board 3
- extern UartTaskData uart2TaskData; // Board 4
- extern UartTaskData uart8TaskData; // Debug
- void UartTasksInit(void);
- void UartTaskCreate (UartTaskData* uartTaskData);
- void UartRxTask (void* argument);
- void UartTxTask (void* argument);
- void HandleUartRxCallback (UartTaskData* uartTaskData, UART_HandleTypeDef* huart, uint16_t Size);
- void MeasurmentsReqSchedulerTaskInit(void);
- void MeasurmentsReqSchedulerTask(void* argument);
- #endif /* INC_UART_TASKS_H_ */
|