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_ */
|