/*
* serial.h
*
* Created on: 4 Jan 2016
* Author: Mike
*/
/* Includes ------------------------------------------------------------------*/
#include "stm32f1xx_hal.h"
#pragma once
#include <stdint.h>
#if defined __cplusplus
extern "C"
{
#endif
struct usart_ctl
{
/// @brief UART handle
UART_HandleTypeDef *Handle;
/// @brief Locally maintained transmit buffer
volatile uint8_t * tx_usart_buff;
uint16_t tx_usart_buff_size;
uint16_t rx_usart_buff_size;
volatile uint16_t tx_usart_in_Ptr;
volatile uint16_t tx_usart_out_Ptr;
volatile uint16_t tx_usart_overruns;
/// @brief Set when the usart is transmitting
volatile uint8_t tx_usart_running;
/// @brief Locally maintained receive buffer
volatile uint8_t * rx_usart_buff;
volatile uint16_t rx_usart_in_Ptr;
volatile uint16_t rx_usart_out_Ptr;
/// @brief Set when the receiver buffer is full
volatile uint8_t rx_usart_buffer_full;
} ;
#if defined SERIAL_UART1
extern struct usart_ctl uc1;
#endif
#if defined SERIAL_UART2
extern struct usart_ctl uc2;
#endif
#if defined SERIAL_UART3
extern struct usart_ctl uc3;
#endif
#if defined SERIAL_UART4
extern struct usart_ctl uc4;
#endif
#if defined SERIAL_UART5
extern struct usart_ctl uc5;
#endif
/// @brief Establish this instance as being in control of a USART
/// @param instance Pointer to usart_ctl structure
/// @param usart Handle to usart maintained by HAL
/// @param tx_buffer Statically allocated memory for Tx buffer
/// @param rx_buffer Statically allocated memory for Rx buffer
/// @param rx_buffer_size Rx Buffer size
/// @param tx_buffer_size Tx Buffer size
extern void init_usart_ctl(struct usart_ctl *instance,
UART_HandleTypeDef *usart,
volatile uint8_t * tx_buffer,
volatile uint8_t * rx_buffer,
uint16_t tx_buffer_size,
uint16_t rx_buffer_size);
#if defined __cplusplus
}
#endif
#include "serialCalls.h"