From 44ad2dd320c1cc1bb76c31ebb6eddff21b611055 Mon Sep 17 00:00:00 2001 From: technyon Date: Mon, 27 Mar 2023 17:48:22 +0200 Subject: [PATCH] update espMqttClient --- lib/espMqttClient/library.json | 2 +- lib/espMqttClient/library.properties | 2 +- lib/espMqttClient/src/MqttClient.cpp | 14 ++++++++++---- lib/espMqttClient/src/MqttClient.h | 2 -- lib/espMqttClient/src/Outbox.h | 1 + lib/espMqttClient/src/Transport/ClientAsync.cpp | 4 ---- lib/espMqttClient/src/Transport/ClientAsync.h | 1 - lib/espMqttClient/src/Transport/ClientPosix.cpp | 6 ------ lib/espMqttClient/src/Transport/ClientPosix.h | 1 - .../src/Transport/ClientSecureSync.cpp | 4 ---- lib/espMqttClient/src/Transport/ClientSecureSync.h | 1 - lib/espMqttClient/src/Transport/ClientSync.cpp | 4 ---- lib/espMqttClient/src/Transport/ClientSync.h | 1 - lib/espMqttClient/src/Transport/Transport.h | 1 - networkDevices/ClientSyncW5500.cpp | 4 ---- networkDevices/ClientSyncW5500.h | 1 - 16 files changed, 13 insertions(+), 36 deletions(-) diff --git a/lib/espMqttClient/library.json b/lib/espMqttClient/library.json index 46f28f0..b883dda 100644 --- a/lib/espMqttClient/library.json +++ b/lib/espMqttClient/library.json @@ -14,7 +14,7 @@ "type": "git", "url": "https://github.com/bertmelis/espMqttClient.git" }, - "version": "1.4.1", + "version": "1.4.2", "frameworks": "arduino", "platforms": ["espressif8266", "espressif32"], "headers": ["espMqttClient.h", "espMqttClientAsync.h"], diff --git a/lib/espMqttClient/library.properties b/lib/espMqttClient/library.properties index b0b78fd..f80a2eb 100644 --- a/lib/espMqttClient/library.properties +++ b/lib/espMqttClient/library.properties @@ -1,5 +1,5 @@ name=espMqttClient -version=1.4.1 +version=1.4.2 author=Bert Melis maintainer=Bert Melis sentence=an MQTT client for the Arduino framework for ESP8266 / ESP32 diff --git a/lib/espMqttClient/src/MqttClient.cpp b/lib/espMqttClient/src/MqttClient.cpp index 9962538..bae592e 100644 --- a/lib/espMqttClient/src/MqttClient.cpp +++ b/lib/espMqttClient/src/MqttClient.cpp @@ -222,9 +222,14 @@ void MqttClient::loop() { break; case State::connectingMqtt: #if EMC_WAIT_FOR_CONNACK - _sendPacket(); - _checkIncoming(); - _checkPing(); + if (_transport->connected()) { + _sendPacket(); + _checkIncoming(); + _checkPing(); + } else { + _state = State::disconnectingTcp1; + _disconnectReason = DisconnectReason::TCP_DISCONNECTED; + } break; #else // receipt of CONNACK packet will set state to CONNECTED @@ -266,10 +271,11 @@ void MqttClient::loop() { case State::disconnectingTcp1: _transport->stop(); _state = State::disconnectingTcp2; - break; + break; // keep break to accomodate async clients case State::disconnectingTcp2: if (_transport->disconnected()) { _clearQueue(0); + _bytesSent = 0; _state = State::disconnected; if (_onDisconnectCallback) _onDisconnectCallback(_disconnectReason); } diff --git a/lib/espMqttClient/src/MqttClient.h b/lib/espMqttClient/src/MqttClient.h index 1502fd9..8d89aba 100644 --- a/lib/espMqttClient/src/MqttClient.h +++ b/lib/espMqttClient/src/MqttClient.h @@ -149,7 +149,6 @@ class MqttClient { espMqttClientTypes::Error error(espMqttClientTypes::Error::SUCCESS); espMqttClientInternals::Outbox::Iterator it = _outbox.emplace(0, error, std::forward(args) ...); if (it && error == espMqttClientTypes::Error::SUCCESS) return true; - _outbox.remove(it); return false; } @@ -158,7 +157,6 @@ class MqttClient { espMqttClientTypes::Error error(espMqttClientTypes::Error::SUCCESS); espMqttClientInternals::Outbox::Iterator it = _outbox.emplaceFront(0, error, std::forward(args) ...); if (it && error == espMqttClientTypes::Error::SUCCESS) return true; - _outbox.remove(it); return false; } diff --git a/lib/espMqttClient/src/Outbox.h b/lib/espMqttClient/src/Outbox.h index 7f0d543..b123b38 100644 --- a/lib/espMqttClient/src/Outbox.h +++ b/lib/espMqttClient/src/Outbox.h @@ -121,6 +121,7 @@ class Outbox { // remove node at iterator, iterator points to next void remove(Iterator& it) { // NOLINT(runtime/references) + if (!it) return; Node* node = it._node; Node* prev = it._prev; ++it; diff --git a/lib/espMqttClient/src/Transport/ClientAsync.cpp b/lib/espMqttClient/src/Transport/ClientAsync.cpp index 35e2276..4f8d69e 100644 --- a/lib/espMqttClient/src/Transport/ClientAsync.cpp +++ b/lib/espMqttClient/src/Transport/ClientAsync.cpp @@ -31,10 +31,6 @@ size_t ClientAsync::write(const uint8_t* buf, size_t size) { return client.write(reinterpret_cast(buf), size); } -int ClientAsync::available() { - return static_cast(availableData); // availableData will never be large enough to cause an overflow -} - int ClientAsync::read(uint8_t* buf, size_t size) { size_t willRead = std::min(size, availableData); memcpy(buf, bufData, std::min(size, availableData)); diff --git a/lib/espMqttClient/src/Transport/ClientAsync.h b/lib/espMqttClient/src/Transport/ClientAsync.h index 1d24c32..c3ddd03 100644 --- a/lib/espMqttClient/src/Transport/ClientAsync.h +++ b/lib/espMqttClient/src/Transport/ClientAsync.h @@ -29,7 +29,6 @@ class ClientAsync : public Transport { bool connect(IPAddress ip, uint16_t port) override; bool connect(const char* host, uint16_t port) override; size_t write(const uint8_t* buf, size_t size) override; - int available() override; int read(uint8_t* buf, size_t size) override; void stop() override; bool connected() override; diff --git a/lib/espMqttClient/src/Transport/ClientPosix.cpp b/lib/espMqttClient/src/Transport/ClientPosix.cpp index 511eb9a..83b555d 100644 --- a/lib/espMqttClient/src/Transport/ClientPosix.cpp +++ b/lib/espMqttClient/src/Transport/ClientPosix.cpp @@ -62,12 +62,6 @@ size_t ClientPosix::write(const uint8_t* buf, size_t size) { return ::send(_sockfd, buf, size, 0); } -int ClientPosix::available() { - uint8_t buf[EMC_POSIX_PEEK_SIZE]; - int ret = ::recv(_sockfd, &buf, EMC_POSIX_PEEK_SIZE, MSG_DONTWAIT|MSG_PEEK); - return ret; -} - int ClientPosix::read(uint8_t* buf, size_t size) { int ret = ::recv(_sockfd, buf, size, MSG_DONTWAIT); /* diff --git a/lib/espMqttClient/src/Transport/ClientPosix.h b/lib/espMqttClient/src/Transport/ClientPosix.h index 616940b..a2f9c9f 100644 --- a/lib/espMqttClient/src/Transport/ClientPosix.h +++ b/lib/espMqttClient/src/Transport/ClientPosix.h @@ -36,7 +36,6 @@ class ClientPosix : public Transport { bool connect(IPAddress ip, uint16_t port) override; bool connect(const char* host, uint16_t port) override; size_t write(const uint8_t* buf, size_t size) override; - int available() override; int read(uint8_t* buf, size_t size) override; void stop() override; bool connected() override; diff --git a/lib/espMqttClient/src/Transport/ClientSecureSync.cpp b/lib/espMqttClient/src/Transport/ClientSecureSync.cpp index 295cfc5..36288c6 100644 --- a/lib/espMqttClient/src/Transport/ClientSecureSync.cpp +++ b/lib/espMqttClient/src/Transport/ClientSecureSync.cpp @@ -50,10 +50,6 @@ size_t ClientSecureSync::write(const uint8_t* buf, size_t size) { return client.write(buf, size); } -int ClientSecureSync::available() { - return client.available(); -} - int ClientSecureSync::read(uint8_t* buf, size_t size) { return client.read(buf, size); } diff --git a/lib/espMqttClient/src/Transport/ClientSecureSync.h b/lib/espMqttClient/src/Transport/ClientSecureSync.h index 8f8cfa1..b81681e 100644 --- a/lib/espMqttClient/src/Transport/ClientSecureSync.h +++ b/lib/espMqttClient/src/Transport/ClientSecureSync.h @@ -22,7 +22,6 @@ class ClientSecureSync : public Transport { bool connect(IPAddress ip, uint16_t port) override; bool connect(const char* host, uint16_t port) override; size_t write(const uint8_t* buf, size_t size) override; - int available() override; int read(uint8_t* buf, size_t size) override; void stop() override; bool connected() override; diff --git a/lib/espMqttClient/src/Transport/ClientSync.cpp b/lib/espMqttClient/src/Transport/ClientSync.cpp index eaca857..b2c4045 100644 --- a/lib/espMqttClient/src/Transport/ClientSync.cpp +++ b/lib/espMqttClient/src/Transport/ClientSync.cpp @@ -50,10 +50,6 @@ size_t ClientSync::write(const uint8_t* buf, size_t size) { return client.write(buf, size); } -int ClientSync::available() { - return client.available(); -} - int ClientSync::read(uint8_t* buf, size_t size) { return client.read(buf, size); } diff --git a/lib/espMqttClient/src/Transport/ClientSync.h b/lib/espMqttClient/src/Transport/ClientSync.h index bba44ba..ccfbdba 100644 --- a/lib/espMqttClient/src/Transport/ClientSync.h +++ b/lib/espMqttClient/src/Transport/ClientSync.h @@ -22,7 +22,6 @@ class ClientSync : public Transport { bool connect(IPAddress ip, uint16_t port) override; bool connect(const char* host, uint16_t port) override; size_t write(const uint8_t* buf, size_t size) override; - int available() override; int read(uint8_t* buf, size_t size) override; void stop() override; bool connected() override; diff --git a/lib/espMqttClient/src/Transport/Transport.h b/lib/espMqttClient/src/Transport/Transport.h index b249e86..6720c02 100644 --- a/lib/espMqttClient/src/Transport/Transport.h +++ b/lib/espMqttClient/src/Transport/Transport.h @@ -19,7 +19,6 @@ class Transport { virtual bool connect(IPAddress ip, uint16_t port) = 0; virtual bool connect(const char* host, uint16_t port) = 0; virtual size_t write(const uint8_t* buf, size_t size) = 0; - virtual int available() = 0; virtual int read(uint8_t* buf, size_t size) = 0; virtual void stop() = 0; virtual bool connected() = 0; diff --git a/networkDevices/ClientSyncW5500.cpp b/networkDevices/ClientSyncW5500.cpp index b6f764c..8158ec5 100644 --- a/networkDevices/ClientSyncW5500.cpp +++ b/networkDevices/ClientSyncW5500.cpp @@ -54,10 +54,6 @@ namespace espMqttClientInternals { return client.write(buf, size); } - int ClientSyncW5500::available() { - return client.available(); - } - int ClientSyncW5500::read(uint8_t* buf, size_t size) { return client.read(buf, size); } diff --git a/networkDevices/ClientSyncW5500.h b/networkDevices/ClientSyncW5500.h index 64f5b8d..673d1f6 100644 --- a/networkDevices/ClientSyncW5500.h +++ b/networkDevices/ClientSyncW5500.h @@ -13,7 +13,6 @@ namespace espMqttClientInternals { bool connect(IPAddress ip, uint16_t port) override; bool connect(const char* host, uint16_t port) override; size_t write(const uint8_t* buf, size_t size) override; - int available() override; int read(uint8_t* buf, size_t size) override; void stop() override; bool connected() override;