Initial import of NFC GNSS SDK project

This commit is contained in:
chenjintao
2026-09-15 16:10:12 +08:00
commit 2746cc3d4e
3070 changed files with 892062 additions and 0 deletions
@@ -0,0 +1,319 @@
/*================================================================
Copyright (c) 2021, Quectel Wireless Solutions Co., Ltd. All rights reserved.
Quectel Wireless Solutions Proprietary and Confidential.
=================================================================*/
#ifndef _QUEC_UART_H_
#define _QUEC_UART_H_
#include "quec_ring_buffer.h"
#include "UART.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef void (*uart_callback)(char port, void *para);
typedef void (*uart_callback_ex)(char port, int len, void *private);
typedef void (*uart_tx_fwctrl_callback)(char port, char flow_status);
typedef enum QUEC_UART_FLOWCTRL_ENUM
{
QUEC_FC_NONE = 0,
QUEC_FC_HW,
}QUEC_UART_FLOWCTRL_E;
typedef struct quec_uart_msg_struct {
unsigned char direction; //TX/RX
unsigned char uart_port;
unsigned int data_len;
}quec_uart_msg_t;
typedef struct quec_uart_pin_select_struct{
unsigned char ff_uart_pin_select;
unsigned char bt_uart_pin_select;
unsigned char st_uart_pin_select;
unsigned char u4_uart_pin_select;
}quec_uart_pin_select_t;
typedef struct quec_uart_data_struct
{
unsigned char uart_state;
uart_callback uart_cb;
uart_callback_ex uart_cb_ex;
uart_tx_fwctrl_callback uart_fwctrl_cb;
void *callback_private_argv;
quec_ring_buf_t *tx_rb;
quec_ring_buf_t *rx_rb;
unsigned char IsSendingStatus;
}quec_uart_data_t;
typedef enum QUEC_UART_BAUD_ENUM
{
QUEC_UART_BAUD_300 = 300,
QUEC_UART_BAUD_600 = 600,
QUEC_UART_BAUD_1200 = 1200,
QUEC_UART_BAUD_2400 = 2400,
QUEC_UART_BAUD_3600 = 3600,
QUEC_UART_BAUD_4800 = 4800,
QUEC_UART_BAUD_7200 = 7200,
QUEC_UART_BAUD_9600 = 9600,
QUEC_UART_BAUD_14400 = 14400,
QUEC_UART_BAUD_19200 = 19200,
QUEC_UART_BAUD_28800 = 28800,
QUEC_UART_BAUD_38400 = 38400,
QUEC_UART_BAUD_57600 = 57600,
QUEC_UART_BAUD_115200 = 115200,
QUEC_UART_BAUD_230400 = 230400,
QUEC_UART_BAUD_256000 = 256000,
QUEC_UART_BAUD_460800 = 460800,
QUEC_UART_BAUD_921600 = 921600,
QUEC_UART_BAUD_1000000 = 1000000,
QUEC_UART_BAUD_1500000 = 1500000,
QUEC_UART_BAUD_1842000 = 1842000,
QUEC_UART_BAUD_1843200 = 1843200,
QUEC_UART_BAUD_3000000 = 3000000,
QUEC_UART_BAUD_3686400 = 3686400,
}QUEC_UART_BAUD_E;
typedef enum
{
quec_uart_tx,
quec_uart_rx,
}Enum_quec_uart_dir;
typedef enum QUEC_UART_DATABIT_ENUM
{
QUEC_UART_DATABIT_5,
QUEC_UART_DATABIT_6,
QUEC_UART_DATABIT_7,
QUEC_UART_DATABIT_8,
}QUEC_UART_DATABIT_E;
typedef enum QUEC_UART_STOPBIT_ENUM
{
QUEC_UART_STOP_1,
QUEC_UART_STOP_2,
}QUEC_UART_STOPBIT_E;
typedef enum QUEC_UART_PARITYBIT_ENUM
{
QUEC_UART_PARITY_NONE,
QUEC_UART_PARITY_EVEN,
QUEC_UART_PARITY_ODD,
}QUEC_UART_PARITYBIT_E;
typedef struct quec_uart_config_struct
{
QUEC_UART_BAUD_E baudrate;
QUEC_UART_DATABIT_E data_bit;
QUEC_UART_STOPBIT_E stop_bit;
QUEC_UART_PARITYBIT_E parity_bit;
QUEC_UART_FLOWCTRL_E flow_ctrl;
}quec_uart_config_t;
enum
{
QUEC_UART_SUCCESS = 0,
QUEC_UART_OPEN_FAILED = -1,
QUEC_UART_ALREAD_OPEN = -2,
QUEC_UART_ONT_OPEN = -3,
QUEC_UART_ILLEGAL_PORT = -4,
QUEC_UART_RB_CFG_FAILED = -5,
QUEC_UART_DCB_PRAM_ERR = -6,
QUEC_UART_DCB_CFG_ERR = -7,
QUEC_UART_WRITE_ERR = -8,
QUEC_UART_WRITE_PRAM_ERR = -9,
QUEC_UART_WRITE_MALLOC_ERR = -10,
QUEC_UART_READ_ERR = -11,
QUEC_UART_CTS_HIGH = -12,
QUEC_UART_IS_SENDING = 1,
QUEC_UART_NOT_SENDING = 0
};
typedef enum
{
QUEC2QL_DEBUG_UART_PORT,
QUEC2QL_BT_UART_PORT,
QUEC2QL_MAIN_UART_PORT,
QUEC2QL_USB_CDC_PORT,
QUEC2QL_U4_UART_PORT,
QUEC2QL_MAX_UART_PORT,
}QUEC2QL_UART_PORT_NUMBER_E;
/***********************************************************************
*
* Name: QUEC_uart_open
*
* Description: 打开对应串口
*
* Parameters: baudrate:设置波特率
* flow_ctrl:是否使能流控
* Returns: 0:打开成功
*
* Notes:
*
***********************************************************************/
int quec_uart_open(UART_Port port, QUEC_UART_BAUD_E baudrate, QUEC_UART_FLOWCTRL_E flow_ctrl);
/***********************************************************************
*
* Name: QUEC_uart_close
*
* Description: 关闭对应串口
*
* Parameters: port:要关闭的port口
*
* Returns: 0:关闭成功
* other: faile
* Notes:
*
***********************************************************************/
int quec_uart_close(UART_Port port);
/***********************************************************************
*
* Name: QUEC_uart_set_dcbconfig
*
* Description: 设置对应串口模式
*
* Parameters: port:对应的串口,cdc口无需设置
* dcb:模式对象
* Returns: 0:send_success
* other: faile
* Notes:
*
***********************************************************************/
int quec_uart_set_dcbconfig(UART_Port port, quec_uart_config_t *dcb);
/***********************************************************************
*
* Name: QUEC_uart_get_dcbconfig
*
* Description: 获取对应串口当前的模式
*
* Parameters: port:要获取模式的串口
* dcb:存方模式的内存
* Returns: 0:send_success
* other: faile
* Notes:
*
***********************************************************************/
int quec_uart_get_dcbconfig(UART_Port port, quec_uart_config_t *dcb);
/***********************************************************************
*
* Name: quec_uart_write
*
* Description: 往外部发送数据
*
* Parameters: data:要发送的数据首地址
* len:要发送的数据长度
* Returns: 0:send_success
* other: faile
* Notes:
*
***********************************************************************/
int quec_uart_write(UART_Port port, unsigned char *data, int len);
/***********************************************************************
*
* Name: quec_uart_read
*
* Description: 接收串口数据
*
* Parameters: data:要接收的数据存放位置首地址
* len:要接收的数据长度
* Returns: 0:send_success
* other: faile
* Notes:
*
***********************************************************************/
int quec_uart_read(UART_Port port, unsigned char *data, int len);
/***********************************************************************
*
* Name: QUEC_uart_register_cb
*
* Description: 注册接收回调不带参数
*
* Parameters: port:注册回调的串口号
* uart_cb:客户回调函数
* Returns:
*
* Notes:
*
***********************************************************************/
void quec_uart_register_cb(UART_Port port, uart_callback uart_cb);
/***********************************************************************
*
* Name: QUEC_uart_register_cb_ex
*
* Description: 注册回调函数带参
*
* Parameters: port:注册回调的串口号
* uart_cb:客户回调函数
* private :参数
* Returns:
*
* Notes:
*
***********************************************************************/
void quec_uart_register_cb_ex(UART_Port port, uart_callback_ex uart_cb, void *private);
/***********************************************************************
*
* Name: QUEC_uart_flush_fifo
*
* Description: 清空串口fifo
*
* Parameters: port:要清空的串口fifo端口号
*
* Returns: none
*
* Notes:
*
***********************************************************************/
void quec_uart_flush_fifo(UART_Port port);
/*****************************************************************
* Function: QUEC_uart_is_sending
*
* Description:
* Return the status of the serial port is sending data or not.
*
* Parameters:
* port:
* [in] uart port.
* Return:
* FALSE, not sending.
* TRUE, is sending.
*****************************************************************/
unsigned char quec_uart_is_sending(UART_Port port);
unsigned int quec_uart_get_rx_data_len(UART_Port port);
unsigned char quec_check_uart_is_open(UART_Port port);
int quec_move_uart_buffer_to_rb(UART_Port port, unsigned char *dma_buffer, unsigned int move_len);
int quec_get_uart_rb_state(UART_Port port);
void quec_uart_send_msg(UART_Port port);
int quec_uart_read_fifo_to_rb(UART_Port port, unsigned char *data, int len);
unsigned char quec_check_uart_tx_fifo_empty(UART_Port portNumber);
int quec_uart_driver_init(void);
void quec_uart_baud_selfadatpt_enable(UART_Port port);
void quec_uart_baud_selfadatpt_disable(UART_Port port,unsigned int *bandrate);
void quec_aotu_flow_enable(UART_Port portNumber);
void quec_aotu_flow_Disable(UART_Port portNumber);
unsigned int quec_uart_get_rxrb_data_len(UART_Port port);
int quec_uart_write_sync(UART_Port port, unsigned char *data, int len);
int quec_uart_pin_set_func(UART_Port port, UINT32 PIN_NUM,unsigned int func_num);
int quec_uart_pin_get_func( UINT32 PIN_NUM);
int quec_uart_wakeup_mode_enable(UART_Port port);
int quec_uart_wakeup_mode_disable(UART_Port port);
int quec_uart_rx_dma_size_set(UART_Port port, UINT32 size);
int quec_uart_rx_dma_size_get(UART_Port port);
void quec_uart_register_TxFwctrl_cb(UART_Port port, uart_tx_fwctrl_callback uart_cb);
//STD项目用于UART的初始化
int quec_stdproj_uart_init(UART_Port port,QUEC_UART_BAUD_E baudrate, QUEC_UART_FLOWCTRL_E flow_ctrl);
#ifdef __cplusplus
} /*"C" */
#endif
#endif /* _QUEC_UART_H_ */