Herzog Library 00.00.01  rel_libdev.herzog.00.00.01.10606
uart_device.h
Go to the documentation of this file.
1 
12 #ifndef __UART_DEVICE_H__
13 #define __UART_DEVICE_H__
14 
15 #include <stdint.h>
16 #include "hdf.h"
17 
18 #define UART_BUFF_SIZE 256
19 
20 typedef const struct UART_Device_t UART_Device_Type;
21 typedef void (*uart_cb_func_t)(UART_Device_Type *dev);
22 
26 typedef enum {
40 
44 typedef enum {
48 
52 typedef struct {
53  uint32_t buf_size;
54  uint32_t rx_outptr;
55  uint32_t rx_inptr;
56  uint32_t tx_outptr;
57  uint32_t tx_inptr;
58  uint8_t tx_init;
59  uint8_t tx_buffer[UART_BUFF_SIZE];
60  uint8_t rx_buffer[UART_BUFF_SIZE];
61  uint32_t cb_size;
64 
68 typedef struct {
69  uint8_t DataSize;
70  uint8_t StopBits;
71  uint8_t ParityBit;
72  uint8_t ParityEn;
73  uint8_t LoopBackEn;
74  uint8_t BreakEn;
75  uint8_t StickyParityEn;
77 
81 typedef const struct UART_Device_t {
83  void (*Enable)(void);
84  void (*Disable)(void);
85  void (*RxFiFoReset)(void);
86  void (*TxFiFoReset)(void);
87  uint8_t (*LineStatus)(void);
88  void (*TxData)(uint8_t data);
89  uint8_t (*RxData)(void);
90  uint8_t (*IntStatus)(void );
91  void (*BaudRateDiv)(uint32_t div);
92  void (*EnableRxIRQ)(void);
93  void (*EnableTxIRQ)(void);
94  void (*DisableRxIRQ)(void);
95  void (*DisableTxIRQ)(void);
96  void (*EnableRxTimeoutIRQ)(void);
97  void (*DisableRxTimeoutIRQ)(void);
98  void (*EnableRxErrorIRQ)(void);
99  void (*DisableRxErrorIRQ)(void);
100  uint8_t (*TxEmpty)(void);
101  uint8_t (*RxDataReady)(void);
102  void (*SetDataSize)(uint8_t size);
103  void (*SetStopBit)(uint8_t stop);
104  void (*SetEvenParityBit)(void);
105  void (*SetOddParityBit)(void);
106  void (*EnableParity)(void);
107  void (*DisableParity)(void);
108  void (*EnableStickyParity)(void);
109  void (*DisableStickyParity)(void);
110  void (*EnableBreak)(void);
111  void (*DisableBreak)(void);
112  void (*EnableLoopBack)(void);
113  void (*DisableLoopBack)(void);
114  void (*SetInterruptDelay)(uint8_t delay);
115 
116  char *Name;
119  void *SFRS;
120  uint16_t *BaudRateMap;
121 } UART_Device_t;
122 
132 
139 UART_Device_t *UART_devRequest(const char *name);
140 
147 int32_t UART_devDataReceived(UART_Device_t *dev);
148 
156 
165 int32_t UART_devSendByte(UART_Device_t *dev, uint8_t *data, uint32_t len);
166 
175 int32_t UART_devReceiveByte(UART_Device_t *dev, uint8_t *data, uint32_t len);
176 
183 int32_t UART_devCheckError(UART_Device_t *dev);
184 
191 int32_t UART_devResetDevice(UART_Device_t *dev);
192 
199 int32_t UART_devClearBuffer(UART_Device_t *dev);
200 
209 int32_t UART_devRegisterCallback(UART_Device_t *dev, uint32_t size, void *cb);
210 
211 
212 #endif /* __UART_DEVICE_H__ */
int32_t UART_devDataReceived(UART_Device_t *dev)
Get the number of bytes received.
Definition: uart_device.c:204
Definition: uart_device.h:34
void(* DisableLoopBack)(void)
Definition: uart_device.h:113
void(* uart_cb_func_t)(UART_Device_Type *dev)
Definition: uart_device.h:21
void(* DisableBreak)(void)
Definition: uart_device.h:111
void(* LineInit)(UART_Dev_LineInitData_t *data)
Definition: uart_device.h:82
void(* SetDataSize)(uint8_t size)
Definition: uart_device.h:102
void(* SetInterruptDelay)(uint8_t delay)
Definition: uart_device.h:114
void(* SetEvenParityBit)(void)
Definition: uart_device.h:104
Definition: uart_device.h:46
int32_t UART_devClearBuffer(UART_Device_t *dev)
Clear data buffer in UART device driver.
Definition: uart_device.c:247
uint8_t(* RxDataReady)(void)
Definition: uart_device.h:101
int32_t UART_devDataPendingTX(UART_Device_t *dev)
Check the number of bytes pending on TX.
Definition: uart_device.c:212
void(* EnableLoopBack)(void)
Definition: uart_device.h:112
UART_Dev_State_t * state
Definition: uart_device.h:118
uint32_t cb_size
Definition: uart_device.h:61
Definition: uart_device.h:33
void(* TxData)(uint8_t data)
Definition: uart_device.h:88
Definition: uart_device.h:36
Definition: uart_device.h:29
enum IRQn IRQn_Type
The enumeration of Interrupt Number Assignments.
void(* DisableRxErrorIRQ)(void)
Definition: uart_device.h:99
uint32_t rx_outptr
Definition: uart_device.h:54
A structure to represent UART device driver.
Definition: uart_device.h:81
char * Name
Definition: uart_device.h:116
int32_t UART_devRegisterCallback(UART_Device_t *dev, uint32_t size, void *cb)
Register a call back function to UART device driver.
Definition: uart_device.c:258
uint8_t tx_init
Definition: uart_device.h:58
Definition: uart_device.h:37
void(* DisableTxIRQ)(void)
Definition: uart_device.h:95
uint8_t(* LineStatus)(void)
Definition: uart_device.h:87
Definition: uart_device.h:38
uint8_t(* TxEmpty)(void)
Definition: uart_device.h:100
void * SFRS
Definition: uart_device.h:119
void(* SetOddParityBit)(void)
Definition: uart_device.h:105
int32_t UART_devSendByte(UART_Device_t *dev, uint8_t *data, uint32_t len)
Send data to UART device.
Definition: uart_device.c:220
A structure to represent UART initialization information.
Definition: uart_device.h:68
uint8_t ParityBit
Definition: uart_device.h:71
const struct UART_Device_t UART_Device_t
A structure to represent UART device driver.
#define UART_BUFF_SIZE
Definition: uart_device.h:18
void(* EnableRxTimeoutIRQ)(void)
Definition: uart_device.h:96
uint32_t tx_outptr
Definition: uart_device.h:56
uint8_t LoopBackEn
Definition: uart_device.h:73
uart_cb_func_t cb
Definition: uart_device.h:62
Definition: uart_device.h:32
int32_t UART_devReceiveByte(UART_Device_t *dev, uint8_t *data, uint32_t len)
Receive data to UART device.
Definition: uart_device.c:231
uint8_t StopBits
Definition: uart_device.h:70
Definition: uart_device.h:28
int32_t UART_devResetDevice(UART_Device_t *dev)
Reset UART device.
Definition: uart_device.c:304
void(* SetStopBit)(uint8_t stop)
Definition: uart_device.h:103
void(* TxFiFoReset)(void)
Definition: uart_device.h:86
void(* Disable)(void)
Definition: uart_device.h:84
void(* EnableTxIRQ)(void)
Definition: uart_device.h:93
uint32_t tx_inptr
Definition: uart_device.h:57
void(* EnableBreak)(void)
Definition: uart_device.h:110
uint32_t buf_size
Definition: uart_device.h:53
uint8_t StickyParityEn
Definition: uart_device.h:75
UART_Dev_Parity_t
Enumeration for UART parity bit.
Definition: uart_device.h:44
void(* DisableRxTimeoutIRQ)(void)
Definition: uart_device.h:97
uint8_t DataSize
Definition: uart_device.h:69
void(* Enable)(void)
Definition: uart_device.h:83
int32_t UART_devCheckError(UART_Device_t *dev)
Check UART device for error.
Definition: uart_device.c:292
void(* EnableRxErrorIRQ)(void)
Definition: uart_device.h:98
IRQn_Type IRQ
Definition: uart_device.h:117
uint16_t * BaudRateMap
Definition: uart_device.h:120
Definition: uart_device.h:45
int32_t UART_devInit(UART_Device_t *dev, UART_devBaudRate_t rate, UART_Dev_LineInitData_t *init)
Initialize UART device.
Definition: uart_device.c:124
uint8_t(* IntStatus)(void)
Definition: uart_device.h:90
void(* EnableRxIRQ)(void)
Definition: uart_device.h:92
void(* EnableParity)(void)
Definition: uart_device.h:106
Definition: uart_device.h:30
uint8_t BreakEn
Definition: uart_device.h:74
void(* DisableParity)(void)
Definition: uart_device.h:107
void(* EnableStickyParity)(void)
Definition: uart_device.h:108
void(* DisableRxIRQ)(void)
Definition: uart_device.h:94
void(* RxFiFoReset)(void)
Definition: uart_device.h:85
A structure to represent UART device state.
Definition: uart_device.h:52
Definition: uart_device.h:27
Definition: uart_device.h:35
uint32_t rx_inptr
Definition: uart_device.h:55
void(* BaudRateDiv)(uint32_t div)
Definition: uart_device.h:91
UART_Device_t * UART_devRequest(const char *name)
Request an UART device.
Definition: uart_device.c:111
void(* DisableStickyParity)(void)
Definition: uart_device.h:109
uint8_t ParityEn
Definition: uart_device.h:72
uint8_t(* RxData)(void)
Definition: uart_device.h:89
Definition: uart_device.h:31
UART_devBaudRate_t
Enumeration for UART baud rate.
Definition: uart_device.h:26