forked from xuos/xiuos
1、Optimize mqtt transfer speed 3k/s
2、add json file to sd card by mqtt
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user