145 lines
3.8 KiB
C
145 lines
3.8 KiB
C
/*================================================================
|
|
Copyright (c) 2022, Quectel Wireless Solutions Co., Ltd. All rights reserved.
|
|
Quectel Wireless Solutions Proprietary and Confidential.
|
|
=================================================================*/
|
|
|
|
|
|
#include <stdio.h>
|
|
#include "ql_rtos.h"
|
|
#include "ql_application.h"
|
|
#include "ql_power.h"
|
|
#include "ql_uart.h"
|
|
|
|
|
|
#define SERIAL_RX_BUFFER_LEN 2048
|
|
static u8 m_RxBuf_Uart1[SERIAL_RX_BUFFER_LEN];
|
|
|
|
static void quec_power_test1(void)
|
|
{
|
|
int powerup_reason = 0;
|
|
int powerdown_reason = 0;
|
|
char wake_reason = 0;
|
|
printf("enter power api test!! \n");
|
|
ql_rtos_task_sleep_s(5);
|
|
powerup_reason = ql_get_powerup_reason();
|
|
printf("power up reason: 0x%x\n", powerup_reason);
|
|
|
|
powerdown_reason = ql_get_powerdown_reason();
|
|
printf("power down reason: 0x%x\n", powerdown_reason);
|
|
|
|
wake_reason = ql_get_the_fake_wake_source();
|
|
printf("wake reason:%d, %c\n", wake_reason,wake_reason);
|
|
|
|
ql_create_a_fake_wake_source(QL_RSTREASON_POWEROFF_CHARGE);
|
|
|
|
ql_rtos_task_sleep_s(30);
|
|
//ql_power_down(1);
|
|
printf("enter power reset!! \n");
|
|
ql_power_reset();
|
|
}
|
|
|
|
|
|
static void quec_main_uart_callback(QL_UART_PORT_NUMBER_E port, void *para)
|
|
{
|
|
unsigned int totalBytes = ql_uart_read(port, m_RxBuf_Uart1, sizeof(m_RxBuf_Uart1));
|
|
if (totalBytes <= 0)
|
|
{
|
|
printf("<-- No data in UART buffer! -->\r\n");
|
|
return;
|
|
}
|
|
|
|
if(0 == memcmp(m_RxBuf_Uart1,"create_a_fake_wake_source",25))
|
|
{
|
|
printf("<-%s -->\r\n",m_RxBuf_Uart1);
|
|
ql_create_a_fake_wake_source('C');
|
|
return;
|
|
}
|
|
|
|
if(0 == memcmp(m_RxBuf_Uart1,"power_reset",11))
|
|
{
|
|
printf("<-%s -->\r\n",m_RxBuf_Uart1);
|
|
ql_power_reset();
|
|
return;
|
|
}
|
|
|
|
if(0 == memcmp(m_RxBuf_Uart1,"get_wake_source",15))
|
|
{
|
|
unsigned char get_reason;
|
|
printf("<-%s -->\r\n",m_RxBuf_Uart1);
|
|
get_reason = ql_get_the_fake_wake_source();
|
|
printf("get_reason-------------------:%d %c\r\n",get_reason,get_reason);
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
static void quec_power_test(void * argv)
|
|
{
|
|
int ret =0;
|
|
//power_test_v1();
|
|
//power_test_v2();
|
|
//power_test_v3();
|
|
ql_uart_config_t dcb;
|
|
|
|
printf("<-------------------example_power.c------------------------->\r\n");
|
|
|
|
ret = ql_uart_open(QL_MAIN_UART_PORT, QL_UART_BAUD_115200, QL_FC_HW);
|
|
if (ret)
|
|
{
|
|
printf("open uart[%d] failed! \n", QL_MAIN_UART_PORT);
|
|
return;
|
|
}
|
|
/*****************************************/
|
|
ql_uart_get_dcbconfig(QL_MAIN_UART_PORT, &dcb);
|
|
printf("[%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_main_uart_callback); //use callback to read uart data
|
|
|
|
|
|
for(;;)
|
|
{
|
|
ql_rtos_task_sleep_s(10);
|
|
}
|
|
}
|
|
|
|
//application_init(quec_power_test, "quec_power_test", 2, 0);
|
|
|
|
|
|
|
|
static void quec_set_cam_vdd_test(void)
|
|
{
|
|
|
|
|
|
printf("enter ql_set_cam_vdd_output test!! \n");
|
|
ql_rtos_task_sleep_s(2);
|
|
while(1)
|
|
{
|
|
printf("enter test!! \n");
|
|
ql_set_cam_vdd_output(1);
|
|
ql_rtos_task_sleep_s(5);
|
|
ql_set_cam_vdd_output(0);
|
|
ql_rtos_task_sleep_s(5);
|
|
}
|
|
|
|
}
|
|
|
|
static void quec_power_vbus_state_get(void)
|
|
{
|
|
unsigned char vbus_state = 0;
|
|
printf("enter power api test!! \n");
|
|
|
|
ql_rtos_task_sleep_s(5);
|
|
vbus_state = ql_get_vbus_state();
|
|
printf("ql_get_vbus_state: 0x%d\n", vbus_state);
|
|
|
|
printf("leave power api test!! \n");
|
|
}
|
|
|
|
//application_init(quec_power_vbus_state_get, "quec_power_vbus_state_get", 2, 0);
|
|
//application_init(quec_set_cam_vdd_test, "quec_set_cam_vdd_test", 2, 0);
|
|
//application_init(quec_power_test1, "quec_power_test1", 2, 0);
|
|
|