From 38c1a38c08b6dfbc4632def361ddf8398a9f2107 Mon Sep 17 00:00:00 2001
From: chen <15335560115@163.com>
Date: 星期日, 20 四月 2025 18:38:09 +0800
Subject: [PATCH] 修改GPS4G灯充电灯闪灯逻辑,修改发送逻辑,处理4G立即关闭无法发送心跳包逻辑,完成3连击单击长按按钮逻辑,初步测试成功版本

---
 keil/include/src/gps.c |   85 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 85 insertions(+), 0 deletions(-)

diff --git a/keil/include/src/gps.c b/keil/include/src/gps.c
index 64a424d..0b74400 100644
--- a/keil/include/src/gps.c
+++ b/keil/include/src/gps.c
@@ -5,11 +5,27 @@
 #define GPS_RESTART_TIME1  480  //10分钟
 #define GPS_RESTART_TIME2  48		//1分钟
 #define GPS_RESTART_TIME3  30		//30s
+
+#define GPS_VALID_LED_WAIT_COUNT 1
+#define GPS_INVALID_LED_WAIT_COUNT 5
+#define AIR_CONNECT_LED_WAIT_COUNT 5
 extern uint16_t gps_wait_count,g_com_map[COM_MAP_SIZE];
 extern uint8_t flag_first_TCPconnect;
 extern uint16_t gps_wait_count2;
 uint16_t g_spsum,g_snum,ave_sp;
 uint8_t gps_power_state,gps_uwb_flag,gps_4g_flag,gps_timeout_flag,gps_need_data_flag = 1,gps_open_flag,gps_first_flag=1;
+extern uint8_t gps_success_state,air780_success_state,power_low_flag,state5V_prase_flag,green_charge_state,enbale_blink_flag,active_flag;
+typedef enum {
+    STATE_IDLE,
+    STATE_VALID,
+    STATE_INVALID
+} GPSState;
+typedef enum {
+    CONNECT,
+    DISCONNECT,
+} LED4GState;
+GPSState GPS_state=STATE_IDLE;
+LED4GState LED_4g_state=DISCONNECT;
 void GPS_Poll(void)
 {
 
@@ -115,7 +131,76 @@
 			}
 		update_led_power_state();
 }
+void POWER_LED_Task(void)
+{
+if(enbale_blink_flag)
+	{
+	green_charge_state=0;
+	charge_red_on();
+	}
+	charge_state_change();//充电状态判断
+	if(enbale_blink_flag)
+	{
+	delay_us(5000);
+	green_charge_state=0;
+	charge_red_off();
+	}		
+}
+ uint8_t wltag_gps_timer,wltag_4g_timer;;
+void GPS_LED_Task(void)
+{
 
+	if(state5V_prase_flag||power_low_flag||!gps_power_state)
+	{
+	GPS_state=STATE_IDLE;
+	}
+switch(GPS_state){
+	case STATE_INVALID:
+			if(wltag_gps_timer++>=GPS_INVALID_LED_WAIT_COUNT)
+			{	wltag_gps_timer=0;
+				blink_led(&gps_success_state);
+			}
+			break;
+	case STATE_VALID:
+			if(wltag_gps_timer++>=GPS_VALID_LED_WAIT_COUNT)
+			{	wltag_gps_timer=0;
+				blink_led(&gps_success_state);
+			}
+			break;
+	case STATE_IDLE:
+		gps_led_off();
+		wltag_gps_timer=0;
+		  break;
+		}	
+}
+void LED_4G_task(void)
+{
+
+if(Internet_IsIPReady() == HIDO_TRUE&&!power_low_flag&&active_flag)
+{
+LED_4g_state=CONNECT;
+}else{
+LED_4g_state=DISCONNECT;
+}
+switch(LED_4g_state){
+	case CONNECT:
+			if(wltag_4g_timer++>=AIR_CONNECT_LED_WAIT_COUNT)
+			{	wltag_4g_timer=0;
+				blink_led(&air780_success_state);
+			}
+			break;
+	case DISCONNECT:
+			air780_led_off();
+			wltag_4g_timer=0;
+			break;
+		}
+}
+void LED_Task(void)
+{
+POWER_LED_Task();
+LED_4G_task();
+GPS_LED_Task();
+}
 HIDO_INT32 GPS_ParseGSV(HIDO_CHAR *_pcData, HIDO_UINT32 _u32Len)
 {
     HIDO_DataStruct spower[4];

--
Gitblit v1.9.3