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
 | ||
|  | /** @} */ |