mirror of
https://github.com/Ai-Thinker-Open/Ai-Thinker-Open_RTL8710BX_ALIOS_SDK.git
synced 2025-03-19 11:12:55 +00:00
132 lines
3.1 KiB
C
Executable file
132 lines
3.1 KiB
C
Executable file
/*
|
|
* Copyright (C) 2015-2017 Alibaba Group Holding Limited
|
|
*/
|
|
|
|
#ifndef HAL_UART_H
|
|
#define HAL_UART_H
|
|
|
|
/*
|
|
* UART data width
|
|
*/
|
|
typedef enum {
|
|
DATA_WIDTH_5BIT,
|
|
DATA_WIDTH_6BIT,
|
|
DATA_WIDTH_7BIT,
|
|
DATA_WIDTH_8BIT,
|
|
DATA_WIDTH_9BIT
|
|
} hal_uart_data_width_t;
|
|
|
|
/*
|
|
* UART stop bits
|
|
*/
|
|
typedef enum {
|
|
STOP_BITS_1,
|
|
STOP_BITS_2
|
|
} hal_uart_stop_bits_t;
|
|
|
|
/*
|
|
* UART flow control
|
|
*/
|
|
typedef enum {
|
|
FLOW_CONTROL_DISABLED,
|
|
FLOW_CONTROL_CTS,
|
|
FLOW_CONTROL_RTS,
|
|
FLOW_CONTROL_CTS_RTS
|
|
} hal_uart_flow_control_t;
|
|
|
|
/*
|
|
* UART parity
|
|
*/
|
|
typedef enum {
|
|
NO_PARITY,
|
|
ODD_PARITY,
|
|
EVEN_PARITY
|
|
} hal_uart_parity_t;
|
|
|
|
/*
|
|
* UART mode
|
|
*/
|
|
typedef enum {
|
|
MODE_TX,
|
|
MODE_RX,
|
|
MODE_TX_RX
|
|
} hal_uart_mode_t;
|
|
|
|
/*
|
|
* UART configuration
|
|
*/
|
|
typedef struct {
|
|
uint32_t baud_rate;
|
|
hal_uart_data_width_t data_width;
|
|
hal_uart_parity_t parity;
|
|
hal_uart_stop_bits_t stop_bits;
|
|
hal_uart_flow_control_t flow_control;
|
|
hal_uart_mode_t mode;
|
|
} uart_config_t;
|
|
|
|
typedef struct {
|
|
uint8_t port; /* uart port */
|
|
uart_config_t config; /* uart config */
|
|
void *priv; /* priv data */
|
|
} uart_dev_t;
|
|
|
|
/**
|
|
* Initialises a UART interface
|
|
*
|
|
*
|
|
* @param[in] uart the interface which should be initialised
|
|
*
|
|
* @return 0 : on success, EIO : if an error occurred with any step
|
|
*/
|
|
int32_t hal_uart_init(uart_dev_t *uart);
|
|
|
|
/**
|
|
* Transmit data on a UART interface
|
|
*
|
|
* @param[in] uart the UART interface
|
|
* @param[in] data pointer to the start of data
|
|
* @param[in] size number of bytes to transmit
|
|
*
|
|
* @return 0 : on success, EIO : if an error occurred with any step
|
|
*/
|
|
int32_t hal_uart_send(uart_dev_t *uart, const void *data, uint32_t size, uint32_t timeout);
|
|
|
|
/**
|
|
* Receive data on a UART interface
|
|
*
|
|
* @param[in] uart the UART interface
|
|
* @param[out] data pointer to the buffer which will store incoming data
|
|
* @param[in] expect_size number of bytes to receive
|
|
* @param[in] timeout timeout in milisecond, set this value to HAL_WAIT_FOREVER
|
|
* if you want to wait forever
|
|
*
|
|
* @return 0 : on success, EIO : if an error occurred with any step
|
|
*/
|
|
int32_t hal_uart_recv(uart_dev_t *uart, void *data, uint32_t expect_size, uint32_t timeout);
|
|
|
|
/**
|
|
* Receive data on a UART interface
|
|
*
|
|
* @param[in] uart the UART interface
|
|
* @param[out] data pointer to the buffer which will store incoming data
|
|
* @param[in] expect_size number of bytes to receive
|
|
* @param[out] recv_size number of bytes received
|
|
* @param[in] timeout timeout in milisecond, set this value to HAL_WAIT_FOREVER
|
|
* if you want to wait forever
|
|
*
|
|
* @return 0 : on success, EIO : if an error occurred with any step
|
|
*/
|
|
int32_t hal_uart_recv_II(uart_dev_t *uart, void *data, uint32_t expect_size,
|
|
uint32_t *recv_size, uint32_t timeout);
|
|
|
|
/**
|
|
* Deinitialises a UART interface
|
|
*
|
|
* @param[in] uart the interface which should be deinitialised
|
|
*
|
|
* @return 0 : on success, EIO : if an error occurred with any step
|
|
*/
|
|
int32_t hal_uart_finalize(uart_dev_t *uart);
|
|
|
|
#endif /* HAL_UART_H */
|
|
|