- 新しい順
- 投票が多い順
- コメントが多い順
For my problem, I found that partially received packet is treated as an error if the next loop didn't received any new packets.
I changed while( pMqttAgentContext->packetReceivedInLoop) to while( pMqttAgentContext->packetReceivedInLoop || operationStatus == MQTTNeedMoreBytes)
in core_mqtt_agent.c and that fixed my problem. https://github.com/FreeRTOS/coreMQTT-Agent/blob/main/source/core_mqtt_agent.c#L613
But this might not be a permanent solution since we are not supposed to wait forever if the status remains as MQTTNeedMoreBytes. Some sort of timeout would make this change more safe.
We can also consider adding a delay before the calling the MQTT_ProcessLoop() instead of calling immediately.
Sorry for not posting the solution sooner, it was just that OTA_MAX_BLOCK_BITMAP_SIZE
was overflowing, I increased it to 512U and the issue disappeared.
It is defined in components/esp-aws-iot/libraries/ota-for-aws-iot-embedded-sdk/ota-for-aws-iot-embedded-sdk/source/include/ota_private.h
on line#66
What version of coreMQTT / C-SDK / FreeRTOS are you using? How many messages per second are you transmitting?
@Greg_B I'm not sure how to determine that exactly, but, I am using the latest version of this repo https://github.com/espressif/esp-aws-iot with all the versions that it submodules. Does that provide you the information you need?
And I am just sending one large message of ~10k
@Greg_B is it possible this is a timeout condition?
Hit the same issue. Have you figured out why and have you found a solution to this?