Removed dynamic dependency.

This commit is contained in:
Blaz Kristan 2021-11-03 22:47:34 +01:00
parent c263f11170
commit 67bf1a93e4
2 changed files with 24 additions and 12 deletions

View File

@ -901,37 +901,40 @@ void serveJson(AsyncWebServerRequest* request)
return; return;
} }
AsyncJsonResponse* response = new AsyncJsonResponse(JSON_BUFFER_SIZE); //AsyncJsonResponse* response = new AsyncJsonResponse(JSON_BUFFER_SIZE);
JsonObject doc = response->getRoot(); jsonBufferLock = true;
AsyncJsonResponse *response = new AsyncJsonResponse(&doc);
JsonObject lDoc = response->getRoot();
switch (subJson) switch (subJson)
{ {
case 1: //state case 1: //state
serializeState(doc); break; serializeState(lDoc); break;
case 2: //info case 2: //info
serializeInfo(doc); break; serializeInfo(lDoc); break;
case 4: //node list case 4: //node list
serializeNodes(doc); break; serializeNodes(lDoc); break;
case 5: //palettes case 5: //palettes
serializePalettes(doc, request); break; serializePalettes(lDoc, request); break;
default: //all default: //all
JsonObject state = doc.createNestedObject("state"); JsonObject state = lDoc.createNestedObject("state");
serializeState(state); serializeState(state);
JsonObject info = doc.createNestedObject("info"); JsonObject info = lDoc.createNestedObject("info");
serializeInfo(info); serializeInfo(info);
if (subJson != 3) if (subJson != 3)
{ {
//doc[F("effects")] = serialized((const __FlashStringHelper*)JSON_mode_names); //lDoc[F("effects")] = serialized((const __FlashStringHelper*)JSON_mode_names);
JsonArray effects = doc.createNestedArray(F("effects")); JsonArray effects = lDoc.createNestedArray(F("effects"));
deserializeModeNames(effects, JSON_mode_names); // remove WLED-SR extensions from effect names 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(); response->setLength();
request->send(response); request->send(response);
jsonBufferLock = false;
} }
#define MAX_LIVE_LEDS 180 #define MAX_LIVE_LEDS 180

View File

@ -64,6 +64,15 @@ class AsyncJsonResponse: public AsyncAbstractResponse {
public: public:
AsyncJsonResponse(JsonDocument *ref, bool isArray=false) : _jsonBuffer(1), _isValid{false} {
_code = 200;
_contentType = JSON_MIMETYPE;
if(isArray)
_root = ref->as<JsonArray>();
else
_root = ref->as<JsonObject>();
}
AsyncJsonResponse(size_t maxJsonBufferSize = DYNAMIC_JSON_DOCUMENT_SIZE, bool isArray=false) : _jsonBuffer(maxJsonBufferSize), _isValid{false} { AsyncJsonResponse(size_t maxJsonBufferSize = DYNAMIC_JSON_DOCUMENT_SIZE, bool isArray=false) : _jsonBuffer(maxJsonBufferSize), _isValid{false} {
_code = 200; _code = 200;
_contentType = JSON_MIMETYPE; _contentType = JSON_MIMETYPE;