mirror of
https://github.com/wled/WLED.git
synced 2025-07-19 08:46:34 +00:00
JSON buffer lock error messages
Reduce wait time for lock to 100ms
This commit is contained in:
parent
95e2e574b8
commit
5761dce957
@ -83,7 +83,7 @@ static void doSaveState() {
|
|||||||
|
|
||||||
bool getPresetName(byte index, String& name)
|
bool getPresetName(byte index, String& name)
|
||||||
{
|
{
|
||||||
if (!requestJSONBufferLock(9)) return false;
|
if (!requestJSONBufferLock(19)) return false;
|
||||||
bool presetExists = false;
|
bool presetExists = false;
|
||||||
if (readObjectFromFileUsingId(getFileName(), index, pDoc))
|
if (readObjectFromFileUsingId(getFileName(), index, pDoc))
|
||||||
{
|
{
|
||||||
|
@ -215,10 +215,10 @@ bool requestJSONBufferLock(uint8_t module)
|
|||||||
}
|
}
|
||||||
unsigned long now = millis();
|
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) {
|
if (jsonBufferLock) {
|
||||||
DEBUG_PRINT(F("ERROR: Locking JSON buffer failed! ("));
|
DEBUG_PRINT(F("ERROR: Locking JSON buffer failed! (still locked by "));
|
||||||
DEBUG_PRINT(jsonBufferLock);
|
DEBUG_PRINT(jsonBufferLock);
|
||||||
DEBUG_PRINTLN(")");
|
DEBUG_PRINTLN(")");
|
||||||
return false; // waiting time-outed
|
return false; // waiting time-outed
|
||||||
|
@ -113,7 +113,10 @@ void handleSerial()
|
|||||||
|
|
||||||
} else if (next == '{') { //JSON API
|
} else if (next == '{') { //JSON API
|
||||||
bool verboseResponse = false;
|
bool verboseResponse = false;
|
||||||
if (!requestJSONBufferLock(16)) return;
|
if (!requestJSONBufferLock(16)) {
|
||||||
|
Serial.println(F("{\"error\":3}")); // ERR_NOBUF
|
||||||
|
return;
|
||||||
|
}
|
||||||
Serial.setTimeout(100);
|
Serial.setTimeout(100);
|
||||||
DeserializationError error = deserializeJson(*pDoc, Serial);
|
DeserializationError error = deserializeJson(*pDoc, Serial);
|
||||||
if (error) {
|
if (error) {
|
||||||
|
@ -285,7 +285,10 @@ void initServer()
|
|||||||
bool verboseResponse = false;
|
bool verboseResponse = false;
|
||||||
bool isConfig = false;
|
bool isConfig = false;
|
||||||
|
|
||||||
if (!requestJSONBufferLock(14)) return;
|
if (!requestJSONBufferLock(14)) {
|
||||||
|
serveJsonError(request, 503, ERR_NOBUF);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
DeserializationError error = deserializeJson(*pDoc, (uint8_t*)(request->_tempObject));
|
DeserializationError error = deserializeJson(*pDoc, (uint8_t*)(request->_tempObject));
|
||||||
JsonObject root = pDoc->as<JsonObject>();
|
JsonObject root = pDoc->as<JsonObject>();
|
||||||
|
@ -36,7 +36,10 @@ void wsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventTyp
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool verboseResponse = false;
|
bool verboseResponse = false;
|
||||||
if (!requestJSONBufferLock(11)) return;
|
if (!requestJSONBufferLock(11)) {
|
||||||
|
client->text(F("{\"error\":3}")); // ERR_NOBUF
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
DeserializationError error = deserializeJson(*pDoc, data, len);
|
DeserializationError error = deserializeJson(*pDoc, data, len);
|
||||||
JsonObject root = pDoc->as<JsonObject>();
|
JsonObject root = pDoc->as<JsonObject>();
|
||||||
@ -101,7 +104,14 @@ void sendDataWs(AsyncWebSocketClient * client)
|
|||||||
if (!ws.count()) return;
|
if (!ws.count()) return;
|
||||||
AsyncWebSocketMessageBuffer * buffer;
|
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 = pDoc->createNestedObject("state");
|
JsonObject state = pDoc->createNestedObject("state");
|
||||||
serializeState(state);
|
serializeState(state);
|
||||||
@ -109,7 +119,7 @@ void sendDataWs(AsyncWebSocketClient * client)
|
|||||||
serializeInfo(info);
|
serializeInfo(info);
|
||||||
|
|
||||||
size_t len = measureJson(*pDoc);
|
size_t len = measureJson(*pDoc);
|
||||||
DEBUG_PRINTF("JSON buffer size: %u for WS request (%u).\n", pDoc->memoryUsage(), len);
|
DEBUG_PRINTF_P(PSTR("JSON buffer size: %u for WS request (%u).\n"), pDoc->memoryUsage(), len);
|
||||||
|
|
||||||
size_t heap1 = ESP.getFreeHeap();
|
size_t heap1 = ESP.getFreeHeap();
|
||||||
DEBUG_PRINT(F("heap ")); DEBUG_PRINTLN(ESP.getFreeHeap());
|
DEBUG_PRINT(F("heap ")); DEBUG_PRINTLN(ESP.getFreeHeap());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user