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;
}
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

View File

@ -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<JsonArray>();
else
_root = ref->as<JsonObject>();
}
AsyncJsonResponse(size_t maxJsonBufferSize = DYNAMIC_JSON_DOCUMENT_SIZE, bool isArray=false) : _jsonBuffer(maxJsonBufferSize), _isValid{false} {
_code = 200;
_contentType = JSON_MIMETYPE;