150 lines
4.9 KiB
C
150 lines
4.9 KiB
C
|
|
/*==========================================================================================================
|
|
Copyright (c) 2021, Quectel Wireless Solutions Co., Ltd. All rights reserved.
|
|
Quectel Wireless Solutions Proprietary and Confidential.
|
|
===========================================================================================================*/
|
|
|
|
#include <stdio.h>
|
|
#include "ql_uart.h"
|
|
#include "ql_application.h"
|
|
#include "ql_log.h"
|
|
|
|
#define test_log(fmt, args...) printf(fmt, ##args)
|
|
|
|
//#define TX_FWCTRL_ENBLE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void quec_uart_callback(QL_UART_PORT_NUMBER_E port, void *para)
|
|
{
|
|
int read_len = 0;
|
|
char r_data[1024] = {0};
|
|
read_len = ql_uart_read(port, r_data, sizeof(r_data));
|
|
test_log("uart[%d] callback read data, data:%s, read_len:%d \n", port, r_data, read_len);
|
|
}
|
|
#ifdef TX_FWCTRL_ENBLE
|
|
void quec_uart_txfwctrl_callback(QL_UART_PORT_NUMBER_E port, char flow_status)
|
|
{
|
|
|
|
test_log("uart[%d] txfwctrl status:%d \n", port, flow_status);
|
|
}
|
|
#endif
|
|
static void quec_main_uart_test(void * argv)
|
|
{
|
|
int ret = -1;
|
|
char r_data[128] = {0};
|
|
int write_bytes = 0;
|
|
unsigned char data[] = "hello, this is uart test!!!, abcdefghijklmnopqrstuvwxyz, 1234567890\n";
|
|
|
|
ql_uart_config_t dcb;
|
|
ql_log_mask_set(QL_LOG_APP_MASK, QL_LOG_PORT_UART);
|
|
#ifndef TX_FWCTRL_ENBLE
|
|
ret = ql_uart_open(QL_MAIN_UART_PORT, QL_UART_BAUD_115200, QL_FC_NONE);
|
|
#else
|
|
ret = ql_uart_open(QL_MAIN_UART_PORT, QL_UART_BAUD_115200, QL_FC_HW);
|
|
ql_uart_register_txfwctrl(QL_MAIN_UART_PORT,quec_uart_txfwctrl_callback);
|
|
#endif
|
|
|
|
|
|
/*****************************************/
|
|
ql_uart_get_dcbconfig(QL_MAIN_UART_PORT, &dcb);
|
|
test_log("[%s][%d]baudrate:%d, data_bit:%d, stop_bit:%d, parity_bit:%d, flow_ctrl:%d \r\n", __func__, __LINE__, dcb.baudrate, dcb.data_bit, dcb.stop_bit, dcb.parity_bit, dcb.flow_ctrl);
|
|
dcb.baudrate = QL_UART_BAUD_115200;
|
|
ql_uart_set_dcbconfig(QL_MAIN_UART_PORT, &dcb);
|
|
/*****************************************/
|
|
|
|
ql_uart_register_cb(QL_MAIN_UART_PORT, quec_uart_callback); //use callback to read uart data
|
|
|
|
while (1)
|
|
{ test_log("I still alive...%s\r\n",r_data);
|
|
ret = ql_uart_write(QL_MAIN_UART_PORT, data, sizeof(data));
|
|
if(ret == QL_UART_CTS_HIGH)
|
|
{
|
|
test_log("CTS_HIGH");
|
|
}
|
|
ql_rtos_task_sleep_s(5);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
void quec_usbcdc_callback(QL_UART_PORT_NUMBER_E port, void *para)
|
|
{
|
|
int read_len = 0;
|
|
char r_data[1024] = {0};
|
|
read_len = ql_uart_read(port, r_data, sizeof(r_data));
|
|
test_log("uart[%d] callback read data, data:%s, read_len:%d \n", port, r_data, read_len);
|
|
}
|
|
|
|
static void quec_usbcdc_test(void * argv)
|
|
{
|
|
int ret = -1;
|
|
char r_data[128] = {0};
|
|
int write_bytes = 0;
|
|
unsigned char data[] = "hello, this is uart test!!!, abcdefghijklmnopqrstuvwxyz, 1234567890\n";
|
|
ql_uart_config_t dcb;
|
|
|
|
ql_uart_open(QL_USB_CDC_PORT, QL_UART_BAUD_115200, QL_FC_NONE);
|
|
|
|
ql_uart_register_cb(QL_USB_CDC_PORT, quec_usbcdc_callback); //use callback to read uart data
|
|
|
|
while (1)
|
|
{ test_log("I still alive...%s\r\n",r_data);
|
|
ql_uart_open(QL_USB_CDC_PORT, QL_UART_BAUD_115200, QL_FC_NONE);
|
|
ret = ql_uart_write(QL_USB_CDC_PORT, data, sizeof(data));
|
|
ql_rtos_task_sleep_s(5);
|
|
ql_uart_close(QL_USB_CDC_PORT);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
static void ql_test_baudrate(void * argv)
|
|
{
|
|
int ret = -1;
|
|
char r_data[128] = {0};
|
|
int write_bytes = 0;
|
|
unsigned char data[] = "hello, this is uart test!!!, abcdefghijklmnopqrstuvwxyz, 1234567890\n";
|
|
ql_uart_config_t dcb;
|
|
ql_log_mask_set(QL_LOG_APP_MASK, QL_LOG_PORT_UART);
|
|
ret = ql_uart_open(QL_MAIN_UART_PORT, QL_UART_BAUD_256000, QL_FC_NONE);
|
|
if (ret) {
|
|
test_log("open uart[%d] failed! %d \n", QL_MAIN_UART_PORT,ret);
|
|
return;
|
|
}
|
|
|
|
/*****************************************/
|
|
ql_uart_get_dcbconfig(QL_MAIN_UART_PORT, &dcb);
|
|
test_log("[%s][%d]baudrate:%d, data_bit:%d, stop_bit:%d, parity_bit:%d, flow_ctrl:%d \r\n", __func__, __LINE__, dcb.baudrate, dcb.data_bit, dcb.stop_bit, dcb.parity_bit, dcb.flow_ctrl);
|
|
dcb.baudrate = QL_UART_BAUD_256000;
|
|
ql_uart_set_dcbconfig(QL_MAIN_UART_PORT, &dcb);
|
|
/*****************************************/
|
|
|
|
ql_uart_register_cb(QL_MAIN_UART_PORT, quec_uart_callback); //use callback to read uart data
|
|
|
|
while (1)
|
|
{ test_log("I still alive...%s\r\n",r_data);
|
|
ret = ql_uart_write(QL_MAIN_UART_PORT, data, sizeof(data));
|
|
if(ret == QL_UART_CTS_HIGH)
|
|
{
|
|
test_log("CTS_HIGH");
|
|
}
|
|
ql_rtos_task_sleep_s(2);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/*���������Ѳ��Է�����ģ�����ߵ�ʱ���ڹ��߷����ݸ�ģ�飬������������Դ����ģ�飬��ģ���յ�uart�����Ƿ�����*/
|
|
//application_init(quec_main_uart_test, "quec_uart_test1", 20, 0);
|
|
//application_init(quec_usbcdc_test, "quec_usb", 10, 0);
|
|
//application_init(ql_test_baudrate, "ql_test_baudrate", 10, 0);
|
|
|
|
|
|
|
|
|