update espMqttClient
This commit is contained in:
@@ -14,7 +14,7 @@
|
|||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/bertmelis/espMqttClient.git"
|
"url": "https://github.com/bertmelis/espMqttClient.git"
|
||||||
},
|
},
|
||||||
"version": "1.4.1",
|
"version": "1.4.2",
|
||||||
"frameworks": "arduino",
|
"frameworks": "arduino",
|
||||||
"platforms": ["espressif8266", "espressif32"],
|
"platforms": ["espressif8266", "espressif32"],
|
||||||
"headers": ["espMqttClient.h", "espMqttClientAsync.h"],
|
"headers": ["espMqttClient.h", "espMqttClientAsync.h"],
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
name=espMqttClient
|
name=espMqttClient
|
||||||
version=1.4.1
|
version=1.4.2
|
||||||
author=Bert Melis
|
author=Bert Melis
|
||||||
maintainer=Bert Melis
|
maintainer=Bert Melis
|
||||||
sentence=an MQTT client for the Arduino framework for ESP8266 / ESP32
|
sentence=an MQTT client for the Arduino framework for ESP8266 / ESP32
|
||||||
|
|||||||
@@ -222,9 +222,14 @@ void MqttClient::loop() {
|
|||||||
break;
|
break;
|
||||||
case State::connectingMqtt:
|
case State::connectingMqtt:
|
||||||
#if EMC_WAIT_FOR_CONNACK
|
#if EMC_WAIT_FOR_CONNACK
|
||||||
_sendPacket();
|
if (_transport->connected()) {
|
||||||
_checkIncoming();
|
_sendPacket();
|
||||||
_checkPing();
|
_checkIncoming();
|
||||||
|
_checkPing();
|
||||||
|
} else {
|
||||||
|
_state = State::disconnectingTcp1;
|
||||||
|
_disconnectReason = DisconnectReason::TCP_DISCONNECTED;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
#else
|
#else
|
||||||
// receipt of CONNACK packet will set state to CONNECTED
|
// receipt of CONNACK packet will set state to CONNECTED
|
||||||
@@ -266,10 +271,11 @@ void MqttClient::loop() {
|
|||||||
case State::disconnectingTcp1:
|
case State::disconnectingTcp1:
|
||||||
_transport->stop();
|
_transport->stop();
|
||||||
_state = State::disconnectingTcp2;
|
_state = State::disconnectingTcp2;
|
||||||
break;
|
break; // keep break to accomodate async clients
|
||||||
case State::disconnectingTcp2:
|
case State::disconnectingTcp2:
|
||||||
if (_transport->disconnected()) {
|
if (_transport->disconnected()) {
|
||||||
_clearQueue(0);
|
_clearQueue(0);
|
||||||
|
_bytesSent = 0;
|
||||||
_state = State::disconnected;
|
_state = State::disconnected;
|
||||||
if (_onDisconnectCallback) _onDisconnectCallback(_disconnectReason);
|
if (_onDisconnectCallback) _onDisconnectCallback(_disconnectReason);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -149,7 +149,6 @@ class MqttClient {
|
|||||||
espMqttClientTypes::Error error(espMqttClientTypes::Error::SUCCESS);
|
espMqttClientTypes::Error error(espMqttClientTypes::Error::SUCCESS);
|
||||||
espMqttClientInternals::Outbox<OutgoingPacket>::Iterator it = _outbox.emplace(0, error, std::forward<Args>(args) ...);
|
espMqttClientInternals::Outbox<OutgoingPacket>::Iterator it = _outbox.emplace(0, error, std::forward<Args>(args) ...);
|
||||||
if (it && error == espMqttClientTypes::Error::SUCCESS) return true;
|
if (it && error == espMqttClientTypes::Error::SUCCESS) return true;
|
||||||
_outbox.remove(it);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -158,7 +157,6 @@ class MqttClient {
|
|||||||
espMqttClientTypes::Error error(espMqttClientTypes::Error::SUCCESS);
|
espMqttClientTypes::Error error(espMqttClientTypes::Error::SUCCESS);
|
||||||
espMqttClientInternals::Outbox<OutgoingPacket>::Iterator it = _outbox.emplaceFront(0, error, std::forward<Args>(args) ...);
|
espMqttClientInternals::Outbox<OutgoingPacket>::Iterator it = _outbox.emplaceFront(0, error, std::forward<Args>(args) ...);
|
||||||
if (it && error == espMqttClientTypes::Error::SUCCESS) return true;
|
if (it && error == espMqttClientTypes::Error::SUCCESS) return true;
|
||||||
_outbox.remove(it);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -121,6 +121,7 @@ class Outbox {
|
|||||||
|
|
||||||
// remove node at iterator, iterator points to next
|
// remove node at iterator, iterator points to next
|
||||||
void remove(Iterator& it) { // NOLINT(runtime/references)
|
void remove(Iterator& it) { // NOLINT(runtime/references)
|
||||||
|
if (!it) return;
|
||||||
Node* node = it._node;
|
Node* node = it._node;
|
||||||
Node* prev = it._prev;
|
Node* prev = it._prev;
|
||||||
++it;
|
++it;
|
||||||
|
|||||||
@@ -31,10 +31,6 @@ size_t ClientAsync::write(const uint8_t* buf, size_t size) {
|
|||||||
return client.write(reinterpret_cast<const char*>(buf), 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) {
|
int ClientAsync::read(uint8_t* buf, size_t size) {
|
||||||
size_t willRead = std::min(size, availableData);
|
size_t willRead = std::min(size, availableData);
|
||||||
memcpy(buf, bufData, std::min(size, availableData));
|
memcpy(buf, bufData, std::min(size, availableData));
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ class ClientAsync : public Transport {
|
|||||||
bool connect(IPAddress ip, uint16_t port) override;
|
bool connect(IPAddress ip, uint16_t port) override;
|
||||||
bool connect(const char* host, uint16_t port) override;
|
bool connect(const char* host, uint16_t port) override;
|
||||||
size_t write(const uint8_t* buf, size_t size) override;
|
size_t write(const uint8_t* buf, size_t size) override;
|
||||||
int available() override;
|
|
||||||
int read(uint8_t* buf, size_t size) override;
|
int read(uint8_t* buf, size_t size) override;
|
||||||
void stop() override;
|
void stop() override;
|
||||||
bool connected() override;
|
bool connected() override;
|
||||||
|
|||||||
@@ -62,12 +62,6 @@ size_t ClientPosix::write(const uint8_t* buf, size_t size) {
|
|||||||
return ::send(_sockfd, buf, size, 0);
|
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 ClientPosix::read(uint8_t* buf, size_t size) {
|
||||||
int ret = ::recv(_sockfd, buf, size, MSG_DONTWAIT);
|
int ret = ::recv(_sockfd, buf, size, MSG_DONTWAIT);
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ class ClientPosix : public Transport {
|
|||||||
bool connect(IPAddress ip, uint16_t port) override;
|
bool connect(IPAddress ip, uint16_t port) override;
|
||||||
bool connect(const char* host, uint16_t port) override;
|
bool connect(const char* host, uint16_t port) override;
|
||||||
size_t write(const uint8_t* buf, size_t size) override;
|
size_t write(const uint8_t* buf, size_t size) override;
|
||||||
int available() override;
|
|
||||||
int read(uint8_t* buf, size_t size) override;
|
int read(uint8_t* buf, size_t size) override;
|
||||||
void stop() override;
|
void stop() override;
|
||||||
bool connected() override;
|
bool connected() override;
|
||||||
|
|||||||
@@ -50,10 +50,6 @@ size_t ClientSecureSync::write(const uint8_t* buf, size_t size) {
|
|||||||
return client.write(buf, size);
|
return client.write(buf, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ClientSecureSync::available() {
|
|
||||||
return client.available();
|
|
||||||
}
|
|
||||||
|
|
||||||
int ClientSecureSync::read(uint8_t* buf, size_t size) {
|
int ClientSecureSync::read(uint8_t* buf, size_t size) {
|
||||||
return client.read(buf, size);
|
return client.read(buf, size);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ class ClientSecureSync : public Transport {
|
|||||||
bool connect(IPAddress ip, uint16_t port) override;
|
bool connect(IPAddress ip, uint16_t port) override;
|
||||||
bool connect(const char* host, uint16_t port) override;
|
bool connect(const char* host, uint16_t port) override;
|
||||||
size_t write(const uint8_t* buf, size_t size) override;
|
size_t write(const uint8_t* buf, size_t size) override;
|
||||||
int available() override;
|
|
||||||
int read(uint8_t* buf, size_t size) override;
|
int read(uint8_t* buf, size_t size) override;
|
||||||
void stop() override;
|
void stop() override;
|
||||||
bool connected() override;
|
bool connected() override;
|
||||||
|
|||||||
@@ -50,10 +50,6 @@ size_t ClientSync::write(const uint8_t* buf, size_t size) {
|
|||||||
return client.write(buf, size);
|
return client.write(buf, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ClientSync::available() {
|
|
||||||
return client.available();
|
|
||||||
}
|
|
||||||
|
|
||||||
int ClientSync::read(uint8_t* buf, size_t size) {
|
int ClientSync::read(uint8_t* buf, size_t size) {
|
||||||
return client.read(buf, size);
|
return client.read(buf, size);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ class ClientSync : public Transport {
|
|||||||
bool connect(IPAddress ip, uint16_t port) override;
|
bool connect(IPAddress ip, uint16_t port) override;
|
||||||
bool connect(const char* host, uint16_t port) override;
|
bool connect(const char* host, uint16_t port) override;
|
||||||
size_t write(const uint8_t* buf, size_t size) override;
|
size_t write(const uint8_t* buf, size_t size) override;
|
||||||
int available() override;
|
|
||||||
int read(uint8_t* buf, size_t size) override;
|
int read(uint8_t* buf, size_t size) override;
|
||||||
void stop() override;
|
void stop() override;
|
||||||
bool connected() override;
|
bool connected() override;
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ class Transport {
|
|||||||
virtual bool connect(IPAddress ip, uint16_t port) = 0;
|
virtual bool connect(IPAddress ip, uint16_t port) = 0;
|
||||||
virtual bool connect(const char* host, 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 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 int read(uint8_t* buf, size_t size) = 0;
|
||||||
virtual void stop() = 0;
|
virtual void stop() = 0;
|
||||||
virtual bool connected() = 0;
|
virtual bool connected() = 0;
|
||||||
|
|||||||
@@ -54,10 +54,6 @@ namespace espMqttClientInternals {
|
|||||||
return client.write(buf, size);
|
return client.write(buf, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ClientSyncW5500::available() {
|
|
||||||
return client.available();
|
|
||||||
}
|
|
||||||
|
|
||||||
int ClientSyncW5500::read(uint8_t* buf, size_t size) {
|
int ClientSyncW5500::read(uint8_t* buf, size_t size) {
|
||||||
return client.read(buf, size);
|
return client.read(buf, size);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ namespace espMqttClientInternals {
|
|||||||
bool connect(IPAddress ip, uint16_t port) override;
|
bool connect(IPAddress ip, uint16_t port) override;
|
||||||
bool connect(const char* host, uint16_t port) override;
|
bool connect(const char* host, uint16_t port) override;
|
||||||
size_t write(const uint8_t* buf, size_t size) override;
|
size_t write(const uint8_t* buf, size_t size) override;
|
||||||
int available() override;
|
|
||||||
int read(uint8_t* buf, size_t size) override;
|
int read(uint8_t* buf, size_t size) override;
|
||||||
void stop() override;
|
void stop() override;
|
||||||
bool connected() override;
|
bool connected() override;
|
||||||
|
|||||||
Reference in New Issue
Block a user