From 34c28094f17323f8d2736684ae683bffc4049a99 Mon Sep 17 00:00:00 2001 From: brentru Date: Thu, 31 Aug 2023 13:25:58 -0400 Subject: [PATCH] fix i2c decode issue --- Adafruit_MQTT.cpp | 7 +++++-- Adafruit_MQTT.h | 6 ++++++ library.properties | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Adafruit_MQTT.cpp b/Adafruit_MQTT.cpp index 0545a56..f89efd6 100644 --- a/Adafruit_MQTT.cpp +++ b/Adafruit_MQTT.cpp @@ -563,9 +563,12 @@ Adafruit_MQTT_Subscribe *Adafruit_MQTT::handleSubscriptionPacket(uint16_t len) { } // Parse out length of packet. - uint16_t const topicoffset = packetAdditionalLen(len); + // NOTE: This includes data in the variable header and the payload. + uint16_t remainingLen = len - 4; // subtract the 4 header bytes + uint16_t const topicoffset = packetAdditionalLen(remainingLen); uint16_t const topicstart = topicoffset + 4; - topiclen = buffer[3 + topicoffset]; + + topiclen = int((buffer[2 + topicoffset]) << 8 | buffer[3 + topicoffset]); DEBUG_PRINT(F("Looking for subscription len ")); DEBUG_PRINTLN(topiclen); diff --git a/Adafruit_MQTT.h b/Adafruit_MQTT.h index 01b373b..71cfdd0 100644 --- a/Adafruit_MQTT.h +++ b/Adafruit_MQTT.h @@ -107,7 +107,13 @@ // Largest full packet we're able to send. // Need to be able to store at least ~90 chars for a connect packet with full // 23 char client ID. +// Future TODO: This should be replaced by the ability to +#if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32) || \ + defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_ARCH_SAMD) +#define MAXBUFFERSIZE (512) +#else #define MAXBUFFERSIZE (150) +#endif #define MQTT_CONN_USERNAMEFLAG 0x80 #define MQTT_CONN_PASSWORDFLAG 0x40 diff --git a/library.properties b/library.properties index 24f4817..60f6d1f 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=Adafruit MQTT Library -version=2.5.7 +version=2.5.8 author=Adafruit maintainer=Adafruit sentence=MQTT library that supports the FONA, ESP8266, ESP32, Yun, and generic Arduino Client hardware.