diff --git a/Adafruit_MQTT.cpp b/Adafruit_MQTT.cpp index 9c8113f..ef99b9a 100644 --- a/Adafruit_MQTT.cpp +++ b/Adafruit_MQTT.cpp @@ -480,7 +480,7 @@ void Adafruit_MQTT::processPackets(int16_t timeout) { else if (sub->callback_io != NULL) { // huh lets do the callback in io mode //serial.print("*** calling io instance callback with : "); serial.println(data); - sub->*callback_io((char *)sub->lastread, sub->datalen); + ((sub->io_feed)->*(sub->callback_io))((char *)sub->lastread, sub->datalen); } } @@ -867,6 +867,7 @@ Adafruit_MQTT_Subscribe::Adafruit_MQTT_Subscribe(Adafruit_MQTT *mqttserver, callback_buffer = 0; callback_double = 0; callback_io = 0; + io_feed = 0; } Adafruit_MQTT_Subscribe::Adafruit_MQTT_Subscribe(Adafruit_MQTT *mqttserver, @@ -878,6 +879,7 @@ Adafruit_MQTT_Subscribe::Adafruit_MQTT_Subscribe(Adafruit_MQTT *mqttserver, callback_uint32t = 0; callback_buffer = 0; callback_io = 0; + io_feed = 0; } void Adafruit_MQTT_Subscribe::setCallback(SubscribeCallbackUInt32Type cb) { @@ -892,8 +894,9 @@ void Adafruit_MQTT_Subscribe::setCallback(SubscribeCallbackBufferType cb) { callback_buffer = cb; } -void Adafruit_MQTT_Subscribe::setCallback(SubscribeCallbackIOType cb) { +void Adafruit_MQTT_Subscribe::setCallback(AdafruitIO_Feed *f, SubscribeCallbackIOType cb) { callback_io = cb; + io_feed = f; } void Adafruit_MQTT_Subscribe::removeCallback(void) { @@ -901,4 +904,5 @@ void Adafruit_MQTT_Subscribe::removeCallback(void) { callback_buffer = 0; callback_double = 0; callback_io = 0; + io_feed = 0; } diff --git a/Adafruit_MQTT.h b/Adafruit_MQTT.h index 169613b..9ede49c 100644 --- a/Adafruit_MQTT.h +++ b/Adafruit_MQTT.h @@ -288,7 +288,7 @@ class Adafruit_MQTT_Subscribe { void setCallback(SubscribeCallbackUInt32Type callb); void setCallback(SubscribeCallbackDoubleType callb); void setCallback(SubscribeCallbackBufferType callb); - void setCallback(SubscribeCallbackIOType callb); + void setCallback(AdafruitIO_Feed *io, SubscribeCallbackIOType callb); void removeCallback(void); const char *topic; @@ -304,6 +304,8 @@ class Adafruit_MQTT_Subscribe { SubscribeCallbackBufferType callback_buffer; SubscribeCallbackIOType callback_io; + AdafruitIO_Feed *io_feed; + private: Adafruit_MQTT *mqtt; };