mirror of
https://github.com/agessaman/MeshCore.git
synced 2026-07-12 04:58:48 +00:00
53c39dc282
The esp-mqtt task drains only one QUEUED outbox item per loop iteration, and each iteration blocks up to MQTT_POLL_READ_TIMEOUT_MS (1s) on esp_transport_poll_read. With little inbound traffic that caps throughput at ~1 message/second per connection, so even a light packet rate (~1.2/s) outruns the drain: the outbox pins at its cap and ~20-30% of QoS0 packets are dropped as backpressure. The poll timeout is a compile-time constant baked into the precompiled esp-mqtt lib, so the async drain rate cannot be raised on the Arduino/IDF 4.4 toolchain. Route QoS0 packet publishes through esp_mqtt_client_publish() (async=false) so they write straight to the socket, bypassing the outbox drain entirely — QoS0 no longer touches the outbox. QoS1 status keeps the async/outbox + retransmit path. The esp-mqtt task releases its API lock before the poll, so a synchronous publish from the (Core-0, prio-1) MQTT task acquires the lock and writes immediately; a stalled socket blocks only that task (mesh RX on Core 1 and the WiFi/TCP stack are unaffected), bounded by a new setNetworkTimeout() lowered to 2500ms so a first stall fails fast and flips the slot to disconnected. The outbox cap from the previous commit stays as a dormant safety net. Retools the MQTT_DEBUG diagnostic from outbox size/drops (now always ~0) to per-slot publish ok/err counts, the live signal for delivery health, with 1-based slot numbering to match the status line.
This directory is intended for project specific (private) libraries.
PlatformIO will compile them to static libraries and link into executable file.
The source code of each library should be placed in a an own separate directory
("lib/your_library_name/[here are source files]").
For example, see a structure of the following two libraries `Foo` and `Bar`:
|--lib
| |
| |--Bar
| | |--docs
| | |--examples
| | |--src
| | |- Bar.c
| | |- Bar.h
| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html
| |
| |--Foo
| | |- Foo.c
| | |- Foo.h
| |
| |- README --> THIS FILE
|
|- platformio.ini
|--src
|- main.c
and a contents of `src/main.c`:
```
#include <Foo.h>
#include <Bar.h>
int main (void)
{
...
}
```
PlatformIO Library Dependency Finder will find automatically dependent
libraries scanning project source files.
More information about PlatformIO Library Dependency Finder
- https://docs.platformio.org/page/librarymanager/ldf.html