1.在ESP8266_RTOS_SDK\components\aws_iot\aws-iot-device-sdk-embedded-C\include\aws_iot_shadow_interface.h中添加如下代码:
typedef struct {
ShadowConnectParameters_t scp;
unsigned int magic;
unsigned short topicLen;
unsigned short msgLen;
char topic[64];
char msg[64];
} HLE_ShadowConnectParameters_t;
#define HLE_LAST_WILL_MSG "{\"state\":{\"reported\":{\"firmwave\":{\"connected\":\"false\",\"socket\":\"null\",\"usb\":\"null\"}}}}"
2.在ESP8266_RTOS_SDK\components\aws_iot\aws-iot-device-sdk-embedded-C\src\aws_iot_shadow.c中添加如下代码:
修改 函数 aws_iot_shadow_connect:
#if 0 //HLE modify
ConnectParams.isWillMsgPresent = false;
#else
typedef struct {
unsigned int magic;
unsigned short topicLen;
unsigned short msgLen;
char topic[64];
char msg[64];
} HLE_LASTWILL_PARA;
HLE_LASTWILL_PARA* hlp = (HLE_LASTWILL_PARA*)((void*)pParams+sizeof(ShadowConnectParameters_t));
if(hlp->magic == 0x19750521)
{
ConnectParams.isWillMsgPresent = true;
ConnectParams.will = iotMqttWillOptionsDefault;
ConnectParams.will.pTopicName = hlp->topic;
ConnectParams.will.topicNameLen = hlp->topicLen;
ConnectParams.will.pMessage = hlp->msg;
ConnectParams.will.msgLen = hlp->msgLen;
ConnectParams.keepAliveIntervalInSec = 10;//30;
}
else
{
ConnectParams.isWillMsgPresent = false;
}
#endif