From 567085ead3f6adaabd884f16ab4b17c62e8f0403 Mon Sep 17 00:00:00 2001
From: yincheng.zhong <634916154@qq.com>
Date: 星期日, 21 十二月 2025 22:28:09 +0800
Subject: [PATCH] OTA升级功能调通,准备增加boot的代码
---
STM32H743/FML/Internet/HTTPClient.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 47 insertions(+), 10 deletions(-)
diff --git a/STM32H743/FML/Internet/HTTPClient.c b/STM32H743/FML/Internet/HTTPClient.c
index 5dd4da6..6e88666 100644
--- a/STM32H743/FML/Internet/HTTPClient.c
+++ b/STM32H743/FML/Internet/HTTPClient.c
@@ -323,27 +323,64 @@
l_u32HTTPRecvTotalLen = l_pu8HTTPRespBody - (HIDO_UINT8 *)l_acHTTPRecvBuff + l_u32HTTPContentLength;
l_eHTTPRecvState = HTTP_RECV_STATE_BODY;
- if (l_u32HTTPRecvBuffLen >= l_u32HTTPRecvTotalLen)
+ // 瀵逛簬GET_FILE鏂规硶锛岀珛鍗冲洖璋冧紶閫掑ご閮ㄤ俊鎭紙DataLen=0琛ㄧず棣栨鍥炶皟锛�
+ if(HTTP_METHOD_GET_FILE == l_eHTTPMethod)
{
- // 瀵逛簬GET_FILE鏂规硶锛岄渶瑕佸厛浼犻�抌ody鏁版嵁
- if(HTTP_METHOD_GET_FILE == l_eHTTPMethod && l_u32HTTPContentLength > 0)
+ HIDO_UINT32 u32BodyLen = l_u32HTTPRecvBuffLen - (l_pu8HTTPRespBody - (HIDO_UINT8 *)l_acHTTPRecvBuff);
+ if(u32BodyLen > 0)
{
- HTTPClient_Response(l_u32HTTPRespCode, l_pu8HTTPRespBody, l_u32HTTPContentLength);
+ // 澶撮儴鎺ユ敹鏃跺凡缁忓寘鍚儴鍒咮ody鏁版嵁锛岀珛鍗冲洖璋�
+ HTTPClient_Response(l_u32HTTPRespCode, l_pu8HTTPRespBody, u32BodyLen);
+ // 閲嶇疆缂撳啿鍖猴紝鍑嗗鎺ユ敹鍚庣画鏁版嵁
+ l_u32HTTPRecvBuffLen = 0;
+ l_u32HTTPRecvTotalLen = l_u32HTTPContentLength - u32BodyLen;
}
- Socket_Close(l_i32HTTPClientSockID);
+ else
+ {
+ // 澶撮儴鍒氭帴鏀跺畬锛孊ody鏁版嵁杩樻湭鍒帮紝鍏堝洖璋冨ご閮ㄤ俊鎭�
+ HTTPClient_Response(l_u32HTTPRespCode, HIDO_NULL, 0);
+ l_u32HTTPRecvBuffLen = 0;
+ l_u32HTTPRecvTotalLen = l_u32HTTPContentLength;
+ }
+ }
+ else
+ {
+ // 闈濭ET_FILE鏂规硶锛屼繚鎸佸師鏈夐�昏緫
+ if (l_u32HTTPRecvBuffLen >= l_u32HTTPRecvTotalLen)
+ {
+ Socket_Close(l_i32HTTPClientSockID);
+ }
}
}
}
- else
+ else if(HTTP_RECV_STATE_BODY == l_eHTTPRecvState)
{
- if (l_u32HTTPRecvBuffLen >= l_u32HTTPRecvTotalLen)
+ // BODY鎺ユ敹鐘舵��
+ if(HTTP_METHOD_GET_FILE == l_eHTTPMethod)
{
- // 瀵逛簬GET_FILE鏂规硶锛岄渶瑕佸厛浼犻�抌ody鏁版嵁
- if(HTTP_METHOD_GET_FILE == l_eHTTPMethod && l_u32HTTPContentLength > 0)
+ // GET_FILE鏂规硶锛氬垎鍧楀洖璋冿紝鎺ユ敹婊$紦鍐插尯灏卞洖璋�
+ if(l_u32HTTPRecvBuffLen >= HTTP_RECV_BUFF_SIZE - 1024 ||
+ l_u32HTTPRecvBuffLen >= l_u32HTTPRecvTotalLen)
+ {
+ HTTPClient_Response(l_u32HTTPRespCode, (HIDO_UINT8 *)l_acHTTPRecvBuff, l_u32HTTPRecvBuffLen);
+ l_u32HTTPRecvTotalLen -= l_u32HTTPRecvBuffLen;
+ l_u32HTTPRecvBuffLen = 0;
+
+ // 鎵�鏈夋暟鎹帴鏀跺畬鎴�
+ if(l_u32HTTPRecvTotalLen == 0)
+ {
+ Socket_Close(l_i32HTTPClientSockID);
+ }
+ }
+ }
+ else
+ {
+ // 闈濭ET_FILE鏂规硶锛氱瓑寰呭畬鏁存帴鏀�
+ if (l_u32HTTPRecvBuffLen >= l_u32HTTPRecvTotalLen)
{
HTTPClient_Response(l_u32HTTPRespCode, l_pu8HTTPRespBody, l_u32HTTPContentLength);
+ Socket_Close(l_i32HTTPClientSockID);
}
- Socket_Close(l_i32HTTPClientSockID);
}
}
}
--
Gitblit v1.10.0