STMicroelectronics / x-cube-azrtos-h7

X-CUBE-AZRTOS-H7 (Azure RTOS Software Expansion for STM32Cube) provides a full integration of Microsoft Azure RTOS in the STM32Cube environment for the STM32H7 series of microcontrollers.

Home Page:https://www.st.com/en/embedded-software/x-cube-azrtos-h7.html

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MQTT_KEEP_ALIVE_TIMER define value too big

nicokorn opened this issue · comments

The project in which the issue applies to:
https://github.com/STMicroelectronics/x-cube-azrtos-h7/tree/main/Projects/STM32H735G-DK/Applications/NetXDuo/Nx_MQTT_Client

Issue 1:
Last will message does not get triggered with the MQTT Client Project altough I added the last will registering function before connecting to the broker.

Issue 2:
After a certain time subscribed topics are having a delay of about 8 seconds after I published something somwhere else.

Solution to both issues:
According the Microsoft NetxDuo documentation the keepalive argument for the nxd_mqtt_client_connect function must be in seconds.
https://docs.microsoft.com/en-us/azure/rtos/netx-duo/netx-duo-mqtt/chapter3#nxd_mqtt_client_connect

But in the application example the keep alive define is most probably in ticks. Assuming that 1 tick is 10 ms, the 30000 resulting in 300000 ms which are 300 secconds thus 5 minutes.

#define MQTT_KEEP_ALIVE_TIMER 30000 /* Define the MQTT keep alive timer for 5 minutes */

I changed the define value to 60 and the last will message gets triggered after 60 seconds and such 8 seconds delay on subscribed topics didn't happen again.

Hi @nicokorn,

Thank you for this clear and concise report and the fix proposal. I will let our development teams know about it. We will try to get back to you as soon as possible.

With regards,