// ----------------------------------------------------------------------------- /// @file uart.h /// @brief File description // ----------------------------------------------------------------------------- // Micro-Key bv // Industrieweg 28, 9804 TG Noordhorn // Postbus 92, 9800 AB Zuidhorn // The Netherlands // Tel: +31 594 503020 // Fax: +31 594 505825 // Email: support@microkey.nl // Web: www.microkey.nl // ----------------------------------------------------------------------------- /// $Revision: $ /// $Author: $ /// $Date: $ // (c) 2017 Micro-Key bv // ----------------------------------------------------------------------------- /// @defgroup {group_name} {group_description} /// Description /// @file uart.h /// @ingroup {group_name} #ifndef MISC_INC_UART_H_ #define MISC_INC_UART_H_ // ----------------------------------------------------------------------------- // Include files // ----------------------------------------------------------------------------- #include "FreeRTOS.h" #include "semphr.h" #include "platform.h" // ----------------------------------------------------------------------------- // Constant and macro definitions // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- // Type definitions. // ----------------------------------------------------------------------------- struct usartQueueItem { char byte; }; struct UartParameters { int baudrate; }; struct Uart { USART_TypeDef* USART_TypeDef; USART_InitTypeDef USART_InitStruct; USART_ClockInitTypeDef* USART_ClockInitStruct; T_PL_GPIO USART_RX; T_PL_GPIO USART_TX; T_PL_GPIO USART_CTS; T_PL_GPIO USART_RTS; SemaphoreHandle_t txSemaphore; //! Semaphore for transmit handler xQueueHandle txQueue; //! USART Transfer queue identifier xQueueHandle rxQueue; //! USART Receive queue identifier }; // ----------------------------------------------------------------------------- // Function declarations // ----------------------------------------------------------------------------- /** ---------------------------------------------------------------------------- * Uart_Init * Description of function * * @param _self The UART object to initialize * @param baudrate Baudrate to use * @param wordlength Wordlength for the UART * @param stopbits Number of stopbits to use * @param parity Parity of the UART * @param mode Mode (TX, RX, Both) * @param hwFlowControl Control of hardware flow control * * @return ErrorStatus SUCCESS if writing message was successful * ERROR otherwise * * @todo * ----------------------------------------------------------------------------- */ extern ErrorStatus Uart_Init(struct Uart* _self, uint32_t baudrate, uint16_t wordlength, uint16_t stopbits, uint16_t parity, uint16_t mode, uint16_t hwFlowControl, UBaseType_t txQueueSize, UBaseType_t rxQueueSize); /** ---------------------------------------------------------------------------- * Uart_Write * Description of function * * @param _self The UART class object * @param buffer Message string to send * @parm length Message length * * @return ErrorStatus SUCCESS if writing message was successful * ERROR otherwise * * @todo * ----------------------------------------------------------------------------- */ extern ErrorStatus Uart_Write(struct Uart* _self, const uint8_t* buffer, int length); #endif /* MISC_INC_UART_H_ */