From b84cfd7132f578a4d12764700ade6b15faf7c7e9 Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期四, 17 四月 2025 11:30:44 +0800
Subject: [PATCH] 加入ota

---
 keil/include/src/TCPClient.c |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 50 insertions(+), 2 deletions(-)

diff --git a/keil/include/src/TCPClient.c b/keil/include/src/TCPClient.c
index 3a3ef21..434e6e6 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                                      *
  *******************************************************************************/
@@ -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;
 }
 
@@ -295,7 +336,7 @@
 extern uint8_t bat_percent,taglist_num;
 uint8_t alarm_type;
 extern double jd,wd;
-
+extern char GGA_Format_message[200];
 void UDPClient_UploadGPS(void)
 {	if(gps_open_flag||userkey_state)
 	air780_led_on();
@@ -335,6 +376,13 @@
 	  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有效次数
+		air780_led_off();
+}
+void UDPClient_UploadGPS_1pack(void)//单包发送功能
+{		air780_led_on();
+	  Socket_Send(l_i32TCPClientID, (HIDO_UINT8 *)GGA_Format_message, sizeof(GGA_Format_message));
+		memset(GGA_Format_message, 0, sizeof(GGA_Format_message));//清空接收到的用完的数组
 		gga_num=0;//清0有效次数
 		air780_led_off();
 }
@@ -412,7 +460,7 @@
 
 
            
-           if ((u32CurTick - l_u32HeartBeatTick) >= HIDO_TIMER_TICK_S(60)||flag_first_TCPconnect)
+           if ((u32CurTick - l_u32HeartBeatTick) >= HIDO_TIMER_TICK_S(1)||flag_first_TCPconnect)
 					 //if ((u32CurTick - l_u32HeartBeatTick) >= HIDO_TIMER_TICK_S(g_com_map[SEND_4G_SECOND])||flag_first_TCPconnect)
             {
                 flag_first_TCPconnect = 0;

--
Gitblit v1.9.3