keil/include/main/main.c
@@ -61,6 +61,8 @@
#include "HIDO_ATLite.h"
#include "HIDO_Timer.h"
#include "TCPClient.h"
#include "DBG.h"
#include "Shell.h"
//#define DEBUG_MODE
extern int simple_main(void);
@@ -165,6 +167,7 @@
}
uint8_t control_close_flag;
int16_t control_close_count;
uint8_t close_state_flag;
static void adc_callback(void *data, uint32_t number)
{
    uint32_t *result = (uint32_t *)data;
@@ -195,6 +198,7 @@
                  userkey_state=2;
               TCPHeartBeatUpload();//低电量休眠
                  control_close_flag=1;
                  close_state_flag=2;
//                  delay_ms(1000);//等待发送完成
               }
               power_low_flag=1;
@@ -251,13 +255,14 @@
void IMUTask(void)
{
   if(nomove_count>g_com_map[NOMOVESLEEP_TIME]&&g_com_map[IMU_ENABLE]==1)
   if(nomove_count>g_com_map[NOMOVESLEEP_TIME]&&g_com_map[IMU_ENABLE]==1&&active_flag)
   {power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)ACCLERATE_DETECT_Pin, POWER_WAKEUP_LEVEL_HIGH);
      userkey_state=3;
      if(control_close_flag==0)
         TCPHeartBeatUpload();//静止休眠
         //      delay_ms(1000);
      control_close_flag=1;
      close_state_flag=3;
   }
}
@@ -285,6 +290,8 @@
      gps_need_data_flag=1;
      gps_wait_count2=0;
      gps_wait_count=0;
      beepontime=0;
      beep_start_flag=0;
      }
      if(control_close_flag)
      {
@@ -292,18 +299,23 @@
         {
         gps_air780_power_change(0,0);//gps,4G关闭
            
         control_close_flag=0;
         control_close_count=0;
            if(userkey_state==4)
            active_flag=0;
            else if(userkey_state==3)
            if(close_state_flag==4)
            {active_flag=0;
               TCP_reconnect_timer=0;//重置4G重连条件
               flag_TCP_reconnectting = 1;
            }else if(close_state_flag==3)
            {
            mcu_deep_sleep();
            }
            close_state_flag=0;
           control_close_flag=0;
           control_close_count=0;
         }
      }else{
      control_close_count=0;
      }
//      HIDO_TimerTick();
      LED_Task();
    //UWB状态检测
if(!power_low_flag&&active_flag)//低供电下不需要检测重连
@@ -378,6 +390,8 @@
   {   userkey_state=4;
      TCPHeartBeatUpload();//立即上传心跳包
      control_close_flag=1;
      close_state_flag=4;
    //air_send_Task();
//      gps_air780_power_change(0,0);//gps,4G关闭
//      active_flag=0;
@@ -385,11 +399,15 @@
   gps_air780_power_change(1,1);//gps,4G关闭
      active_flag=1;
   }
   nomove_count=0;
}
void  handle_single_click(void)
{
beepontime=1;
beep_start_flag=1;
//beepontime=1;
//beep_start_flag=1;
motor_off();
//      motor_on_and_off(&motor_power_state);
//      motor_power_state=1;
}
// 时间阈值定义
@@ -411,6 +429,8 @@
{
sos_state=WAIT_NEXT_RISING;
falling_time=HIDO_TimerGetTick();
if(!power_low_flag&&active_flag)
motor_on();
}
void click_Task(void)
{
@@ -479,11 +499,13 @@
      {
      click_count=0;
      long_press_flag=1;
      sos_state=IDLE;   
      }else{
      click_count=0;
      sos_state=IDLE;   
      }
      motor_off();
      temp_rising_time=rising_time;
   }
}else if(sos_state==WAIT_NEXT_FALLING)
@@ -498,6 +520,7 @@
         click_count=0;
         sos_state=IDLE;
      }
   }
}
void UserKeyTask(void)
@@ -566,12 +589,12 @@
      }
    g_com_map[MODBUS_MODE] = 0;
      log_4g_enable_flag=g_com_map[LOG_4G_ENABLE];
    ip0 = (g_com_map[TCP_IP_0]>>12&0xf)*1000+(g_com_map[TCP_IP_0]>>8&0xf)*100+(g_com_map[TCP_IP_0]>>4&0xf)*10+(g_com_map[TCP_IP_0]&0xf);
    ip1 = (g_com_map[TCP_IP_1]>>12&0xf)*1000+(g_com_map[TCP_IP_1]>>8&0xf)*100+(g_com_map[TCP_IP_1]>>4&0xf)*10+(g_com_map[TCP_IP_1]&0xf);
    ip2 = (g_com_map[TCP_IP_2]>>12&0xf)*1000+(g_com_map[TCP_IP_2]>>8&0xf)*100+(g_com_map[TCP_IP_2]>>4&0xf)*10+(g_com_map[TCP_IP_2]&0xf);
    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)|15;
    ip0 = g_com_map[IP_0];
    ip1 = g_com_map[IP_1];
    ip2 = g_com_map[IP_2];
    ip3 = g_com_map[IP_3];
    port = g_com_map[PORT];
    g_com_map[VERSION] = (1<<8)|20;
    LOG_INFO(TRACE_MODULE_APP,"设备ID: %x .\r\n",dev_id);
    LOG_INFO(TRACE_MODULE_APP,"固件版本:4G-GPS定位手环 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);
@@ -594,6 +617,64 @@
            //UartInit();
        }
            //检测到5V输入
                 while(1)
            {
                nomove_count = 0;
                wdt_ping(WDT_ID0);//喂狗
         if(DBG_GetMode() == DBG_MODE_SHELL)
         {
//               if(flag_secondtask)
//               {
//                     flag_secondtask = 0;
//                     SecondTask();
//               }
      }
         if(flag_TCP_reconnectting||IfTCPConnected())
        {
                 if(flag_4G_recdata==1)
            {
                flag_4G_recdata = 2;
                Socket_RecvAll();
            }
            Internet_Poll();
            HIDO_ATLitePoll();
            HIDO_TimerPoll();
            TCPClient_Poll();
        }
                UART_CheckReceive();
                           UserKeyTask();
                           IMUTask();
                if(flag_secondtask)
                {
                    flag_secondtask = 0;
                    SecondTask();
                }
                if(DBG_GetMode() == DBG_MODE_SHELL)
                {
                    if(g_com_map[CNT_RESTART]==1)
                    {
                        g_com_map[CNT_RESTART]=0;
                        save_com_map_to_flash();
                        NVIC_SystemReset();
                    }
                }
                else
                {
                }
//                if(input5v_time)
//                {
                if(!gpio_pin_get_val(INPUT_5V_Pin))
                {
                break;
                }
//                }
            }
                  //NVIC_SystemReset();//重启
        //UART_CheckSend();
    } else {
        if(state5v==1)
@@ -698,6 +779,8 @@
    // TODO 4G
    Uart_Register(UART_ID_4G, UART_ID0);
      Uart_Register(UART_ID_DBG_GPS, UART_ID1);
    DBG_Init();
    Internet_Init();
    TCPClient_Init();