RUI3 (RAK Unified Interface 3) - RAK4631
udrv_serial.h
Go to the documentation of this file.
1 
9 #ifndef _UDRV_SERIAL_H_
10 #define _UDRV_SERIAL_H_
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 #include <stddef.h>
17 #include <stdint.h>
18 #include <stdarg.h>
19 #include <stdbool.h>
20 
21 typedef enum _SERIAL_STATE{
26  SERIAL_STATE_BOOT_1 = 4, /* B */
27  SERIAL_STATE_BOOT_2 = 5, /* O */
28  SERIAL_STATE_BOOT_3 = 6, /* O */
29  SERIAL_STATE_BOOT_4 = 7, /* T */
30  SERIAL_STATE_ATM_1 = 8, /* A */
31  SERIAL_STATE_ATM_2 = 9, /* T */
32  SERIAL_STATE_ATM_3 = 10, /* M */
33  SERIAL_STATE_AT_END = 11, /* CRLF */
35 } SERIAL_STATE;
36 
37 typedef enum _SERIAL_EVENT{
47 } SERIAL_EVENT;
48 
49 #define SERIAL_NO_TIMEOUT UINT32_MAX
50 
51 typedef enum _SERIAL_WIRE_MODE_E {
56 
57 typedef enum _SERIAL_WORD_LEN_E {
63 
64 typedef enum _SERIAL_STOP_BIT_E {
68 
69 typedef enum _SERIAL_PARITY_E {
76 
77 typedef enum _SERIAL_PORT
78 {
79  SERIAL_UART0 = 0, // Use UART0 for I/O
80  SERIAL_UART1, // Use UART1 for I/O
81  SERIAL_UART2, // Use UART2 for I/O
82 #ifdef SUPPORT_USB
83  SERIAL_USB0, // Use USB0 for I/O
84 #endif
85 #ifdef SUPPORT_BLE
86  SERIAL_BLE0, // Use BLE for I/O
87 #endif
88 #ifdef SUPPORT_NFC
89  SERIAL_NFC, // Use NFC for I/O
90 #endif
92 } SERIAL_PORT;
93 
94 typedef enum _SERIAL_WLOCK_STATE
95 {
100 
101 typedef void (*SERIAL_CLI_HANDLER) (SERIAL_PORT, void *);
102 
103 //The structure of serial function
105  void (*SERIAL_INIT) (SERIAL_PORT Port, uint32_t BaudRate, SERIAL_WORD_LEN_E DataBits, SERIAL_STOP_BIT_E StopBits, SERIAL_PARITY_E Parity, SERIAL_WIRE_MODE_E WireMode);
106  void (*SERIAL_DEINIT) (SERIAL_PORT Port);
107  int32_t (*SERIAL_WRITE) (SERIAL_PORT Port, uint8_t const *Buffer, int32_t NumberOfBytes, uint32_t Timeout);
108  int32_t (*SERIAL_READ) (SERIAL_PORT Port, uint8_t *Buffer, int32_t NumberOfBytes, uint32_t Timeout);
109  int32_t (*SERIAL_PEEK) (SERIAL_PORT Port);
110  void (*SERIAL_FLUSH) (SERIAL_PORT Port, uint32_t Timeout);
111  int32_t (*SERIAL_READ_AVAIL) (SERIAL_PORT Port);
112  bool (*SERIAL_IS_READY) (SERIAL_PORT Port);
113  //void (*SERIAL_SUSPEND) (void);
114  //void (*SERIAL_RESUME) (void);
115 };
116 
123 
129 bool is_udrv_serial_initialized(SERIAL_PORT Port);
130 
141 void udrv_serial_init (SERIAL_PORT Port, uint32_t BaudRate, SERIAL_WORD_LEN_E DataBits, SERIAL_STOP_BIT_E StopBits, SERIAL_PARITY_E Parity, SERIAL_WIRE_MODE_E WireMode);
142 
148 void udrv_serial_deinit (SERIAL_PORT Port);
149 
150 /***************************************************************************************
151  * @brief This API is used to write a byte sequence to a specified serial port in CLI mode.
152  * @retval int32_t
153  * @return number of bytes sent successfully
154  * @param SERIAL_PORT Port: the specified serial port
155  * @param uint8_t const *Buffer:
156  * @param int32_t NumberOfBytes:
157  */
158 int32_t udrv_serial_write (SERIAL_PORT Port, uint8_t const *Buffer, int32_t NumberOfBytes);
159 
168 int32_t udrv_serial_printf (SERIAL_PORT Port, const char *fmt, ...);
169 
170 #ifndef RUI_BOOTLOADER
171 
178 int32_t udrv_serial_log_printf (const char *fmt, ...);
179 #endif
180 
189 int32_t udrv_serial_read (SERIAL_PORT Port, uint8_t *Buffer, int32_t NumberOfBytes);
190 
197 int32_t udrv_serial_peek (SERIAL_PORT Port);
198 
204 void udrv_serial_flush (SERIAL_PORT Port);
205 
210 void udrv_serial_lock (void);
211 
216 void udrv_serial_unlock (void);
217 
224 int32_t udrv_serial_get_passwd (char *passwd, uint32_t len);
225 
232 int32_t udrv_serial_set_passwd (const char *passwd, uint32_t len);
233 
240 
246 void udrv_serial_disable (SERIAL_PORT Port);
247 
253 void udrv_serial_enable (SERIAL_PORT Port);
254 
262 int32_t udrv_serial_read_available(SERIAL_PORT Port);
263 
268 uint32_t udrv_serial_get_timeout ();
269 
275 void udrv_serial_set_timeout (uint32_t timeout);
276 
281 void udrv_serial_suspend();
282 
287 void udrv_serial_resume();
288 
293 #ifndef RUI_BOOTLOADER
294 void serial_fallback_handler(SERIAL_PORT port, uint8_t ch);
295 #endif
296 
297 #ifdef __cplusplus
298 }
299 #endif
300 
301 #endif // #ifndef _UDRV_SERIAL_H_
Definition: udrv_serial.h:32
bool is_udrv_serial_initialized(SERIAL_PORT Port)
This API is used to check if a specified serial port is initialized.
bool(* SERIAL_IS_READY)(SERIAL_PORT Port)
Definition: udrv_serial.h:112
The parity bit is sent as/checked to be 1.
Definition: udrv_serial.h:73
Definition: udrv_serial.h:39
No parity bit is transmitted nor expected.
Definition: udrv_serial.h:70
Definition: udrv_serial.h:45
int32_t(* SERIAL_WRITE)(SERIAL_PORT Port, uint8_t const *Buffer, int32_t NumberOfBytes, uint32_t Timeout)
Definition: udrv_serial.h:107
int32_t(* SERIAL_READ)(SERIAL_PORT Port, uint8_t *Buffer, int32_t NumberOfBytes, uint32_t Timeout)
Definition: udrv_serial.h:108
Character&#39;s Word Length 6 bits.
Definition: udrv_serial.h:59
void(* SERIAL_CLI_HANDLER)(SERIAL_PORT, void *)
Definition: udrv_serial.h:101
void(* SERIAL_FLUSH)(SERIAL_PORT Port, uint32_t Timeout)
Definition: udrv_serial.h:110
Definition: udrv_serial.h:28
Definition: udrv_serial.h:46
Definition: udrv_serial.h:80
The parity bit is sent as/checked to be 0.
Definition: udrv_serial.h:74
int32_t udrv_serial_get_passwd(char *passwd, uint32_t len)
This API is used to get the unlock password for a specified serial port.
Character&#39;s Word Length 7 bits.
Definition: udrv_serial.h:60
enum _SERIAL_EVENT SERIAL_EVENT
_SERIAL_EVENT
Definition: udrv_serial.h:37
void udrv_serial_unlock(void)
This API is used to maunually unlock a specified serial port.
void udrv_serial_set_timeout(uint32_t timeout)
This API is used to set the timeout value for read/write/flush API.
Definition: udrv_serial.h:81
enum _SERIAL_STATE SERIAL_STATE
Character&#39;s Word Length 8 bits.
Definition: udrv_serial.h:61
Definition: udrv_serial.h:24
void udrv_serial_resume()
Resume serial hardware after leaving sleep mode.
void udrv_serial_register_onewire_handler(SERIAL_CLI_HANDLER handler)
This API is used to register a one-wire handler.
int32_t udrv_serial_printf(SERIAL_PORT Port, const char *fmt,...)
This API is like printf() to format any kinds of data type into a byte sequence, and write it to a sp...
The number of bits including the parity bit must be even.
Definition: udrv_serial.h:72
Definition: udrv_serial.h:97
enum _SERIAL_WORD_LEN_E SERIAL_WORD_LEN_E
Definition: udrv_serial.h:79
uint32_t udrv_serial_get_timeout()
This API is used to get the timeout value for read/write/flush API.
_SERIAL_PARITY_E
Definition: udrv_serial.h:69
Definition: udrv_serial.h:41
Definition: udrv_serial.h:54
int32_t udrv_serial_set_passwd(const char *passwd, uint32_t len)
This API is used to set the unlock password for a specified serial port.
void udrv_serial_init(SERIAL_PORT Port, uint32_t BaudRate, SERIAL_WORD_LEN_E DataBits, SERIAL_STOP_BIT_E StopBits, SERIAL_PARITY_E Parity, SERIAL_WIRE_MODE_E WireMode)
This API is used to initialize a specified serial port.
Definition: udrv_serial.h:89
Definition: udrv_serial.h:25
int32_t udrv_serial_peek(SERIAL_PORT Port)
This API is used to peek a byte from a specified serial port.
void(* SERIAL_DEINIT)(SERIAL_PORT Port)
Definition: udrv_serial.h:106
void(* SERIAL_INIT)(SERIAL_PORT Port, uint32_t BaudRate, SERIAL_WORD_LEN_E DataBits, SERIAL_STOP_BIT_E StopBits, SERIAL_PARITY_E Parity, SERIAL_WIRE_MODE_E WireMode)
Definition: udrv_serial.h:105
Definition: udrv_serial.h:86
enum _SERIAL_STOP_BIT_E SERIAL_STOP_BIT_E
Definition: udrv_serial.h:33
enum _SERIAL_WLOCK_STATE SERIAL_WLOCK_STATE
Definition: udrv_serial.h:104
void udrv_serial_suspend()
Suspend serial hardware before entering sleep mode.
Definition: udrv_serial.h:29
Definition: udrv_serial.h:42
Definition: udrv_serial.h:31
Definition: udrv_serial.h:44
void udrv_serial_deinit(SERIAL_PORT Port)
This API is used to deinitialize a specified serial port.
_SERIAL_PORT
Definition: udrv_serial.h:77
_SERIAL_STOP_BIT_E
Definition: udrv_serial.h:64
Definition: udrv_serial.h:53
Definition: udrv_serial.h:30
Definition: udrv_serial.h:91
Definition: udrv_serial.h:98
The number of bits including the parity bit must be odd.
Definition: udrv_serial.h:71
enum _SERIAL_WIRE_MODE_E SERIAL_WIRE_MODE_E
int32_t udrv_serial_read(SERIAL_PORT Port, uint8_t *Buffer, int32_t NumberOfBytes)
This API is used to read a byte sequence from a specified serial port.
Definition: udrv_serial.h:23
Definition: udrv_serial.h:40
Definition: udrv_serial.h:43
_SERIAL_WIRE_MODE_E
Definition: udrv_serial.h:51
Definition: udrv_serial.h:26
One stop bit will be transmitted.
Definition: udrv_serial.h:65
Definition: udrv_serial.h:52
Definition: udrv_serial.h:34
Definition: udrv_serial.h:22
int32_t(* SERIAL_READ_AVAIL)(SERIAL_PORT Port)
Definition: udrv_serial.h:111
Definition: udrv_serial.h:38
Character&#39;s Word Length 5 bits.
Definition: udrv_serial.h:58
int32_t udrv_serial_log_printf(const char *fmt,...)
This API is like printf() to format any kinds of data type into a byte sequence, and write it to ever...
Two stop bits (1.5 with 5-bit data) will be transmitted.
Definition: udrv_serial.h:66
_SERIAL_WORD_LEN_E
Definition: udrv_serial.h:57
SERIAL_WLOCK_STATE udrv_serial_get_lock_state(SERIAL_PORT Port)
This API is used to get the lock state of a specified serial port.
_SERIAL_WLOCK_STATE
Definition: udrv_serial.h:94
void udrv_serial_disable(SERIAL_PORT Port)
This API is used to disable a specified serial port.
int32_t(* SERIAL_PEEK)(SERIAL_PORT Port)
Definition: udrv_serial.h:109
void udrv_serial_lock(void)
This API is used to lock a specified serial port.
enum _SERIAL_PARITY_E SERIAL_PARITY_E
_SERIAL_STATE
Definition: udrv_serial.h:21
void udrv_serial_enable(SERIAL_PORT Port)
This API is used to enable a specified serial port.
enum _SERIAL_PORT SERIAL_PORT
Definition: udrv_serial.h:96
void udrv_serial_flush(SERIAL_PORT Port)
This API is used to wait a specified serial port to complete data writing.
int32_t udrv_serial_write(SERIAL_PORT Port, uint8_t const *Buffer, int32_t NumberOfBytes)
int32_t udrv_serial_read_available(SERIAL_PORT Port)
This API is used to get the number of bytes available for reading from the specified serial port...
Definition: udrv_serial.h:27
void serial_fallback_handler(SERIAL_PORT port, uint8_t ch)
Let AT+BOOT and AT+ATM works in any serial mode.