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.
https://www.st.com/en/embedded-software/x-cube-azrtos-h7.html
Other
149 stars 56 forks source link

MQTT_KEEP_ALIVE_TIMER define value too big #18

Open nicokorn opened 2 years ago

nicokorn commented 2 years ago

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. https://github.com/STMicroelectronics/x-cube-azrtos-h7/blob/a455a40ad5213625b66810295789cb268cbc50a3/Projects/STM32H735G-DK/Applications/NetXDuo/Nx_MQTT_Client/NetXDuo/App/app_netxduo.h#L62

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.

ALABSTM commented 2 years ago

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,