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);