107 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/****************************************************************************
 | 
						|
 | 
						|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
 | 
						|
 | 
						|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
 | 
						|
be copied by any method or incorporated into another program without
 | 
						|
the express written consent of Aerospace C.Power. This Information or any portion
 | 
						|
thereof remains the property of Aerospace C.Power. The Information contained herein
 | 
						|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
 | 
						|
liability for its use in any way and conveys no license or title under
 | 
						|
any patent or copyright and makes no representation or warranty that this
 | 
						|
Information is free from patent or copyright infringement.
 | 
						|
 | 
						|
****************************************************************************/
 | 
						|
 | 
						|
#ifndef _VP_UART_H_
 | 
						|
#define _VP_UART_H_
 | 
						|
 | 
						|
#include "os_types.h"
 | 
						|
#include "vc_task.h"
 | 
						|
#include "iot_uart_h.h"
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief vp_uart_id_e - List of virtual uart ports.
 | 
						|
 * VP_UART_PORTID0 - VC_CHNID_1 (ACM0)
 | 
						|
 * VP_UART_PORTID1 - VC_CHNID_2 (ACM1)
 | 
						|
 */
 | 
						|
typedef enum _virtual_port_uart_id_e_ {
 | 
						|
    VP_UART_PORTID0  = 0,
 | 
						|
    VP_UART_PORTID1,
 | 
						|
    VP_UART_PORTID_MAX
 | 
						|
} vp_uart_id_e;
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief UART_VP_PORT_END - Define vp logic port to phy port.
 | 
						|
 */
 | 
						|
#define vp_uart_lport_to_pport(lport)   iot_uart_lport_to_pport(lport)
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief UART_VP_PORT_END - Define vp logic port to phy port.
 | 
						|
 */
 | 
						|
#define vp_uart_pport_to_lport(lport)   \
 | 
						|
    iot_uart_pport_to_lport(UART_TYPE_VP, lport)
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief vp_uart_port_valid - Check if phy port is valid.
 | 
						|
 */
 | 
						|
#define vp_uart_port_valid(pport)    \
 | 
						|
    ((pport) == VP_UART_PORTID0 || (pport) == VP_UART_PORTID1)
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief vp_uart_channel_valid - Check if channel is valid.
 | 
						|
 */
 | 
						|
#define vp_uart_channel_valid(channel)  \
 | 
						|
    ((channel) == VC_CHNID_1 || (channel) == VC_CHNID_2)
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief vp_uart_port_to_channel - Convert the port number to channel number.
 | 
						|
 */
 | 
						|
#define vp_uart_port_to_channel(port)   \
 | 
						|
    ((port) == VP_UART_PORTID0 ? VC_CHNID_1 : VC_CHNID_2)
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief vp_uart_channel_to_port - Convert the channel number to port number.
 | 
						|
 */
 | 
						|
#define vp_uart_channel_to_port(channel)    \
 | 
						|
    ((channel) == VC_CHNID_1 ? VP_UART_PORTID0 : VP_UART_PORTID1)
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief vp_uart_rcv_func - Function pointer to get received data.
 | 
						|
 * @param port: Virtual uart port to open.
 | 
						|
 * @param pkt: Pointer to a packet holding receved data.
 | 
						|
 * @return Bytes of data that confirmed by this function.
 | 
						|
 */
 | 
						|
typedef uint32_t (*vp_uart_rcv_func)(uint8_t port, iot_pkt_t *pkt);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief vp_uart_t - Struct of vp uart.
 | 
						|
 * pport - phy port of the vp uart
 | 
						|
 * lport - logic port of the vp uart
 | 
						|
 * recv_func - recv func of the vp uart
 | 
						|
 */
 | 
						|
typedef struct _vp_uart_t {
 | 
						|
    uint8_t pport;
 | 
						|
    vp_uart_rcv_func recv_func;
 | 
						|
}vp_uart_t;
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief vp_uart_open - Open a virtual uart port.
 | 
						|
 * @param lport: Logic virtual uart port to open.
 | 
						|
 * @param rcv_func: Function pointer to receive data.
 | 
						|
 * @return -- Index of the vp uart.
 | 
						|
 */
 | 
						|
int vp_uart_open(uint8_t lport, vp_uart_rcv_func rcv_func);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief vp_uart_send - Send data to virtual uart port.
 | 
						|
 * @param lport: Logic vritual uart port to open.
 | 
						|
 * @param p_pkt: The pkt data to send.
 | 
						|
 * @return ERR_FAIL -- Operation failed.
 | 
						|
 * @return ERR_OK -- Operation Successful.
 | 
						|
 */
 | 
						|
uint32_t vp_uart_send(uint8_t lport, iot_pkt_t *p_pkt);
 | 
						|
 | 
						|
#endif /* _VP_UART_H_ */
 |