OTA prints prompt message when upgrade is not required

This commit is contained in:
wgzAIIT 2023-09-22 13:42:46 +08:00
parent aa3e6c9370
commit c2abf66f23
5 changed files with 35 additions and 28 deletions

View File

@ -29,7 +29,7 @@
#define REPLY_TIME_OUT 10
#ifdef TOOL_USING_OTA
#define ENTM_RECV_MAX (OTA_FRAME_SIZE + 512)
#define ENTM_RECV_MAX (OTA_FRAME_SIZE + 1024)
#else
#define ENTM_RECV_MAX 256
#endif

View File

@ -421,13 +421,13 @@ bool MQTT_SendHeart(void)
/*******************************************************************************
* : MQTT_DealPublishData
* : 0,topic信息
* : redata:,data_len:
* : data:,data_len:
* : +
*******************************************************************************/
uint16_t MQTT_DealPublishData(uint8_t *data, uint16_t data_len)
{
uint8_t i;
uint16_t cmdpos,cmdlen;
uint16_t startPos,payloadLen;
for(i = 1;i < 5;i++)
{
@ -436,16 +436,16 @@ uint16_t MQTT_DealPublishData(uint8_t *data, uint16_t data_len)
break;
}
//1代表固定报头占一个字节,i代表可变报头长度字段所占用字节数,2代表主题长度字段占2字节,cmdpos代表报文里主题名称起始位置
cmdpos = 1+i+2;
//1代表固定报头占一个字节,i代表可变报头长度字段所占用字节数,2代表主题长度字段占2字节,startPos代表报文里主题名称起始位置
startPos = 1+i+2;
//data_len减去1+i+2就是报文中主题部分+实际负载的长度
cmdlen = data_len-(1+i+2);
payloadLen = data_len-(1+i+2);
if(data_len <= CMD_SIZE)
{
memset(Platform_mqtt.cmdbuff, 0, CMD_SIZE);
memcpy(Platform_mqtt.cmdbuff, &data[cmdpos], cmdlen);
memcpy(Platform_mqtt.cmdbuff, &data[startPos], payloadLen);
}
return cmdlen;
return payloadLen;
}

View File

@ -28,8 +28,8 @@
#define KEEPALIVE_TIME 300 //保活时间(单位s),300s
#define HEART_TIME 200000 //空闲时发送心跳包的时间间隔(单位ms),200s
#define PACK_SIZE 512 //存放报文数据缓冲区大小
#define MQTT_FRAME_SIZE 3072 //保存推送的PUBLISH报文中的数据负载大小,最大3k
#define CMD_SIZE (MQTT_FRAME_SIZE + 512) //保存推送的PUBLISH报文中的数据缓冲区大小
#define MQTT_FRAME_SIZE 2048 //保存推送的PUBLISH报文中的数据负载大小,最大2k
#define CMD_SIZE (MQTT_FRAME_SIZE + 1024) //保存推送的PUBLISH报文中的数据缓冲区大小
#define CLIENTID_SIZE 64 //存放客户端ID的缓冲区大小
#define USERNAME_SIZE 64 //存放用户名的缓冲区大小
#define PASSWARD_SIZE 64 //存放密码的缓冲区大小

View File

@ -67,9 +67,9 @@ menu "OTA function"
config OTA_FRAME_SIZE
int "OTA receive data frame size."
default 3072 if OTA_BY_PLATFORM
default 2048 if OTA_BY_PLATFORM
default 1024 if OTA_BY_TCPSERVER
default 256 if MCUBOOT_BOOTLOADER
default 0 if MCUBOOT_BOOTLOADER
endif
endmenu

View File

@ -401,6 +401,13 @@ static bool UpdateNewApplication(void)
}
else
{
// 如果OTA升级状态为准备状态但APP分区与download分区版本相同,不需要进行升级,重置status,打印提示信息
if((ota_info.status == OTA_STATUS_READY) && (ota_info.os.crc32 == ota_info.down.crc32))
{
ota_info.status == OTA_STATUS_IDLE;
UpdateOTAFlag(&ota_info);
mcuboot.print_string("\r\n------The app partition is the same as the download partition, no need to upgrade!------\r\n");
}
return false;
}
finish:
@ -801,7 +808,7 @@ SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC)|SHE
#else
#error "The value of FRAME_LEN should not be greater than MQTT_FRAME_SIZE!!"
#endif
static uint8_t MqttRxbuf[FRAME_LEN + 512];
static uint8_t MqttRxbuf[FRAME_LEN + 1024];
static uint8_t FrameBuf[FRAME_LEN];
static OTA_TCB platform_ota;
@ -828,12 +835,12 @@ static void PropertyVersion(void)
}
/*-------------------------------------------------*/
/*函数名OTA下载数据 */
/*参 数size:本次下载量 */
/*参 数offset:本次下载偏移量 */
/*返回值:无 */
/*-------------------------------------------------*/
/*******************************************************************************
* : OTA_Download
* : OTA下载数据
* : size:,offset:
* :
*******************************************************************************/
static void OTA_Download(int size, int offset)
{
uint8_t tempdatabuff[128];
@ -860,7 +867,7 @@ static void mqttCloudInteraction(void* parameter)
uint32_t flashdestination = DOWN_FLAH_ADDRESS;
uint8_t topicdatabuff[2][32];
char *ptr1, *ptr2;
uint16_t cmdlen;
uint16_t payloadLen;
mcuboot.flash_init();
memset(&ota_info, 0, sizeof(ota_info_t));
@ -916,7 +923,7 @@ reconnect:
else if(MqttRxbuf[0] == 0x30)
{
freecnt = 0;
cmdlen = MQTT_DealPublishData(MqttRxbuf, datalen);
payloadLen = MQTT_DealPublishData(MqttRxbuf, datalen);
// 1.获取新版本固件大小及版本信息
ptr1 = strstr((char *)Platform_mqtt.cmdbuff,topicdatabuff[0]);
@ -1021,7 +1028,7 @@ reconnect:
KPrintf("------Start download joson file !------\r\n");
memset(jsonfilename,0,sizeof(jsonfilename));
memset(FrameBuf,0,sizeof(FrameBuf));
memcpy(FrameBuf, &Platform_mqtt.cmdbuff[strlen(jsontopicdatabuff)],cmdlen-strlen(jsontopicdatabuff));
memcpy(FrameBuf, &Platform_mqtt.cmdbuff[strlen(jsontopicdatabuff)],payloadLen-strlen(jsontopicdatabuff));
cJSON *json_obj = cJSON_Parse(FrameBuf);
char* product_name = cJSON_GetObjectItem(json_obj, "productName")->valuestring;
@ -1113,12 +1120,12 @@ static void PropertyVersion(void)
}
/*-------------------------------------------------*/
/*函数名OTA下载数据 */
/*参 数size:本次下载量 */
/*参 数offset:本次下载偏移量 */
/*返回值:无 */
/*-------------------------------------------------*/
/*******************************************************************************
* : OTA_Download
* : OTA下载数据
* : size:,offset:
* :
*******************************************************************************/
static void OTA_Download(int size, int offset)
{
uint8_t topicdatabuff[64];