Skip to content

Commit de23378

Browse files
committed
Unify naming and logic of thing susbscribe retry
1 parent 10e568a commit de23378

File tree

2 files changed

+10
-18
lines changed

2 files changed

+10
-18
lines changed

src/ArduinoIoTCloudTCP.cpp

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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

src/ArduinoIoTCloudTCP.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,8 @@ class ArduinoIoTCloudTCP: public ArduinoIoTCloudClass
134134
unsigned int _last_device_subscribe_cnt;
135135
unsigned long _last_sync_request_tick;
136136
unsigned int _last_sync_request_cnt;
137-
unsigned long _last_subscribe_request_tick;
138-
unsigned int _last_subscribe_request_cnt;
137+
unsigned long _next_thing_subscribe_attempt_tick;
138+
unsigned int _last_thing_subscribe_attempt_cnt;
139139
String _brokerAddress;
140140
uint16_t _brokerPort;
141141
uint8_t _mqtt_data_buf[MQTT_TRANSMIT_BUFFER_SIZE];

0 commit comments

Comments
 (0)