From 974181bcefe299fbed4c1dcd6d39be3e9f674c0e Mon Sep 17 00:00:00 2001
From: chen <15335560115@163.com>
Date: 星期五, 13 六月 2025 18:04:16 +0800
Subject: [PATCH] 成功增加sscom03shell配置指令功能,但是需要输入3次才能进入函数处理未解决

---
 keil/include/main/main.c |  111 ++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 97 insertions(+), 14 deletions(-)

diff --git a/keil/include/main/main.c b/keil/include/main/main.c
index 72d51b7..58edd5a 100644
--- a/keil/include/main/main.c
+++ b/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();
 

--
Gitblit v1.9.3