From 2e7e22e3a8fdd2dfbbf9b4e1dd92b96cbf96868b Mon Sep 17 00:00:00 2001 From: yincheng.zhong <634916154@qq.com> Date: 星期三, 04 九月 2024 11:06:06 +0800 Subject: [PATCH] 调4G休眠唤醒功能,还有BUG --- keil/include/main/main.c | 62 ++++++++++++++++--------------- 1 files changed, 32 insertions(+), 30 deletions(-) diff --git a/keil/include/main/main.c b/keil/include/main/main.c index 51d52b1..6c8a0bf 100644 --- a/keil/include/main/main.c +++ b/keil/include/main/main.c @@ -276,7 +276,7 @@ static void sleep_timer_callback(void *dev, uint32_t time) { IO_control_init(); - UWBPoll(); + // UWBPoll(); MotorPoll(); @@ -320,10 +320,13 @@ nomove_count=0; } uint8_t flag_4G_recdata; -static void _4gUsart_handler(enum IO_PIN_T pin) +void _4gUsart_handler(enum IO_PIN_T pin) { LOG_INFO(TRACE_MODULE_APP, "4G RX 唤醒\r\n"); - // flag_4G_recdata = 1; + flag_4G_recdata = 1; + + power_wakeup_disable((enum POWER_WAKEUP_SOURCE_T)_4G_USART_RX_Pin); + gpio_disable_irq(_4G_USART_RX_Pin); // AIR780EUartInit(); } extern uint16_t ip0,ip1,ip2,ip3,port; @@ -360,9 +363,9 @@ ip3 = (g_com_map[TCP_IP_3]>>12&0xf)*1000+(g_com_map[TCP_IP_3]>>8&0xf)*100+(g_com_map[TCP_IP_3]>>4&0xf)*10+(g_com_map[TCP_IP_3]&0xf); port = g_com_map[TCP_PORT]; g_com_map[VERSION] = (1<<8)|6; - LOG_INFO("设备ID: %x .\r\n",dev_id); - LOG_INFO("固件版本:UWB-4G手环 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff); - LOG_INFO("服务器地址: %d.%d.%d.%d:%d.\r\n",ip0,ip1,ip2,ip3,port); + LOG_INFO(TRACE_MODULE_APP,"设备ID: %x .\r\n",dev_id); + LOG_INFO(TRACE_MODULE_APP,"固件版本:UWB-4G手环 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff); + LOG_INFO(TRACE_MODULE_APP,"服务器地址: %d.%d.%d.%d:%d.\r\n",ip0,ip1,ip2,ip3,port); } @@ -498,19 +501,20 @@ // board_5V_input_init(voltage_input_handler); board_acceleration_detection_init(move_handler); // LOG_INFO(TRACE_MODULE_APP, "测试进入app"); - + board_4GUsart_detection_init(_4gUsart_handler); while (1) { + if(flag_TCP_reconnectting||IfTCPConnected()) { - - // LOG_INFO(TRACE_MODULE_APP, "处理4G任务\r\n"); - air780_led_on(); - if(flag_4guart_needinit) + if(flag_4G_recdata==1) { - flag_4guart_needinit = 0; - AIR780EUartInit(); + flag_4G_recdata = 2; + LOG_INFO(TRACE_MODULE_APP, "运行Socket_RecvAll\r\n"); + Socket_RecvAll(); } + air780_led_on(); +LOG_INFO(TRACE_MODULE_APP, "处理4G\r\n"); Internet_Poll(); HIDO_ATLitePoll(); HIDO_TimerPoll(); @@ -533,23 +537,21 @@ //} #ifndef DEBUG_MODE //if(flag_sleeptimer) - // if(!gpio_pin_get_val(INPUT_5V_Pin)&&((IfTCPConnected()&&Socket_IsSendQueueEmpty(0))||!flag_TCP_reconnectting&&!IfTCPConnected())) //进入休眠条件(与关系,全满足才进):1.没有5V输入 2 TCP已连接时发送队列为空||TCP无连接时不在重连状态。 - { - // if(!flag_4guart_needinit) - { - // LOG_INFO(TRACE_MODULE_APP, "4G RX 中断打开\r\n"); - // board_4GUsart_detection_init(_4gUsart_handler); -// - } -// flag_sleeptimer =0; -// LOG_INFO(TRACE_MODULE_APP, "进入休眠\r\n"); - // flag_4guart_needinit = 1; -// -// trace_flush(); -// uint32_t lock = int_lock(); -// //LOG_INFO(TRACE_MODULE_APP, "进入低功耗"); -// power_enter_power_down_mode(0); -// int_unlock(lock); + // if(!gpio_pin_get_val(INPUT_5V_Pin))//AIR780E_IsIPIdle() Socket_IsSendQueueEmpty(0) + // if(flag_4G_recdata!=2) + if(((IfTCPConnected()&&AIR780E_IsIPIdle()&&Socket_IsSendQueueEmpty(0))||!flag_TCP_reconnectting&&!IfTCPConnected())) //进入休眠条件(与关系,全满足才进):1.没有5V输入 2 TCP已连接时发送队列为空||TCP无连接时不在重连状态。 + { uint32_t lock; + flag_4guart_needinit = 1; + Internet_Poll(); + HIDO_ATLitePoll(); + HIDO_TimerPoll(); + TCPClient_Poll(); + power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)_4G_USART_RX_Pin, POWER_WAKEUP_LEVEL_LOW); + LOG_INFO(TRACE_MODULE_APP, "进入休眠\r\n"); + trace_flush(); + lock = int_lock(); + power_enter_power_down_mode(0); + int_unlock(lock); } #endif } -- Gitblit v1.9.3