From 67bf1a93e4ecc71d96f2793cc28d2ab25cfcbb2b Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Wed, 3 Nov 2021 22:47:34 +0100 Subject: [PATCH] Removed dynamic dependency. --- wled00/json.cpp | 27 ++++++++++++--------- wled00/src/dependencies/json/AsyncJson-v6.h | 9 +++++++ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/wled00/json.cpp b/wled00/json.cpp index b566ca0b4..418d7c91b 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -901,37 +901,40 @@ void serveJson(AsyncWebServerRequest* request) return; } - AsyncJsonResponse* response = new AsyncJsonResponse(JSON_BUFFER_SIZE); - JsonObject doc = response->getRoot(); + //AsyncJsonResponse* response = new AsyncJsonResponse(JSON_BUFFER_SIZE); + jsonBufferLock = true; + AsyncJsonResponse *response = new AsyncJsonResponse(&doc); + JsonObject lDoc = response->getRoot(); switch (subJson) { case 1: //state - serializeState(doc); break; + serializeState(lDoc); break; case 2: //info - serializeInfo(doc); break; + serializeInfo(lDoc); break; case 4: //node list - serializeNodes(doc); break; + serializeNodes(lDoc); break; case 5: //palettes - serializePalettes(doc, request); break; + serializePalettes(lDoc, request); break; default: //all - JsonObject state = doc.createNestedObject("state"); + JsonObject state = lDoc.createNestedObject("state"); serializeState(state); - JsonObject info = doc.createNestedObject("info"); + JsonObject info = lDoc.createNestedObject("info"); serializeInfo(info); if (subJson != 3) { - //doc[F("effects")] = serialized((const __FlashStringHelper*)JSON_mode_names); - JsonArray effects = doc.createNestedArray(F("effects")); + //lDoc[F("effects")] = serialized((const __FlashStringHelper*)JSON_mode_names); + JsonArray effects = lDoc.createNestedArray(F("effects")); deserializeModeNames(effects, JSON_mode_names); // remove WLED-SR extensions from effect names - doc[F("palettes")] = serialized((const __FlashStringHelper*)JSON_palette_names); + lDoc[F("palettes")] = serialized((const __FlashStringHelper*)JSON_palette_names); } } - DEBUG_PRINTF("JSON buffer size: %u for request: %d\n", doc.memoryUsage(), subJson); + DEBUG_PRINTF("JSON buffer size: %u for request: %d\n", lDoc.memoryUsage(), subJson); response->setLength(); request->send(response); + jsonBufferLock = false; } #define MAX_LIVE_LEDS 180 diff --git a/wled00/src/dependencies/json/AsyncJson-v6.h b/wled00/src/dependencies/json/AsyncJson-v6.h index c1288d91f..6577d89b9 100644 --- a/wled00/src/dependencies/json/AsyncJson-v6.h +++ b/wled00/src/dependencies/json/AsyncJson-v6.h @@ -64,6 +64,15 @@ class AsyncJsonResponse: public AsyncAbstractResponse { public: + AsyncJsonResponse(JsonDocument *ref, bool isArray=false) : _jsonBuffer(1), _isValid{false} { + _code = 200; + _contentType = JSON_MIMETYPE; + if(isArray) + _root = ref->as(); + else + _root = ref->as(); + } + AsyncJsonResponse(size_t maxJsonBufferSize = DYNAMIC_JSON_DOCUMENT_SIZE, bool isArray=false) : _jsonBuffer(maxJsonBufferSize), _isValid{false} { _code = 200; _contentType = JSON_MIMETYPE;