@@ -69,8 +69,8 @@ ArduinoIoTCloudTCP::ArduinoIoTCloudTCP()
6969, _last_device_subscribe_cnt{0 }
7070, _last_sync_request_tick{0 }
7171, _last_sync_request_cnt{0 }
72- , _last_subscribe_request_tick {0 }
73- , _last_subscribe_request_cnt {0 }
72+ , _next_thing_subscribe_attempt_tick {0 }
73+ , _last_thing_subscribe_attempt_cnt {0 }
7474, _mqtt_data_buf{0 }
7575, _mqtt_data_len{0 }
7676, _mqtt_data_request_retransmit{false }
@@ -413,7 +413,6 @@ ArduinoIoTCloudTCP::State ArduinoIoTCloudTCP::handle_SubscribeDeviceTopic()
413413 if (_last_device_subscribe_cnt > AIOT_CONFIG_LASTVALUES_SYNC_MAX_RETRY_CNT)
414414 {
415415 _last_device_subscribe_cnt = 0 ;
416- _next_device_subscribe_attempt_tick = 0 ;
417416 return State::Disconnect;
418417 }
419418
@@ -469,24 +468,18 @@ ArduinoIoTCloudTCP::State ArduinoIoTCloudTCP::handle_SubscribeThingTopics()
469468 return State::Disconnect;
470469 }
471470
472- unsigned long const now = millis ();
473- bool const is_subscribe_retry_delay_expired = (now - _last_subscribe_request_tick) > AIOT_CONFIG_THING_TOPICS_SUBSCRIBE_RETRY_DELAY_ms;
474- bool const is_first_subscribe_request = (_last_subscribe_request_cnt == 0 );
475-
476- if (!is_first_subscribe_request && !is_subscribe_retry_delay_expired)
477- {
471+ bool const is_retry_attempt = (_last_thing_subscribe_attempt_cnt > 0 );
472+ if (is_retry_attempt && (millis () < _next_thing_subscribe_attempt_tick))
478473 return State::SubscribeThingTopics;
479- }
480474
481- if (_last_subscribe_request_cnt > AIOT_CONFIG_THING_TOPICS_SUBSCRIBE_MAX_RETRY_CNT)
475+ if (_last_thing_subscribe_attempt_cnt > AIOT_CONFIG_THING_TOPICS_SUBSCRIBE_MAX_RETRY_CNT)
482476 {
483- _last_subscribe_request_cnt = 0 ;
484- _last_subscribe_request_tick = 0 ;
477+ _last_thing_subscribe_attempt_cnt = 0 ;
485478 return State::Disconnect;
486479 }
487480
488- _last_subscribe_request_tick = now ;
489- _last_subscribe_request_cnt ++;
481+ _next_thing_subscribe_attempt_tick = millis () + AIOT_CONFIG_THING_TOPICS_SUBSCRIBE_RETRY_DELAY_ms ;
482+ _last_thing_subscribe_attempt_cnt ++;
490483
491484 if (!_mqttClient.subscribe (_dataTopicIn))
492485 {
@@ -506,7 +499,6 @@ ArduinoIoTCloudTCP::State ArduinoIoTCloudTCP::handle_SubscribeThingTopics()
506499 DEBUG_INFO (" Thing ID: %s" , getThingId ().c_str ());
507500 execCloudEventCallback (ArduinoIoTCloudEvent::CONNECT);
508501
509- /* Add retry wait time otherwise we are trying to reconnect every 250 ms...*/
510502 return State::RequestLastValues;
511503}
512504
0 commit comments