JSON buffer lock error messages
Reduce wait time for lock to 100ms
This commit is contained in:
@@ -95,7 +95,7 @@ static void doSaveState() {
|
||||
|
||||
bool getPresetName(byte index, String& name)
|
||||
{
|
||||
if (!requestJSONBufferLock(9)) return false;
|
||||
if (!requestJSONBufferLock(19)) return false;
|
||||
bool presetExists = false;
|
||||
if (readObjectFromFileUsingId(getFileName(), index, &doc))
|
||||
{
|
||||
|
||||
@@ -204,10 +204,10 @@ bool requestJSONBufferLock(uint8_t module)
|
||||
{
|
||||
unsigned long now = millis();
|
||||
|
||||
while (jsonBufferLock && millis()-now < 1000) delay(1); // wait for a second for buffer lock
|
||||
while (jsonBufferLock && millis()-now < 100) delay(1); // wait for fraction for buffer lock
|
||||
|
||||
if (millis()-now >= 1000) {
|
||||
DEBUG_PRINT(F("ERROR: Locking JSON buffer failed! ("));
|
||||
if (jsonBufferLock) {
|
||||
DEBUG_PRINT(F("ERROR: Locking JSON buffer failed! (still locked by "));
|
||||
DEBUG_PRINT(jsonBufferLock);
|
||||
DEBUG_PRINTLN(")");
|
||||
return false; // waiting time-outed
|
||||
|
||||
@@ -136,7 +136,10 @@ void handleSerial()
|
||||
|
||||
} else if (next == '{') { //JSON API
|
||||
bool verboseResponse = false;
|
||||
if (!requestJSONBufferLock(16)) return;
|
||||
if (!requestJSONBufferLock(16)) {
|
||||
Serial.println(F("{\"error\":3}")); // ERR_NOBUF
|
||||
return;
|
||||
}
|
||||
Serial.setTimeout(100);
|
||||
DeserializationError error = deserializeJson(doc, Serial);
|
||||
if (error) {
|
||||
|
||||
@@ -41,7 +41,10 @@ void wsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventTyp
|
||||
}
|
||||
|
||||
bool verboseResponse = false;
|
||||
if (!requestJSONBufferLock(11)) return;
|
||||
if (!requestJSONBufferLock(11)) {
|
||||
client->text(F("{\"error\":3}")); // ERR_NOBUF
|
||||
return;
|
||||
}
|
||||
|
||||
DeserializationError error = deserializeJson(doc, data, len);
|
||||
JsonObject root = doc.as<JsonObject>();
|
||||
@@ -106,15 +109,22 @@ void sendDataWs(AsyncWebSocketClient * client)
|
||||
if (!ws.count()) return;
|
||||
AsyncWebSocketMessageBuffer * buffer;
|
||||
|
||||
if (!requestJSONBufferLock(12)) return;
|
||||
if (!requestJSONBufferLock(12)) {
|
||||
if (client) {
|
||||
client->text(F("{\"error\":3}")); // ERR_NOBUF
|
||||
} else {
|
||||
ws.textAll(F("{\"error\":3}")); // ERR_NOBUF
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
JsonObject state = doc.createNestedObject("state");
|
||||
serializeState(state);
|
||||
JsonObject info = doc.createNestedObject("info");
|
||||
serializeInfo(info);
|
||||
|
||||
size_t len = measureJson(doc);
|
||||
DEBUG_PRINTF("JSON buffer size: %u for WS request (%u).\n", doc.memoryUsage(), len);
|
||||
size_t len = measureJson(*pDoc);
|
||||
DEBUG_PRINTF("JSON buffer size: %u for WS request (%u).\n", pDoc->memoryUsage(), len);
|
||||
|
||||
#ifdef ESP8266
|
||||
size_t heap1 = ESP.getFreeHeap(); // WLEDMM moved into 8266 specific section
|
||||
|
||||
Reference in New Issue
Block a user