MQTT QOS==1 handling in asset_tracker_v2

Hi,

I am baffled by the QOS handling (and/or not handling) in asset_tracker_v2, especially in view of the fact that there is a QOS library as part of the nrf repository. I have not found a complete and easy to follow discussion anywhere about the asset_tracker_v2 in this area. Let's consider data_module.c in v2.9.0. Around line 991 I see this code:

add_qos_message(msg->module.data.data.buffer.buf,
                msg->module.data.data.buffer.len,
                GENERIC,
                QOS_FLAG_RELIABILITY_ACK_DISABLED,
                true);

This is for the event DATA_EVT_DATA_SEND. Many of the other events have the qos flag set to QOS_FLAG_RELIABILITY_ACK_REQUIRED. I don't know why this one is different, and I don't know if the answer is simple or complex.

Note that I am using AWS and MQTT. I have verified that the code I have shown above translates into publishes to AWS with QOS set to 0.

If the qos flag setting in the add_qos_message above was controlled by a configuration option, then I would assume I should feel comfortable simply changing the option.

But it is not, so I would be making a code change. And you have a qos library that is very complicated, and I have no idea whether I can get what I need simply by changing the flag from ...DISABLED to ..._REQUIRED.

Please guide me to how I can take advantage of the sophisticated QOS library to do what I need. We send data usually once every 15 minutes, and our customers will be happiest if there are no lapses.

Thanks, and regards,

Burt Silverman

Related