From 22b77ecb68c4897c7044c33032a79b3666d2b7ea Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Thu, 2 Jul 2015 18:07:33 +0200 Subject: [PATCH] Add Adafruit_MQTT_Subscribe::datalen This stores the number of valid bytes in lastread. Having access to this information allows transmitting binary data as well, containing embedded nul bytes. --- Adafruit_MQTT.cpp | 1 + Adafruit_MQTT.h | 3 +++ 2 files changed, 4 insertions(+) diff --git a/Adafruit_MQTT.cpp b/Adafruit_MQTT.cpp index 87fea10..443fc69 100644 --- a/Adafruit_MQTT.cpp +++ b/Adafruit_MQTT.cpp @@ -234,6 +234,7 @@ Adafruit_MQTT_Subscribe *Adafruit_MQTT::readSubscription(int16_t timeout) { } // extract out just the data, into the subscription object itself memcpy(subscriptions[i]->lastread, buffer+4+topiclen, datalen); + subscriptions[i]->datalen = datalen; DEBUG_PRINT(F("Data len: ")); DEBUG_PRINTLN(datalen); DEBUG_PRINT(F("Data: ")); DEBUG_PRINTLN((char *)subscriptions[i]->lastread); diff --git a/Adafruit_MQTT.h b/Adafruit_MQTT.h index 82e5bc1..0fe5ed4 100644 --- a/Adafruit_MQTT.h +++ b/Adafruit_MQTT.h @@ -203,6 +203,9 @@ class Adafruit_MQTT_Subscribe { uint8_t qos; uint8_t lastread[SUBSCRIPTIONDATALEN]; + // Number valid bytes in lastread. Limited to SUBSCRIPTIONDATALEN-1 to + // ensure nul terminating lastread. + uint8_t datalen; private: Adafruit_MQTT *mqtt; };