merge mqttClinet PR 115 from BertMelis

This commit is contained in:
MichaelDvP
2023-11-01 18:18:56 +01:00
parent b02207a0d7
commit 41666458d9
3 changed files with 9 additions and 18 deletions

View File

@@ -14,12 +14,8 @@ using espMqttClientTypes::DisconnectReason;
using espMqttClientTypes::Error; using espMqttClientTypes::Error;
MqttClient::MqttClient(espMqttClientTypes::UseInternalTask useInternalTask, uint8_t priority, uint8_t core) MqttClient::MqttClient(espMqttClientTypes::UseInternalTask useInternalTask, uint8_t priority, uint8_t core)
#if defined(ARDUINO_ARCH_ESP32)
: _useInternalTask(useInternalTask) : _useInternalTask(useInternalTask)
, _transport(nullptr) , _transport(nullptr)
#else
: _transport(nullptr)
#endif
, _onConnectCallback(nullptr) , _onConnectCallback(nullptr)
, _onDisconnectCallback(nullptr) , _onDisconnectCallback(nullptr)
, _onSubscribeCallback(nullptr) , _onSubscribeCallback(nullptr)
@@ -153,8 +149,8 @@ uint16_t MqttClient::publish(const char * topic, uint8_t qos, bool retain, const
#endif #endif
return 0; return 0;
} }
uint16_t packetId = (qos > 0) ? _getNextPacketId() : 1;
EMC_SEMAPHORE_TAKE(); EMC_SEMAPHORE_TAKE();
uint16_t packetId = (qos > 0) ? _getNextPacketId() : 1;
if (!_addPacket(packetId, topic, payload, length, qos, retain)) { if (!_addPacket(packetId, topic, payload, length, qos, retain)) {
emc_log_e("Could not create PUBLISH packet"); emc_log_e("Could not create PUBLISH packet");
_onError(packetId, Error::OUT_OF_MEMORY); _onError(packetId, Error::OUT_OF_MEMORY);
@@ -177,8 +173,8 @@ uint16_t MqttClient::publish(const char * topic, uint8_t qos, bool retain, espMq
#endif #endif
return 0; return 0;
} }
uint16_t packetId = (qos > 0) ? _getNextPacketId() : 1;
EMC_SEMAPHORE_TAKE(); EMC_SEMAPHORE_TAKE();
uint16_t packetId = (qos > 0) ? _getNextPacketId() : 1;
if (!_addPacket(packetId, topic, callback, length, qos, retain)) { if (!_addPacket(packetId, topic, callback, length, qos, retain)) {
emc_log_e("Could not create PUBLISH packet"); emc_log_e("Could not create PUBLISH packet");
_onError(packetId, Error::OUT_OF_MEMORY); _onError(packetId, Error::OUT_OF_MEMORY);
@@ -320,12 +316,9 @@ void MqttClient::_loop(MqttClient * c) {
#endif #endif
uint16_t MqttClient::_getNextPacketId() { uint16_t MqttClient::_getNextPacketId() {
uint16_t packetId = 0; ++_packetId;
EMC_SEMAPHORE_TAKE(); if (_packetId == 0) ++_packetId;
// cppcheck-suppress knownConditionTrueFalse return _packetId;
packetId = (++_packetId == 0) ? ++_packetId : _packetId;
EMC_SEMAPHORE_GIVE();
return packetId;
} }
void MqttClient::_checkOutbox() { void MqttClient::_checkOutbox() {
@@ -340,10 +333,9 @@ int MqttClient::_sendPacket() {
EMC_SEMAPHORE_TAKE(); EMC_SEMAPHORE_TAKE();
OutgoingPacket * packet = _outbox.getCurrent(); OutgoingPacket * packet = _outbox.getCurrent();
size_t wantToWrite = 0;
size_t written = 0; size_t written = 0;
if (packet && (wantToWrite == written)) { if (packet) {
wantToWrite = packet->packet.available(_bytesSent); size_t wantToWrite = packet->packet.available(_bytesSent);
if (wantToWrite == 0) { if (wantToWrite == 0) {
EMC_SEMAPHORE_GIVE(); EMC_SEMAPHORE_GIVE();
return 0; return 0;

View File

@@ -40,8 +40,7 @@ bool ClientPosix::connect(IPAddress ip, uint16_t port) {
_host.sin_addr.s_addr = htonl(uint32_t(ip)); _host.sin_addr.s_addr = htonl(uint32_t(ip));
_host.sin_port = htons(port); // modified by proddy for EMS-ESP compiling standalone _host.sin_port = htons(port); // modified by proddy for EMS-ESP compiling standalone
int ret = ::connect(_sockfd, (struct sockaddr *)&_host, sizeof(_host)); int ret = ::connect(_sockfd, reinterpret_cast<sockaddr*>(&_host), sizeof(_host));
if (ret < 0) { if (ret < 0) {
emc_log_e("Error connecting: %d - (%d) %s", ret, errno, strerror(errno)); emc_log_e("Error connecting: %d - (%d) %s", ret, errno, strerror(errno));
return false; return false;

View File

@@ -43,7 +43,7 @@ class ClientPosix : public Transport {
protected: protected:
int _sockfd; int _sockfd;
struct sockaddr_in _host; sockaddr_in _host;
}; };
} // namespace espMqttClientInternals } // namespace espMqttClientInternals