yincheng.zhong
2024-09-05 6948b22fe50de357285ab337aebb8e7d8dad6d97
keil/include/main/main.c
@@ -272,7 +272,7 @@
    HIDO_TimerTick();
    nomove_count++;
}
uint8_t flag_sleeptimer,flag_secondtask,secondtask_count;
uint8_t flag_sleeptimer,flag_secondtask,secondtask_count,delaysleep_count;
static void sleep_timer_callback(void *dev, uint32_t time)
{
    IO_control_init();
@@ -307,7 +307,8 @@
    }else{
        motor_power_state=1;
    }
    if(delaysleep_count>0)
        delaysleep_count--;
    //GPS工作逻辑
}
@@ -319,15 +320,17 @@
{
    nomove_count=0;
}
uint8_t flag_4G_recdata;
uint8_t flag_4G_recdata,flag_entersleep;
void _4gUsart_handler(enum IO_PIN_T pin)
{
    if(!gpio_pin_get_val(_4G_USART_RX_Pin))
{
    LOG_INFO(TRACE_MODULE_APP, "4G RX 唤醒\r\n");
     flag_4G_recdata = 1;
        delaysleep_count = 3;
    }
    
    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;
extern uint8_t gps_4g_flag;
@@ -504,17 +507,17 @@
  board_4GUsart_detection_init(_4gUsart_handler);
    while (1)
    {
        if(flag_TCP_reconnectting||IfTCPConnected())
        {
        if(flag_4G_recdata==1)
            {
                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");
//LOG_INFO(TRACE_MODULE_APP, "处理4G\r\n");
            Internet_Poll();
            HIDO_ATLitePoll();
            HIDO_TimerPoll();
@@ -539,15 +542,20 @@
//if(flag_sleeptimer)
       // 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;
        //if(((IfTCPConnected()&&AIR780E_IsIPIdle()&&Socket_IsSendQueueEmpty(0))||((!flag_TCP_reconnectting)&&!IfTCPConnected()))) //进入休眠条件(与关系,全满足才进):1.没有5V输入 2 TCP已连接时发送队列为空||TCP无连接时不在重连状态。
        if(delaysleep_count==0)
        if((IfTCPConnected()&&AIR780E_IsIPIdle()&&Socket_IsSendQueueEmpty(0)))
        {
            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);
         //   power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)_4G_USART_RX_Pin, POWER_WAKEUP_LEVEL_LOW);
            LOG_INFO(TRACE_MODULE_APP, "进入休眠\r\n");
           // delay_us(300000);
            trace_flush();
            lock = int_lock();            
            power_enter_power_down_mode(0);