mirror of
https://github.com/okalachev/flix.git
synced 2026-06-27 21:46:38 +00:00
Bring back espnow tx buffering keeping resends disabled
Buffering is needed for sending large prints, otherwise the espnow internal buffer overflows. Make onSent always think there was success send, so there won't be any resends. Print lost espnow packets count on wifi console command.
This commit is contained in:
+5
-4
@@ -47,13 +47,14 @@ void splitString(String& str, String& token0, String& token1, String& token2) {
|
|||||||
if (token2.c_str() == NULL) token2 = "";
|
if (token2.c_str() == NULL) token2 = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Simplified ESP-NOW Serial without tx buffering and resends
|
// Simplified ESP-NOW Serial without resends
|
||||||
class ESPNOWSerial : public ESP_NOW_Serial_Class {
|
class ESPNOWSerial : public ESP_NOW_Serial_Class {
|
||||||
public:
|
public:
|
||||||
|
int lost = 0;
|
||||||
using ESP_NOW_Serial_Class::ESP_NOW_Serial_Class;
|
using ESP_NOW_Serial_Class::ESP_NOW_Serial_Class;
|
||||||
void onSent(bool success) override {} // disable resends
|
void onSent(bool success) override {
|
||||||
size_t write(const uint8_t *data, size_t len) override {
|
if (!success) lost++;
|
||||||
return ESP_NOW_Peer::send(data, len); // pure send without buffering
|
ESP_NOW_Serial_Class::onSent(true); // always report success to avoid resends
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -90,6 +90,7 @@ void printWiFiInfo() {
|
|||||||
print("Peer MAC: %s\n", MacAddress(espnow.addr()).toString().c_str());
|
print("Peer MAC: %s\n", MacAddress(espnow.addr()).toString().c_str());
|
||||||
print("Encrypted: %d\n", espnow.isEncrypted());
|
print("Encrypted: %d\n", espnow.isEncrypted());
|
||||||
print("Channel: %d\n", espnow.getChannel());
|
print("Channel: %d\n", espnow.getChannel());
|
||||||
|
print("Lost packets: %d\n", espnow.lost);
|
||||||
} else if (WiFi.getMode() == WIFI_MODE_AP) {
|
} else if (WiFi.getMode() == WIFI_MODE_AP) {
|
||||||
print("Mode: Access Point (AP)\n");
|
print("Mode: Access Point (AP)\n");
|
||||||
print("MAC: %s\n", WiFi.softAPmacAddress().c_str());
|
print("MAC: %s\n", WiFi.softAPmacAddress().c_str());
|
||||||
|
|||||||
Reference in New Issue
Block a user