1、Optimize mqtt transfer speed 3k/s

2、add json file to sd card by mqtt
This commit is contained in:
wgzAIIT
2023-09-19 16:07:24 +08:00
parent 60a7835ef8
commit 9fd61d3d2a
8 changed files with 104 additions and 36 deletions

View File

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

View File

@@ -41,6 +41,13 @@ menu "lib using MQTT"
string "xiuos platform server port."
default "1883"
endmenu
menuconfig USING_DOWNLOAD_JSON
bool "Enable support download json file function"
default n
select BSP_USING_SDIO
select MOUNT_SDCARD_FS
select LIB_USING_CJSON
endif
if ALIBABA_PLATFORM

View File

@@ -422,9 +422,9 @@ bool MQTT_SendHeart(void)
* 函 数 名: MQTT_DealPublishData
* 功能描述: 处理服务器发来的等级0的推送数据,附带topic信息
* 形 参: redata:接收的数据,data_len:要处理的数据长度
* 返 回 值:
* 返 回 值: 报文中主题部分+实际负载的长度
*******************************************************************************/
void MQTT_DealPublishData(uint8_t *data, uint16_t data_len)
uint16_t MQTT_DealPublishData(uint8_t *data, uint16_t data_len)
{
uint8_t i;
uint16_t cmdpos,cmdlen;
@@ -438,7 +438,7 @@ void MQTT_DealPublishData(uint8_t *data, uint16_t data_len)
//1代表固定报头占一个字节,i代表可变报头长度字段所占用字节数,2代表主题长度字段占2字节,cmdpos代表报文里主题名称起始位置
cmdpos = 1+i+2;
//data_len减去1+i+2就是报文中有效载荷的长度
//data_len减去1+i+2就是报文中主题部分+实际负载的长度
cmdlen = data_len-(1+i+2);
if(data_len <= CMD_SIZE)
@@ -446,4 +446,6 @@ void MQTT_DealPublishData(uint8_t *data, uint16_t data_len)
memset(Platform_mqtt.cmdbuff, 0, CMD_SIZE);
memcpy(Platform_mqtt.cmdbuff, &data[cmdpos], cmdlen);
}
return cmdlen;
}

View File

@@ -25,13 +25,14 @@
#include <stdint.h>
#include <stdbool.h>
#define KEEPALIVE_TIME 300 //保活时间(单位s),300s
#define HEART_TIME 200000 //空闲时发送心跳包的时间间隔(单位ms),200s
#define PACK_SIZE 512 //存放报文数据缓冲区大小
#define CMD_SIZE 3072 //保存推送的PUBLISH报文中的数据缓冲区大小
#define CLIENTID_SIZE 64 //存放客户端ID的缓冲区大小
#define USERNAME_SIZE 64 //存放用户名的缓冲区大小
#define PASSWARD_SIZE 64 //存放密码的缓冲区大小
#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 CLIENTID_SIZE 64 //存放客户端ID的缓冲区大小
#define USERNAME_SIZE 64 //存放用户名的缓冲区大小
#define PASSWARD_SIZE 64 //存放密码的缓冲区大小
typedef struct{
uint8_t ClientID[CLIENTID_SIZE]; //存放客户端ID的缓冲区
@@ -58,5 +59,5 @@ bool MQTT_UnSubscribeTopic(uint8_t *topic_name);
void MQTT_PublishDataQs0(uint8_t *topic_name,uint8_t *data, uint16_t data_len);
void MQTT_PublishDataQs1(uint8_t *topic_name,uint8_t *data, uint16_t data_len);
bool MQTT_SendHeart(void);
void MQTT_DealPublishData(uint8_t *data, uint16_t data_len);
uint16_t MQTT_DealPublishData(uint8_t *data, uint16_t data_len);
#endif