mirror of
https://github.com/lumapu/ahoy.git
synced 2025-04-29 10:16:21 +02:00
0.8.152
fix ESP8266 compile
This commit is contained in:
parent
76899a6498
commit
78cbd7749d
1 changed files with 44 additions and 9 deletions
|
@ -1,5 +1,38 @@
|
||||||
|
diff --git a/src/Helpers.h b/src/Helpers.h
|
||||||
|
index 05ab136..50b4c2f 100644
|
||||||
|
--- a/src/Helpers.h
|
||||||
|
+++ b/src/Helpers.h
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
/*
|
||||||
|
Copyright (c) 2022 Bert Melis. All rights reserved.
|
||||||
|
|
||||||
|
-This work is licensed under the terms of the MIT license.
|
||||||
|
+This work is licensed under the terms of the MIT license.
|
||||||
|
For a copy, see <https://opensource.org/licenses/MIT> or
|
||||||
|
the LICENSE file.
|
||||||
|
*/
|
||||||
|
@@ -13,6 +13,7 @@ the LICENSE file.
|
||||||
|
#include "freertos/FreeRTOS.h"
|
||||||
|
#include "freertos/task.h"
|
||||||
|
#include "esp_task_wdt.h"
|
||||||
|
+ #define EMC_SEMAPHORE_TAKE_CHECK() if(pdTRUE == xSemaphoreTake(_xSemaphore, portMAX_DELAY))
|
||||||
|
#define EMC_SEMAPHORE_TAKE() xSemaphoreTake(_xSemaphore, portMAX_DELAY)
|
||||||
|
#define EMC_SEMAPHORE_GIVE() xSemaphoreGive(_xSemaphore)
|
||||||
|
#define EMC_GET_FREE_MEMORY() std::max(ESP.getMaxAllocHeap(), ESP.getMaxAllocPsram())
|
||||||
|
@@ -25,9 +26,11 @@ the LICENSE file.
|
||||||
|
// _xSemaphore defined as std::atomic<bool>
|
||||||
|
#define EMC_SEMAPHORE_TAKE() while (_xSemaphore) { /*ESP.wdtFeed();*/ } _xSemaphore = true
|
||||||
|
#define EMC_SEMAPHORE_GIVE() _xSemaphore = false
|
||||||
|
+ #define EMC_SEMAPHORE_TAKE_CHECK() EMC_SEMAPHORE_TAKE
|
||||||
|
#else
|
||||||
|
#define EMC_SEMAPHORE_TAKE()
|
||||||
|
#define EMC_SEMAPHORE_GIVE()
|
||||||
|
+ #define EMC_SEMAPHORE_TAKE_CHECK()
|
||||||
|
#endif
|
||||||
|
#define EMC_GET_FREE_MEMORY() ESP.getMaxFreeBlockSize()
|
||||||
|
// no need to yield for ESP8266, the Arduino framework does this internally
|
||||||
diff --git a/src/MqttClient.cpp b/src/MqttClient.cpp
|
diff --git a/src/MqttClient.cpp b/src/MqttClient.cpp
|
||||||
index dc21f74..d4b35c4 100644
|
index dc21f74..d524e50 100644
|
||||||
--- a/src/MqttClient.cpp
|
--- a/src/MqttClient.cpp
|
||||||
+++ b/src/MqttClient.cpp
|
+++ b/src/MqttClient.cpp
|
||||||
@@ -1,7 +1,7 @@
|
@@ -1,7 +1,7 @@
|
||||||
|
@ -11,7 +44,7 @@ index dc21f74..d4b35c4 100644
|
||||||
For a copy, see <https://opensource.org/licenses/MIT> or
|
For a copy, see <https://opensource.org/licenses/MIT> or
|
||||||
the LICENSE file.
|
the LICENSE file.
|
||||||
*/
|
*/
|
||||||
@@ -148,16 +148,19 @@ uint16_t MqttClient::publish(const char* topic, uint8_t qos, bool retain, const
|
@@ -148,16 +148,20 @@ uint16_t MqttClient::publish(const char* topic, uint8_t qos, bool retain, const
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -20,14 +53,15 @@ index dc21f74..d4b35c4 100644
|
||||||
- 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");
|
||||||
+ uint16_t packetId = 0;
|
+ uint16_t packetId = 0;
|
||||||
+ if(pdTRUE == EMC_SEMAPHORE_TAKE()) {
|
+ EMC_SEMAPHORE_TAKE_CHECK() {
|
||||||
+ packetId = (qos > 0) ? _getNextPacketId() : 1;
|
+ 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");
|
||||||
+ EMC_SEMAPHORE_GIVE();
|
+ EMC_SEMAPHORE_GIVE();
|
||||||
+ _onError(packetId, Error::OUT_OF_MEMORY);
|
+ _onError(packetId, Error::OUT_OF_MEMORY);
|
||||||
+ if(pdTRUE == EMC_SEMAPHORE_TAKE())
|
+ EMC_SEMAPHORE_TAKE_CHECK() {
|
||||||
+ packetId = 0;
|
+ packetId = 0;
|
||||||
|
+ }
|
||||||
+ }
|
+ }
|
||||||
EMC_SEMAPHORE_GIVE();
|
EMC_SEMAPHORE_GIVE();
|
||||||
- _onError(packetId, Error::OUT_OF_MEMORY);
|
- _onError(packetId, Error::OUT_OF_MEMORY);
|
||||||
|
@ -39,7 +73,7 @@ index dc21f74..d4b35c4 100644
|
||||||
return packetId;
|
return packetId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,16 +177,19 @@ uint16_t MqttClient::publish(const char* topic, uint8_t qos, bool retain, espMqt
|
@@ -174,16 +178,20 @@ uint16_t MqttClient::publish(const char* topic, uint8_t qos, bool retain, espMqt
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -48,14 +82,15 @@ index dc21f74..d4b35c4 100644
|
||||||
- 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");
|
||||||
+ uint16_t packetId = 0;
|
+ uint16_t packetId = 0;
|
||||||
+ if(pdTRUE == EMC_SEMAPHORE_TAKE()) {
|
+ EMC_SEMAPHORE_TAKE_CHECK() {
|
||||||
+ packetId = (qos > 0) ? _getNextPacketId() : 1;
|
+ 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");
|
||||||
+ EMC_SEMAPHORE_GIVE();
|
+ EMC_SEMAPHORE_GIVE();
|
||||||
+ _onError(packetId, Error::OUT_OF_MEMORY);
|
+ _onError(packetId, Error::OUT_OF_MEMORY);
|
||||||
+ if(pdTRUE == EMC_SEMAPHORE_TAKE())
|
+ EMC_SEMAPHORE_TAKE_CHECK() {
|
||||||
+ packetId = 0;
|
+ packetId = 0;
|
||||||
|
+ }
|
||||||
+ }
|
+ }
|
||||||
EMC_SEMAPHORE_GIVE();
|
EMC_SEMAPHORE_GIVE();
|
||||||
- _onError(packetId, Error::OUT_OF_MEMORY);
|
- _onError(packetId, Error::OUT_OF_MEMORY);
|
||||||
|
@ -67,7 +102,7 @@ index dc21f74..d4b35c4 100644
|
||||||
return packetId;
|
return packetId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -237,11 +243,13 @@ void MqttClient::loop() {
|
@@ -237,11 +245,13 @@ void MqttClient::loop() {
|
||||||
case State::connectingMqtt:
|
case State::connectingMqtt:
|
||||||
#if EMC_WAIT_FOR_CONNACK
|
#if EMC_WAIT_FOR_CONNACK
|
||||||
if (_transport->connected()) {
|
if (_transport->connected()) {
|
||||||
|
@ -76,7 +111,7 @@ index dc21f74..d4b35c4 100644
|
||||||
- _checkIncoming();
|
- _checkIncoming();
|
||||||
- _checkPing();
|
- _checkPing();
|
||||||
- EMC_SEMAPHORE_GIVE();
|
- EMC_SEMAPHORE_GIVE();
|
||||||
+ if(pdTRUE == EMC_SEMAPHORE_TAKE()) {
|
+ EMC_SEMAPHORE_TAKE_CHECK() {
|
||||||
+ _sendPacket();
|
+ _sendPacket();
|
||||||
+ _checkIncoming();
|
+ _checkIncoming();
|
||||||
+ _checkPing();
|
+ _checkPing();
|
||||||
|
|
Loading…
Add table
Reference in a new issue