|
|
- #ifndef SOFTUART_H_
- #define SOFTUART_H_
-
- #include "user_interface.h"
-
- #define SOFTUART_MAX_RX_BUFF 64
-
- #define SOFTUART_GPIO_COUNT 16
-
- typedef struct softuart_pin_t {
- uint8_t gpio_id;
- uint32_t gpio_mux_name;
- uint8_t gpio_func;
- } softuart_pin_t;
-
- typedef struct softuart_buffer_t {
- char receive_buffer[SOFTUART_MAX_RX_BUFF];
- uint8_t receive_buffer_tail;
- uint8_t receive_buffer_head;
- uint8_t buffer_overflow;
- } softuart_buffer_t;
-
- typedef struct {
- softuart_pin_t pin_rx;
- softuart_pin_t pin_tx;
- bool inverse;
- //optional rs485 tx enable pin (high -> tx enabled)
- uint8_t pin_rs485_tx_enable;
- //wether or not this softuart is rs485 and controlls rs485 tx enable pin
- uint8_t is_rs485;
- volatile softuart_buffer_t buffer;
- uint16_t bit_time;
- } Softuart;
-
-
- bool Softuart_Available(Softuart *s);
- void Softuart_Intr_Handler(Softuart *s);
- void Softuart_SetPinRx(Softuart *s, uint8_t gpio_id);
- void Softuart_SetPinTx(Softuart *s, uint8_t gpio_id);
- void Softuart_EnableRs485(Softuart *s, uint8_t gpio_id);
- void Softuart_Init(Softuart *s, uint32_t baudrate, bool inverse);
- void Softuart_Putchar(Softuart *s, char data);
- void Softuart_Puts(Softuart *s, const char *c );
- uint8_t Softuart_Readline(Softuart *s, char* Buffer, uint8_t MaxLen );
- uint8_t Softuart_Read(Softuart *s);
-
- //define mapping from pin to functio mode
- typedef struct {
- uint32_t gpio_mux_name;
- uint8_t gpio_func;
- } softuart_reg_t;
-
- #endif /* SOFTUART_H_ */
|