Mercurial > public > ostc4
diff Small_CPU/Inc/uart.h @ 981:c6c781a2e85b default
Merge into default
| author | heinrichsweikamp |
|---|---|
| date | Tue, 11 Feb 2025 18:12:00 +0100 |
| parents | 0b81ac558e89 |
| children | d9290c76b840 |
line wrap: on
line diff
--- a/Small_CPU/Inc/uart.h Tue Aug 13 13:24:54 2024 +0200 +++ b/Small_CPU/Inc/uart.h Tue Feb 11 18:12:00 2025 +0100 @@ -25,29 +25,69 @@ #include "stm32f4xx_hal.h" -#define BUFFER_NODATA (7u) /* The read function needs a byte which indicated that no data for processing is available.*/ - /* This byte shall never appear in a normal data steam */ +#define BUFFER_NODATA_LOW (0x15) /* The read function needs a signiture which indicates that no data for processing is available.*/ +#define BUFFER_NODATA_HIGH (0xA5) + +#define TX_BUF_SIZE (80u) /* max length for commands */ +#define CHUNK_SIZE (80u) /* the DMA will handle chunk size transfers */ +#define CHUNKS_PER_BUFFER (3u) + + typedef struct + { + UART_HandleTypeDef* pHandle; /* Pointer to UART handle structure */ + + uint8_t* pRxBuffer; /* Pointer to receive buffer */ + uint8_t* pTxBuffer; /* Pointer to transmit buffer */ + uint8_t* pTxQue; /* Pointer to transmit que */ + uint8_t rxWriteIndex ; /* Index of the data item which is analyzed */ + uint8_t rxReadIndex; /* Index at which new data is stared */ + uint8_t txBufferQueLen; /* Length of qued data waiting for transmission */ + + uint8_t dmaRxActive; /* Indicator if DMA reception needs to be started */ + uint8_t dmaTxActive; /* Indicator if DMA reception needs to be started */ + + } sUartComCtrl; + +extern sUartComCtrl Uart1Ctrl; + +UART_HandleTypeDef huart1; void MX_USART1_UART_Init(void); void MX_USART1_UART_DeInit(void); void MX_USART1_DMA_Init(void); + +void MX_USART6_UART_Init(void); +void MX_USART6_DMA_Init(void); +void MX_USART6_UART_DeInit(void); +void GNSS_IO_init(void); + uint8_t UART_ButtonAdjust(uint8_t *array); -void UART_StartDMA_Receiption(void); +void UART_StartDMA_Receiption(sUartComCtrl* pUartCtrl); #ifdef ENABLE_CO2_SUPPORT void UART_HandleCO2Data(void); void DigitalCO2_SendCmd(uint8_t CO2Cmd, uint8_t *cmdString, uint8_t *cmdLength); #endif + +#ifdef ENABLE_GNSS_SUPPORT +void UART_HandleGnssData(void); +#endif #ifdef ENABLE_SENTINEL_MODE void UART_HandleSentinelData(void); #endif +void UART_SetGnssCtrl(sUartComCtrl* pTarget); +sUartComCtrl* UART_GetGnssCtrl(); +void UART_clearRxBuffer(sUartComCtrl* pUartCtrl); uint8_t UART_isCO2Connected(); uint8_t UART_isSentinelConnected(); void UART_setTargetChannel(uint8_t channel); void UART_MUX_SelectAddress(uint8_t muxAddress); void UART_SendCmdString(uint8_t *cmdString); -void UART_ReadData(uint8_t sensorType); -void UART_FlushRxBuffer(void); +void UART_SendCmdUbx(const uint8_t *cmd, uint8_t len); +void UART_ReadData(uint8_t sensorType, uint8_t flush); +void UART_WriteData(sUartComCtrl* pUartCtrl); void UART_ChangeBaudrate(uint32_t newBaudrate); +uint8_t UART_isComActive(uint8_t sensorId); +uint8_t UART_isEndIndication(sUartComCtrl* pCtrl, uint8_t index); void StringToInt(char *pstr, uint32_t *puInt32); void StringToUInt64(char *pstr, uint64_t *puint64);
