@@ -69,8 +69,8 @@ ArduinoIoTCloudTCP::ArduinoIoTCloudTCP()
69
69
, _last_device_subscribe_cnt{0 }
70
70
, _last_sync_request_tick{0 }
71
71
, _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 }
74
74
, _mqtt_data_buf{0 }
75
75
, _mqtt_data_len{0 }
76
76
, _mqtt_data_request_retransmit{false }
@@ -413,7 +413,6 @@ ArduinoIoTCloudTCP::State ArduinoIoTCloudTCP::handle_SubscribeDeviceTopic()
413
413
if (_last_device_subscribe_cnt > AIOT_CONFIG_LASTVALUES_SYNC_MAX_RETRY_CNT)
414
414
{
415
415
_last_device_subscribe_cnt = 0 ;
416
- _next_device_subscribe_attempt_tick = 0 ;
417
416
return State::Disconnect;
418
417
}
419
418
@@ -469,24 +468,18 @@ ArduinoIoTCloudTCP::State ArduinoIoTCloudTCP::handle_SubscribeThingTopics()
469
468
return State::Disconnect;
470
469
}
471
470
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))
478
473
return State::SubscribeThingTopics;
479
- }
480
474
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)
482
476
{
483
- _last_subscribe_request_cnt = 0 ;
484
- _last_subscribe_request_tick = 0 ;
477
+ _last_thing_subscribe_attempt_cnt = 0 ;
485
478
return State::Disconnect;
486
479
}
487
480
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 ++;
490
483
491
484
if (!_mqttClient.subscribe (_dataTopicIn))
492
485
{
@@ -506,7 +499,6 @@ ArduinoIoTCloudTCP::State ArduinoIoTCloudTCP::handle_SubscribeThingTopics()
506
499
DEBUG_INFO (" Thing ID: %s" , getThingId ().c_str ());
507
500
execCloudEventCallback (ArduinoIoTCloudEvent::CONNECT);
508
501
509
- /* Add retry wait time otherwise we are trying to reconnect every 250 ms...*/
510
502
return State::RequestLastValues;
511
503
}
512
504
0 commit comments