From 4b421322afff4020c6b2c1bece996a7f9cd67337 Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期四, 18 四月 2024 16:53:09 +0800
Subject: [PATCH] V2.4

---
 APL/App.c |  458 +++++++++++++-------------------------------------------
 1 files changed, 107 insertions(+), 351 deletions(-)

diff --git a/APL/App.c b/APL/App.c
index 64ec978..4440981 100644
--- a/APL/App.c
+++ b/APL/App.c
@@ -58,6 +58,8 @@
 extern ST_GPS l_stGPS;
 extern uint32_t uwbled,gpsled,loraled,powerled;
 uint8_t uwb_send[100]={0x55,0xaa};
+void Uwb_Zubao_Poll();
+extern IWDG_HandleTypeDef hiwdg;
 /*******************************************************************************
  *                        Local Function Declaration                           *
  *******************************************************************************/
@@ -102,96 +104,41 @@
 //    UDPClient_UploadGPS((char*)LBS_data);
 }
 
-/*******************************************************************************
- * Function Name     : App_Poll
- * Description       : 
- * Input             : 
- * Output            : None
- * Return            : None
- * Author            : www.hido-studio.com
- * Modified Date:    : 2021年5月07日
- *******************************************************************************/
-//HIDO_VOID App_Poll(HIDO_VOID)
-//{
-//    // 充电状态
-//    if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8) == GPIO_PIN_SET)
-//    {
-//        if(HIDO_FALSE == l_bCharge)
-//        {
-//            l_bCharge = HIDO_TRUE;
-//            l_u32ChargeTick = 0;
-//            l_u32CancelChargeReport = HIDO_FALSE;
-//        }
 
-//        if(l_bCharge == HIDO_TRUE && l_u32CancelChargeReport == HIDO_FALSE)
-//        {
-//            if((HIDO_TimerGetTick() - l_u32ChargeTick) >= HIDO_TIMER_TICK_S(10))
-//            {
-//                l_u32ChargeTick = HIDO_TimerGetTick();
-
-//                // 发送状态
-//            }
-//        }
-
-//        return;
-//    }
-//    else
-//    {
-//        l_bCharge = HIDO_FALSE;
-//    }
-
-//    // 设备被拆卸
-//    if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_11) == GPIO_PIN_RESET)
-//    {
-//        if(HIDO_FALSE == l_bDismantle)
-//        {
-//            l_bCancelAlarm = HIDO_FALSE;
-//            l_bDismantle = HIDO_TRUE;
-//            l_u32DismantleAlarmTick = 0;
-//        }
-//    }
-//    else
-//    {
-//        l_bDismantle = HIDO_TRUE;
-//    }
-
-//    // 启动蜂鸣器
-//    if(l_bDismantle == HIDO_TRUE && l_bCancelAlarm == HIDO_FALSE)
-//    {
-//        // 蜂鸣器动作
-
-//        // 每隔10秒发送一次告警
-//        if((HIDO_TimerGetTick() - l_u32DismantleAlarmTick) >= HIDO_TIMER_TICK_S(10))
-//        {
-//            l_u32DismantleAlarmTick = HIDO_TimerGetTick();
-
-//            // 发送告警
-//        }
-//    }
-
-//    // 10分钟上报一次位置
-//    if((HIDO_TimerGetTick() - l_u32LocationTick) >= HIDO_TIMER_TICK_S(1/*0 * 60*/))
-//    {
-//        l_u32LocationTick = HIDO_TimerGetTick();
-
-//        // GPS定位有效
-//        if(l_stGPS.m_eState)
-//        {
-//            // 发送GNSS位置
-//        }
-//        // GPS定位无效
-//        else
-//        {
-//            // 获取LBS位置
-//            Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
-//        }
-//    }
-//}
 extern uint16_t nomove_count;
 extern uint8_t bat_percent;
 extern uint8_t chargedbg_flag;
 u8 power_state = 0,chargeon = 0;
 uint8_t chongman_flag;
+extern  uint16_t chongdian_yundong_time;
+extern uint8_t bat_percent;
+extern uint16_t heart_time;
+extern uint8_t nomove_flag;
+uint16_t qidong_time;
+#define QIDONG_TIME 60  //1分钟
+#define DENGDAI_TIME 30//90s
+//#define STOP_TIME 600-DENGDAI_TIME-QIDONG_TIME//600s 10分钟
+#define YUNDONG_UWB_TIME 1
+#define YUNDONG_GPS4G_TIME 100
+extern UART_HandleTypeDef huart2;
+uint8_t GPS_data[100];
+uint8_t GPS_successful_flag;
+uint8_t fangchai_flag;
+uint8_t fangchai_state;
+uint8_t only_one_flag;
+uint8_t only_one_flag1;
+extern uint16_t fangchai_time;
+extern uint8_t taglist_num;
+uint16_t tagseq;
+extern uint16_t tagid_list[ANC_MAX_NUM],tagdist_list[ANC_MAX_NUM];
+extern uint8_t yundong_state;
+extern uint16_t yundong_time;
+extern uint8_t tagbat_list[ANC_MAX_NUM];
+extern TIM_HandleTypeDef htim3;
+extern uint8_t beep_state;
+extern uint8_t air780_state;
+extern uint16_t sleep_time;
+uint8_t zuihoufasong_falg;
 void PowerLedTask(void)
 { 
      static u8 powerled_state=0;
@@ -204,6 +151,7 @@
         }
        while(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)&&DBG_GetMode() == DBG_MODE_CHARGE)
         {
+            HAL_IWDG_Refresh(&hiwdg);
         DBG_Poll();
         IdleTask();
         uwbled=LEDOFF;
@@ -211,18 +159,47 @@
         HIDO_TimerPoll();
         HIDO_ATLitePoll();
         UDPClient_Poll();
+            GPS_Poll();
             if(bat_percent>90)
             {
                 powerled = RED;
-                gpsled = LEDOFF;
-                uwbled = LEDOFF;
-                loraled = LEDOFF;
                 chongman_flag=1;
             }
             else
             {
                 powerled = RED;
             }
+                if(taglist_num>0)
+                {
+                    if(air780_state>=2)
+                    {   
+                        HAL_NVIC_SystemReset();
+                    }
+                    if(chongdian_yundong_time>=YUNDONG_UWB_TIME)
+                    {
+                        air780_state=0;
+                        chongdian_yundong_time=0;
+                        Uwb_Zubao_Poll();
+                        UDPClient_UploadGPS((char*)GPS_data);
+                        HexToAsciiSendUDP(uwb_send,19+5*taglist_num);
+                        taglist_num=0;
+                    }
+                }
+                else
+                {
+                        if(chongdian_yundong_time>=g_com_map[GPS_HZ])
+                        {
+                            chongdian_yundong_time=0;
+                            if(GPS_successful_flag)
+                            {
+                                UDPClient_UploadGPS((char*)GPS_data);
+                            }
+                            else
+                            {
+                                Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
+                            }
+                        }
+                }
         }
         
     }
@@ -253,8 +230,8 @@
 //    hardware_type = STMFLASH_ReadHalfWord(FLASH_HARDWARE_VERSION_MAP + 4);
     //deca_sleep(1000);
 
-    g_com_map[GROUP_ID]=0;
-	g_com_map[VERSION] = (2<<8)|1;
+    g_com_map[GROUP_ID]=3;
+	g_com_map[VERSION] = (2<<8)|4;
 
     if (g_com_map[COM_INTERVAL] <50)
     {
@@ -291,6 +268,7 @@
       else          
       {g_com_map[GPS_HZ]=600;}
     }
+    g_com_map[GPS_HZ]=1;
     if(g_com_map[CHAICHUGPS_HZ]<180||g_com_map[CHAICHUGPS_HZ]>3600)
     {
       {g_com_map[CHAICHUGPS_HZ]=600;}
@@ -352,32 +330,6 @@
         }
 
 }
-extern uint8_t bat_percent;
-extern uint16_t heart_time;
-extern uint8_t nomove_flag;
-uint16_t qidong_time;
-#define QIDONG_TIME 60  //1分钟
-#define DENGDAI_TIME 30//90s
-//#define STOP_TIME 600-DENGDAI_TIME-QIDONG_TIME//600s 10分钟
-#define YUNDONG_UWB_TIME 1
-#define YUNDONG_GPS4G_TIME 100
-extern UART_HandleTypeDef huart2;
-uint8_t GPS_data[100];
-uint8_t GPS_successful_flag;
-uint8_t fangchai_flag;
-uint8_t fangchai_state;
-uint8_t only_one_flag;
-uint8_t only_one_flag1;
-extern uint16_t fangchai_time;
-extern uint8_t taglist_num;
-uint16_t tagseq;
-extern uint16_t tagid_list[ANC_MAX_NUM],tagdist_list[ANC_MAX_NUM];
-extern uint8_t yundong_state;
-extern uint16_t yundong_time;
-extern uint8_t tagbat_list[ANC_MAX_NUM];
-extern TIM_HandleTypeDef htim3;
-extern uint8_t beep_state;
-extern uint8_t air780_state;
 void Stop_Mode_Poll()
 {
     if(only_one_flag==0)
@@ -394,9 +346,11 @@
 
         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);    
         Radio.Sleep();
+        dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN);
+        dwt_entersleep();
     }
 }
-void Stop_Mode_chulelora_Poll()//关掉除了lora外的
+void Stop_Mode_chulelora_Poll()//关掉除了uwb外的
 {
     if(only_one_flag1==0)
     {
@@ -410,7 +364,9 @@
         GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
         HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
 
-        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);    
+        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);  
+        dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN);
+        dwt_entersleep();        
     }
 }
 extern uint16_t testlorarecve;
@@ -441,170 +397,24 @@
         uwbchecksum = Checksum_u16(&uwb_send[2],15+5*taglist_num);
         memcpy(&uwb_send[17+5*taglist_num],&uwbchecksum,2);
 }
-//void Main_Poll()
-//{
-//    u16 uwbchecksum;
-//    IdleTask();
-//    if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1)) // 设备被拆卸
-//    {
-//        if(air780_state>=2)
-//        {   
-//            HAL_NVIC_SystemReset();
-//        }
-//        fangchai_flag=1;
-//        yundong_state=0;
-//        if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
-//        {
-//            if(bat_percent>90)
-//            {
-//                powerled = RED;
-//                gpsled = LEDOFF;
-//                uwbled = LEDOFF;
-//                loraled = LEDOFF;
-//                chongman_flag=1;
-//            }
-//            else
-//            {
-//                powerled = RED;
-//            }
-//        }
-//        else
-//        {chongman_flag=0;}
-
-//        GPS_Poll();
-//        Internet_Poll();
-//        HIDO_TimerPoll();
-//        HIDO_ATLitePoll();
-//        UDPClient_Poll();
-
-//        if(fangchai_time>g_com_map[CHAICHUGPS_HZ])
-//        {
-//            fangchai_time=0;
-//            if(GPS_successful_flag)
-//            {
-//                UDPClient_UploadGPS((char*)GPS_data);
-//            }
-//            else
-//            {
-//                Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
-//            }
-//        }        
-//    }
-//    else//设备没被拆卸
-//    {
-//        fangchai_flag=0;
-//        if(fangchai_state>=2)
-//        {   
-//            HAL_NVIC_SystemReset();
-//        }
-//        if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))//5V输入检测
-//        {   yundong_state=0;
-//            PowerLedTask();
-//            DBG_Poll();
-//            IdleTask();
-//            Internet_Poll();
-//            HIDO_TimerPoll();
-//            HIDO_ATLitePoll();
-//            UDPClient_Poll();
-//            uwbled=LEDOFF;
-//        } 
-//        else//没有5V输入
-//        {
-//            if(nomove_flag)//静止状态
-//            {
-//                yundong_state=0;
-//                Stop_Mode_Poll();
-//                HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
-//            }
-//            else//运动状态
-//            {   
-//                if(yundong_state==0)
-//                {Radio.Rx(0);}
-//                yundong_state=1;               
-//                GPS_Poll();
-//                Internet_Poll();
-//                HIDO_TimerPoll();
-//                HIDO_ATLitePoll();
-//                UDPClient_Poll();
-////                taglist_num=5;
-//                if(taglist_num>0)
-//                {
-//                    if(air780_state>=2)
-//                    {   
-//                        HAL_NVIC_SystemReset();
-//                    }
-//                    if(yundong_time>=YUNDONG_UWB_TIME)
-//                    {
-//                        air780_state=0;
-//                        yundong_time=0;
-//                        Uwb_Zubao_Poll();
-//                        HexToAsciiSendUDP(uwb_send,19+5*taglist_num);
-////                        loraled=BLUE;
-//                        taglist_num=0;
-//                    }
-//                }
-//                else
-//                {
-//                    if(g_com_map[GPS_HZ]==1)
-//                    {
-//                        if(yundong_time>=g_com_map[GPS_HZ])
-//                        {
-//                            yundong_time=0;
-//                            if(GPS_successful_flag)
-//                            {
-//                                UDPClient_UploadGPS((char*)GPS_data);
-////                                loraled=GREEN;
-//                            }
-//                            else
-//                            {
-//                                Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
-////                                loraled=WHITE;
-//                            }
-//                        }
-//                    }
-//                    else
-//                    {
-//                        if(yundong_time>=60&&air780_state==0)
-//                        {
-//                            air780_state=1;
-//                            yundong_time=0;
-//                            if(GPS_successful_flag)
-//                            {
-//                                UDPClient_UploadGPS((char*)GPS_data);
-////                                loraled=GREEN;
-//                            }
-//                            else
-//                            {
-//                                Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
-////                                loraled=WHITE;
-//                            }
-//                        }
-//                        if(yundong_time>=30&&air780_state==1)
-//                        {
-//                            air780_state=2;
-//                            yundong_time=0;
-//                            Stop_Mode_chulelora_Poll();
-//                        }
-//                        if(air780_state==2)
-//                        {
-//                            HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
-//                        }
-//                        if(yundong_time>=g_com_map[GPS_HZ]-60&&air780_state==2)
-//                        {
-//                            HAL_NVIC_SystemReset();
-//                        }
-//                    }
-//                }
-//            }            
-//        }
-//    }
-//}
-
 extern uint16_t testlorarecve;
 void Main_Poll()
 {
     u16 uwbchecksum;
     IdleTask();
+    HAL_IWDG_Refresh(&hiwdg);
+    if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))//5V输入检测
+    {   yundong_state=0;
+        PowerLedTask();
+        DBG_Poll();
+        IdleTask();
+        Internet_Poll();
+        HIDO_TimerPoll();
+        HIDO_ATLitePoll();
+        UDPClient_Poll();
+    }
+    else   
+    {        
     if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1)) // 设备被拆卸拆卸后每秒发1次XTB,连续发五次。  然后10分钟发送一次定位信息,和XTB,其他时候休眠。
     {
         if(air780_state>=2)
@@ -613,23 +423,6 @@
         }
         fangchai_flag=1;
         yundong_state=0;
-        if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
-        {
-            if(bat_percent>90)
-            {
-                powerled = RED;
-                gpsled = LEDOFF;
-                uwbled = LEDOFF;
-                loraled = LEDOFF;
-                chongman_flag=1;
-            }
-            else
-            {
-                powerled = RED;
-            }
-        }
-        else
-        {chongman_flag=0;}
         if(fangchai_state==0||fangchai_state==1)
         {
             GPS_Poll();
@@ -673,29 +466,26 @@
         {   
             HAL_NVIC_SystemReset();
         }
-        if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))//5V输入检测
-        {   yundong_state=0;
-            PowerLedTask();
-            DBG_Poll();
-            IdleTask();
-            Internet_Poll();
-            HIDO_TimerPoll();
-            HIDO_ATLitePoll();
-            UDPClient_Poll();
-            uwbled=LEDOFF;
-        } 
-        else//没有5V输入
-        {
-            if(nomove_flag)//静止状态
+            if(nomove_flag/*&&zuihoufasong_falg*/)//静止状态
             {
                 yundong_state=0;
+                if(sleep_time>12)
+                {
                 Stop_Mode_Poll();
                 HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
+                if(sleep_time>600)
+                {HAL_NVIC_SystemReset();}
+                }
+                else  
+                {                    
+                Internet_Poll();
+                HIDO_TimerPoll();
+                HIDO_ATLitePoll();
+                UDPClient_Poll();
+                }
             }
-            else//运动状态
-            {   
-                if(yundong_state==0)
-                {Radio.Rx(0);}
+            else
+            {
                 yundong_state=1;               
                 GPS_Poll();
                 Internet_Poll();
@@ -714,67 +504,33 @@
                         air780_state=0;
                         yundong_time=0;
                         Uwb_Zubao_Poll();
+                        UDPClient_UploadGPS((char*)GPS_data);
                         HexToAsciiSendUDP(uwb_send,19+5*taglist_num);
-//                        loraled=BLUE;
                         taglist_num=0;
                     }
                 }
                 else
                 {
-                    if(g_com_map[GPS_HZ]==1)
-                    {
+//                    if(g_com_map[GPS_HZ]==1)
+//                    {
                         if(yundong_time>=g_com_map[GPS_HZ])
                         {
                             yundong_time=0;
                             if(GPS_successful_flag)
                             {
                                 UDPClient_UploadGPS((char*)GPS_data);
-//                                loraled=GREEN;
                             }
                             else
                             {
                                 Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
-//                                loraled=WHITE;
                             }
                         }
-                    }
-                    else
-                    {
-                        if(yundong_time>=60&&air780_state==0)
-                        {
-                            air780_state=1;
-                            yundong_time=0;
-                            if(GPS_successful_flag)
-                            {
-                                UDPClient_UploadGPS((char*)GPS_data);
-//                                loraled=GREEN;
-                            }
-                            else
-                            {
-                                Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
-//                                loraled=WHITE;
-                            }
-                        }
-                        if(yundong_time>=30&&air780_state==1)
-                        {
-                            air780_state=2;
-                            yundong_time=0;
-                            Stop_Mode_chulelora_Poll();
-                        }
-                        if(air780_state==2)
-                        {
-                            HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
-                        }
-                        if(yundong_time>=g_com_map[GPS_HZ]-60&&air780_state==2)
-                        {
-                            HAL_NVIC_SystemReset();
-                        }
-                    }
                 }
-            }            
-        }
+            }
+        
     }
 }
+}
 
 //*/
 ////以上是源代码,被拆除时间接性关闭4G
\ No newline at end of file

--
Gitblit v1.9.3