view Small_CPU/Inc/uart.h @ 948:abdd72c8b567 Evo_2_23

GNSS sleep mode: Backup voltage is now enabled during initialization. Power saving interval has been changed to 20 second active in a 60 minutes cycle.
author Ideenmodellierer
date Sun, 22 Dec 2024 21:15:05 +0100
parents 3029f0332f4f
children
line wrap: on
line source

/**
  ******************************************************************************
  * @file    uart.h
  * @author  heinrichs weikamp gmbh
  * @version V0.0.1
  * @date    27-March-2014
  * @brief   button control
  *           
  ******************************************************************************
  * @attention
  *
  * <h2><center>&copy; COPYRIGHT(c) 2015 heinrichs weikamp</center></h2>
  *
  ******************************************************************************
  */ 

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef UART_H
#define UART_H

#ifdef __cplusplus
 extern "C" {
#endif

#include "stm32f4xx_hal.h"


#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(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_SendCmdUbx(const uint8_t *cmd, uint8_t len);
void UART_ReadData(uint8_t sensorType);
void UART_WriteData(sUartComCtrl* pUartCtrl);
void UART_FlushRxBuffer(void);
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);

#ifdef __cplusplus
}
#endif

#endif /* UART_H */

/************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/