@@ -132,6 +132,8 @@ Adafruit_MQTT::Adafruit_MQTT(const char *server, uint16_t port, const char *cid,
132
132
will_qos = 0 ;
133
133
will_retain = 0 ;
134
134
135
+ keepAliveInterval = MQTT_CONN_KEEPALIVE;
136
+
135
137
packet_id_counter = 0 ;
136
138
}
137
139
@@ -153,6 +155,8 @@ Adafruit_MQTT::Adafruit_MQTT(const char *server, uint16_t port,
153
155
will_qos = 0 ;
154
156
will_retain = 0 ;
155
157
158
+ keepAliveInterval = MQTT_CONN_KEEPALIVE;
159
+
156
160
packet_id_counter = 0 ;
157
161
}
158
162
@@ -384,6 +388,25 @@ bool Adafruit_MQTT::will(const char *topic, const char *payload, uint8_t qos,
384
388
return true ;
385
389
}
386
390
391
+ /* **************************************************************************/
392
+ /* !
393
+ @brief Sets the connect packet's KeepAlive Interval, in seconds. This
394
+ function MUST be called prior to connect().
395
+ @param keepAlive
396
+ Maximum amount of time without communication between the
397
+ client and the MQTT broker, in seconds.
398
+ @returns True if called prior to connect(), False otherwise.
399
+ */
400
+ /* **************************************************************************/
401
+ bool Adafruit_MQTT::setKeepAliveInterval (uint16_t keepAlive) {
402
+ if (connected ()) {
403
+ DEBUG_PRINT (F (" keepAlive defined after connection established." ));
404
+ return false ;
405
+ }
406
+ keepAliveInterval = keepAlive;
407
+ return true ;
408
+ }
409
+
387
410
bool Adafruit_MQTT::subscribe (Adafruit_MQTT_Subscribe *sub) {
388
411
uint8_t i;
389
412
// see if we are already subscribed
@@ -649,9 +672,9 @@ uint8_t Adafruit_MQTT::connectPacket(uint8_t *packet) {
649
672
p[0 ] |= MQTT_CONN_PASSWORDFLAG;
650
673
p++;
651
674
652
- p[0 ] = MQTT_CONN_KEEPALIVE >> 8 ;
675
+ p[0 ] = keepAliveInterval >> 8 ;
653
676
p++;
654
- p[0 ] = MQTT_CONN_KEEPALIVE & 0xFF ;
677
+ p[0 ] = keepAliveInterval & 0xFF ;
655
678
p++;
656
679
657
680
if (MQTT_PROTOCOL_LEVEL == 3 ) {
0 commit comments