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/TCPClient.c |   83 +++++++++++++++++++++++++++++++----------
 1 files changed, 63 insertions(+), 20 deletions(-)

diff --git a/keil/include/src/TCPClient.c b/keil/include/src/TCPClient.c
index de74cec..e802f41 100644
--- a/keil/include/src/TCPClient.c
+++ b/keil/include/src/TCPClient.c
@@ -20,6 +20,8 @@
 #include "mk_4G.h"
 #include "mk_trace.h"
 #include "dw_app_anchor.h"
+#include "mk_flash.h"
+#include <serial_at_cmd_app.h>
 /*******************************************************************************
  *                                  Macro                                      *
  *******************************************************************************/
@@ -51,7 +53,7 @@
  *                        Local Function Declaration                           *
  *******************************************************************************/
 HIDO_INT32 TCPClient_Heartbeat(HIDO_VOID);
-void TCPHeartBeatUpload(void);
+void TCPHeartBeatUpload();
 void UDPClient_UploadGPS(void);
 void TCPReceiveMessageReply(void);
 /*******************************************************************************
@@ -219,6 +221,45 @@
             }
 				}
 		}
+           /* $update,id,url,version */
+    else if(STRCMP(_u8Data, "$update,") == 0)
+    {
+        u32SplitCnt = HIDO_UtilStrSplit((HIDO_CHAR *)_u8Data, ',', apcSplitStr, HIDO_ARRARY_COUNT(apcSplitStr));
+
+        if(u32SplitCnt < 4)
+        {
+            return HIDO_ERR;
+        }
+
+        /* 设备ID检查 */
+        if(HIDO_UtilHexStrToInt(apcSplitStr[1]) == g_com_map[DEV_ID])
+        {
+//              ota_flag=1;
+//              LOG_INFO(TRACE_MODULE_APP,"OTA文件地址名称:%s.\r\n",(char *)&apcSplitStr[2]);
+//              uart_send(UART_ID1, (char *)&apcSplitStr[2],strlen(apcSplitStr[3]), NULL);
+//            memcpy(testdata,(HIDO_UINT8*)apcSplitStr[2],strlen(apcSplitStr[2]) + 1);
+//              OTA_Start((HIDO_UINT8*)apcSplitStr[2]);
+            
+//            g_com_map[OTA_FLAG]=1;
+//            g_com_map[OTA_URL_CHANGDU]=strlen(apcSplitStr[2]) + 1;
+//            memcpy(g_com_map+OTA_URL_INDEX,(HIDO_UINT8*)apcSplitStr[2],strlen(apcSplitStr[2]) + 1);
+//            save_com_map_to_flash();
+//            delay_us(100000);
+            uint16_t tmp = 0xCCCC;
+            __disable_irq();
+            result=flash_open(FLASH_ID0,NULL);
+            if(!result) 
+            {
+            flash_erase(FLASH_ID0, APP_CONFIG_IAPFLAG_SECTOR_ADDR, FLASH_SECTOR_SIZE);//擦除APPFLAG
+            flash_write_nbytes(FLASH_ID0, APP_CONFIG_IAPFLAG_MAP, (uint8_t*)&tmp, sizeof(tmp));
+            flash_erase(FLASH_ID0, APP_CONFIG_IAP_PARAM_MAP, FLASH_SECTOR_SIZE);//擦除APPFLAG
+            flash_write_nbytes(FLASH_ID0, APP_CONFIG_IAP_PARAM_MAP, (HIDO_UINT8*)apcSplitStr[2], strlen(apcSplitStr[2]) + 1);
+            }
+            __enable_irq();
+            NVIC_SystemReset(); //软复位回到bootloader
+        }
+    }
+
     return HIDO_OK;
 }
 
@@ -297,8 +338,9 @@
 extern double jd,wd;
 extern char GGA_Format_message[200];
 void UDPClient_UploadGPS(void)
-{	if(gps_open_flag||userkey_state)
-	air780_led_on();
+{	
+//	if(gps_open_flag||userkey_state)
+//	air780_led_on();
     HIDO_CHAR acHeart[200];
     HIDO_UINT32 u32HeartLen;
 	 ave_sp = g_spsum/g_snum;
@@ -315,20 +357,20 @@
 	
 	u32HeartLen = snprintf(acHeart, sizeof(acHeart), "%s,%04x,%x,%d,%d,0,0\r\n", \
                                GPS_GGAmessage,g_com_map[DEV_ID],bat_percent,userkey_state,gps_timeout_flag);
-	
+	memset(GPS_GGAmessage, 0, sizeof(GPS_GGAmessage));
 		
-	if(gps_open_flag&&userkey_state!=1){
+//	if(userkey_state!=1){
 		Socket_Send(l_i32TCPClientID, (HIDO_UINT8 *)acHeart, u32HeartLen);
-	}
-	if (userkey_state){
-		TCPHeartBeatUpload();//立即上传心跳包
+//	}
+//	if (userkey_state){
+//		TCPHeartBeatUpload();//立即上传心跳包
 //	  Socket_Send(l_i32TCPClientID, (HIDO_UINT8 *)GGA_Final_message, u32GGaLenth);
 //		memset(GGA_Final_message, 0, sizeof(GGA_Final_message));//清空接收到的用完的数组
 //		u32GGaLenth=0;
 //		gga_num=0;//清0有效次数
-	}
-	userkey_state = 0;
-	air780_led_off();
+//	}
+	//userkey_state = 0;
+//	air780_led_off();
 }
 void UDPClient_UploadGPS_10pack(void)//10包发送功能
 {		air780_led_on();
@@ -345,7 +387,7 @@
 		gga_num=0;//清0有效次数
 		air780_led_off();
 }
-void TCPHeartBeatUpload(void)
+void TCPHeartBeatUpload()
 {
     HIDO_CHAR acHeart1[200];
     HIDO_UINT32 u32HeartLen;
@@ -363,9 +405,10 @@
 	//         u32Len = HIDO_UtilSnprintf((HIDO_CHAR *)l_au8CmdBuff, sizeof(l_au8CmdBuff), "$XTB,%X,%02u%%,%d.%d,%s,%d,1.",
 //                    g_com_map[DEV_ID], bat_percent2, g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff, Module_GetCCID(),userkey_state4g,g_com_map[TCP_IP_0],g_com_map[TCP_IP_1],g_com_map[TCP_IP_2],g_com_map[TCP_IP_3],g_com_map[TCP_PORT]);   
 
-	u32HeartLen = snprintf(acHeart1, sizeof(acHeart1), "$XTB,%04x,%02u%%,%d.%d,%s,%d,0\r\n", \
+	u32HeartLen = snprintf(acHeart1, sizeof(acHeart1), "$XTB,%04x,%02u%%,%d.%d,%s,%d,1\r\n", \
                                g_com_map[DEV_ID],bat_percent,g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff,Module_GetCCID(),userkey_state);
     Socket_Send(l_i32TCPClientID, (HIDO_UINT8 *)acHeart1, u32HeartLen);
+	userkey_state=0;
 }
 void TCPReceiveMessageReply(void)
 {
@@ -373,13 +416,13 @@
     HIDO_UINT32 u32HeartLen = snprintf(acHeart, sizeof(acHeart), "$rec_message,%04x",g_com_map[DEV_ID]);
     Socket_Send(l_i32TCPClientID, (HIDO_UINT8 *)acHeart, u32HeartLen);
 }
-void _4GAlarmUpload(uint8_t alarm)
-{
-    alarm_type = alarm;
-    TCPHeartBeatUpload();
-    if(alarm_type == 2)
-        alarm_type = 0;
-}
+//void _4GAlarmUpload(uint8_t alarm)
+//{
+//    alarm_type = alarm;
+//    TCPHeartBeatUpload();
+//    if(alarm_type == 2)
+//        alarm_type = 0;
+//}
 
 HIDO_INT32 TCPClient_Poll(void)
 {

--
Gitblit v1.9.3