212 lines
5.7 KiB
C
212 lines
5.7 KiB
C
/*
|
|
* Copyright (c) 2020 Huawei Device Co., Ltd.
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
/**
|
|
* @addtogroup IotHardware
|
|
* @{
|
|
*
|
|
* @brief Provides APIs for operating devices,
|
|
* including flash, GPIO, I2C, PWM, UART, and watchdog APIs.
|
|
*
|
|
*
|
|
*
|
|
* @since 2.2
|
|
* @version 2.2
|
|
*/
|
|
|
|
/**
|
|
* @file iot_uart.h
|
|
*
|
|
* @brief Declares UART functions.
|
|
*
|
|
* These functions are used for UART initialization,
|
|
* data input/output, and data flow control. \n
|
|
*
|
|
* @since 2.2
|
|
* @version 2.2
|
|
*/
|
|
|
|
#ifndef IOT_UART_H
|
|
#define IOT_UART_H
|
|
|
|
/**
|
|
* @brief Enumerates the number of UART data bits.
|
|
*
|
|
* @since 2.2
|
|
* @version 2.2
|
|
*/
|
|
typedef enum {
|
|
/** 5 data bits */
|
|
IOT_UART_DATA_BIT_5 = 5,
|
|
/** 6 data bits */
|
|
IOT_UART_DATA_BIT_6,
|
|
/** 7 data bits */
|
|
IOT_UART_DATA_BIT_7,
|
|
/** 8 data bits */
|
|
IOT_UART_DATA_BIT_8,
|
|
} IotUartIdxDataBit;
|
|
|
|
/**
|
|
* @brief Enumerates the number of UART stop bits.
|
|
*
|
|
* @since 2.2
|
|
* @version 2.2
|
|
*/
|
|
typedef enum {
|
|
/** 1 stop bit */
|
|
IOT_UART_STOP_BIT_1 = 1,
|
|
/** 2 stop bits */
|
|
IOT_UART_STOP_BIT_2 = 2,
|
|
} IotUartStopBit;
|
|
|
|
/**
|
|
* @brief Enumerates UART parity bits.
|
|
*
|
|
* @since 2.2
|
|
* @version 2.2
|
|
*/
|
|
typedef enum {
|
|
/** No parity */
|
|
IOT_UART_PARITY_NONE = 0,
|
|
/** Odd parity */
|
|
IOT_UART_PARITY_ODD = 1,
|
|
/** Even parity */
|
|
IOT_UART_PARITY_EVEN = 2,
|
|
} IotUartParity;
|
|
|
|
/**
|
|
* @brief Enumerates UART block states.
|
|
*
|
|
* @since 2.2
|
|
* @version 2.2
|
|
*/
|
|
typedef enum {
|
|
/** Block disabled */
|
|
IOT_UART_BLOCK_STATE_NONE_BLOCK = 0,
|
|
/** Block enabled */
|
|
IOT_UART_BLOCK_STATE_BLOCK,
|
|
} IotUartBlockState;
|
|
|
|
/**
|
|
* @brief Enumerates hardware flow control modes.
|
|
*
|
|
* @since 2.2
|
|
* @version 2.2
|
|
*/
|
|
typedef enum {
|
|
/** Hardware flow control disabled */
|
|
IOT_FLOW_CTRL_NONE,
|
|
/** RTS and CTS hardware flow control enabled */
|
|
IOT_FLOW_CTRL_RTS_CTS,
|
|
/** RTS hardware flow control enabled */
|
|
IOT_FLOW_CTRL_RTS_ONLY,
|
|
/** CTS hardware flow control enabled */
|
|
IOT_FLOW_CTRL_CTS_ONLY,
|
|
} IotFlowCtrl;
|
|
|
|
/**
|
|
* @brief Defines basic attributes of a UART port.
|
|
*
|
|
* @since 2.2
|
|
* @version 2.2
|
|
*/
|
|
typedef struct {
|
|
/** Baud rate */
|
|
unsigned int baudRate;
|
|
/** Data bits */
|
|
IotUartIdxDataBit dataBits;
|
|
/** Stop bit */
|
|
IotUartStopBit stopBits;
|
|
/** Parity */
|
|
IotUartParity parity;
|
|
/** Rx block state */
|
|
IotUartBlockState rxBlock;
|
|
/** Tx block state */
|
|
IotUartBlockState txBlock;
|
|
/** Padding bit */
|
|
unsigned char pad;
|
|
} IotUartAttribute;
|
|
|
|
/**
|
|
* @brief Configures a UART device with the port number specified by <b>id</b>
|
|
* based on the basic and extended attributes.
|
|
*
|
|
*
|
|
*
|
|
* @param id Indicates the port number of the UART device.
|
|
* @param param Indicates the pointer to the UART attributes.
|
|
* @return Returns {@link IOT_SUCCESS} if the UART device is configured successfully;
|
|
* returns {@link IOT_FAILURE} otherwise. For details about other return values, see the chip description.
|
|
* @since 2.2
|
|
* @version 2.2
|
|
*/
|
|
unsigned int IoTUartInit(unsigned int id, const IotUartAttribute *param);
|
|
|
|
/**
|
|
* @brief Reads a specified length of data from a UART device with the port number specified by <b>id</b>.
|
|
*
|
|
*
|
|
*
|
|
* @param id Indicates the port number of the UART device.
|
|
* @param data Indicates the pointer to the start address of the data to read.
|
|
* @param dataLen Indicates the number of bytes to read.
|
|
* @return Returns the number of bytes read if the operation is successful; returns <b>-1</b> otherwise.
|
|
* @since 2.2
|
|
* @version 2.2
|
|
*/
|
|
int IoTUartRead(unsigned int id, unsigned char *data, unsigned int dataLen);
|
|
|
|
/**
|
|
* @brief Writes a specified length of data to a UART device with the port number specified by <b>id</b>.
|
|
*
|
|
*
|
|
*
|
|
* @param id Indicates the port number of the UART device.
|
|
* @param data Indicates the pointer to the start address of the data to write.
|
|
* @param dataLen Indicates the number of bytes to write.
|
|
* @return Returns the number of bytes written if the operation is successful; returns <b>-1</b> otherwise.
|
|
* @since 2.2
|
|
* @version 2.2
|
|
*/
|
|
int IoTUartWrite(unsigned int id, const unsigned char *data, unsigned int dataLen);
|
|
|
|
/**
|
|
* @brief Deinitializes a UART device.
|
|
*
|
|
* @param id Indicates the port number of the UART device.
|
|
* @return Returns {@link IOT_SUCCESS} if the UART device is deinitialized;
|
|
* returns {@link IOT_FAILURE} otherwise. For details about other return values, see the chip description.
|
|
* @since 2.2
|
|
* @version 2.2
|
|
*/
|
|
unsigned int IoTUartDeinit(unsigned int id);
|
|
|
|
/**
|
|
* @brief Sets flow control for a UART device with the port number specified by <b>id</b>.
|
|
*
|
|
*
|
|
*
|
|
* @param id Indicates the port number of the UART device.
|
|
* @param flowCtrl Indicates the flow control parameters, as enumerated in {@link IotFlowCtrl}.
|
|
* @return Returns {@link IOT_SUCCESS} if flow control is set successfully;
|
|
* returns {@link IOT_FAILURE} otherwise. For details about other return values, see the chip description.
|
|
* @since 2.2
|
|
* @version 2.2
|
|
*/
|
|
unsigned int IoTUartSetFlowCtrl(unsigned int id, IotFlowCtrl flowCtrl);
|
|
|
|
#endif // IOT_UART_H
|
|
/** @} */
|