update espMqttClient

This commit is contained in:
technyon
2023-03-27 17:48:22 +02:00
parent 4d566e28fd
commit 44ad2dd320
16 changed files with 13 additions and 36 deletions

View File

@@ -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"],

View File

@@ -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

View File

@@ -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);
}

View File

@@ -149,7 +149,6 @@ class MqttClient {
espMqttClientTypes::Error error(espMqttClientTypes::Error::SUCCESS);
espMqttClientInternals::Outbox<OutgoingPacket>::Iterator it = _outbox.emplace(0, error, std::forward<Args>(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<OutgoingPacket>::Iterator it = _outbox.emplaceFront(0, error, std::forward<Args>(args) ...);
if (it && error == espMqttClientTypes::Error::SUCCESS) return true;
_outbox.remove(it);
return false;
}

View File

@@ -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;

View File

@@ -31,10 +31,6 @@ size_t ClientAsync::write(const uint8_t* buf, size_t size) {
return client.write(reinterpret_cast<const char*>(buf), size);
}
int ClientAsync::available() {
return static_cast<int>(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));

View File

@@ -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;

View File

@@ -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);
/*

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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;