@@ -366,14 +366,24 @@ bool Adafruit_MQTT::disconnect() {
366
366
}
367
367
368
368
bool Adafruit_MQTT::publish (const char *topic, const char *data, uint8_t qos) {
369
- return publish (topic, (uint8_t *)(data), strlen (data), qos);
369
+ return publish (topic, (uint8_t *)(data), strlen (data), false , qos);
370
370
}
371
371
372
372
bool Adafruit_MQTT::publish (const char *topic, uint8_t *data, uint16_t bLen,
373
373
uint8_t qos) {
374
+ return publish (topic, data, bLen, false , qos);
375
+ }
376
+
377
+ bool Adafruit_MQTT::publish (const char *topic, const char *data,
378
+ bool retain, uint8_t qos) {
379
+ return publish (topic, (uint8_t *)(data), strlen (data), retain, qos);
380
+ }
381
+
382
+ bool Adafruit_MQTT::publish (const char *topic, uint8_t *data, uint16_t bLen,
383
+ bool retain, uint8_t qos) {
374
384
// Construct and send publish packet.
375
- uint16_t len =
376
- publishPacket (buffer, topic, data, bLen, qos, ( uint16_t ) sizeof (buffer));
385
+ uint16_t len = publishPacket (buffer, topic, data, bLen, retain, qos, ( uint16_t ) sizeof (buffer));
386
+
377
387
if (!sendPacket (buffer, len))
378
388
return false ;
379
389
@@ -753,6 +763,12 @@ uint8_t Adafruit_MQTT::connectPacket(uint8_t *packet) {
753
763
uint16_t Adafruit_MQTT::publishPacket (uint8_t *packet, const char *topic,
754
764
uint8_t *data, uint16_t bLen, uint8_t qos,
755
765
uint16_t maxPacketLen) {
766
+ return publishPacket (packet, topic, data, bLen, false , qos, maxPacketLen);
767
+ }
768
+
769
+ uint16_t Adafruit_MQTT::publishPacket (uint8_t *packet, const char *topic,
770
+ uint8_t *data, uint16_t bLen, bool retain,
771
+ uint8_t qos, uint16_t maxPacketLen) {
756
772
uint8_t *p = packet;
757
773
uint16_t len = 0 ;
758
774
@@ -907,33 +923,54 @@ Adafruit_MQTT_Publish::Adafruit_MQTT_Publish(Adafruit_MQTT *mqttserver,
907
923
topic = feed;
908
924
qos = q;
909
925
}
926
+
910
927
bool Adafruit_MQTT_Publish::publish (int32_t i) {
928
+ return publish (i, false );
929
+ }
930
+
931
+ bool Adafruit_MQTT_Publish::publish (int32_t i, bool retain) {
911
932
char payload[12 ];
912
933
ltoa (i, payload, 10 );
913
- return mqtt->publish (topic, payload, qos);
934
+ return mqtt->publish (topic, payload, retain, qos);
914
935
}
915
936
916
937
bool Adafruit_MQTT_Publish::publish (uint32_t i) {
938
+ return publish (i, false );
939
+ }
940
+
941
+ bool Adafruit_MQTT_Publish::publish (uint32_t i, bool retain) {
917
942
char payload[11 ];
918
943
ultoa (i, payload, 10 );
919
- return mqtt->publish (topic, payload, qos);
944
+ return mqtt->publish (topic, payload, retain, qos);
920
945
}
921
946
922
947
bool Adafruit_MQTT_Publish::publish (double f, uint8_t precision) {
923
- char payload[41 ]; // Need to technically hold float max, 39 digits and minus
924
- // sign.
948
+ return publish (f, false , precision);
949
+ }
950
+
951
+ bool Adafruit_MQTT_Publish::publish (double f, bool retain, uint8_t precision) {
952
+ char payload[41 ]; // Need to technically hold float max, 39 digits and minus
953
+ // sign.
925
954
dtostrf (f, 0 , precision, payload);
926
- return mqtt->publish (topic, payload, qos);
955
+ return mqtt->publish (topic, payload, retain, qos);
927
956
}
928
957
929
958
bool Adafruit_MQTT_Publish::publish (const char *payload) {
930
- return mqtt->publish (topic, payload, qos);
959
+ return publish (payload, false );
960
+ }
961
+
962
+ bool Adafruit_MQTT_Publish::publish (const char *payload, bool retain) {
963
+ return mqtt->publish (topic, payload, retain, qos);
931
964
}
932
965
933
966
// publish buffer of arbitrary length
934
967
bool Adafruit_MQTT_Publish::publish (uint8_t *payload, uint16_t bLen) {
968
+ return publish (payload, bLen, false );
969
+ }
970
+
971
+ bool Adafruit_MQTT_Publish::publish (uint8_t *payload, uint16_t bLen, bool retain) {
935
972
936
- return mqtt->publish (topic, payload, bLen, qos);
973
+ return mqtt->publish (topic, payload, bLen, retain, qos);
937
974
}
938
975
939
976
// Adafruit_MQTT_Subscribe Definition //////////////////////////////////////////
0 commit comments