2022-02-15 11:37:31 +01:00
|
|
|
#include "utils/JsonUtils.h"
|
|
|
|
|
#include "utils/FileUtils.h"
|
2021-12-22 23:33:47 +01:00
|
|
|
|
2021-12-25 00:19:58 +01:00
|
|
|
// new================================================================================
|
2021-12-24 22:49:06 +01:00
|
|
|
String jsonReadStrDoc(DynamicJsonDocument& doc, String name) {
|
2021-12-22 23:33:47 +01:00
|
|
|
return doc[name].as<String>();
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-24 22:49:06 +01:00
|
|
|
void jsonWriteStrDoc(DynamicJsonDocument& doc, String name, String value) {
|
|
|
|
|
doc[name] = value;
|
2021-12-22 23:33:47 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// new==============================================================================
|
2022-02-22 16:40:46 +01:00
|
|
|
bool jsonRead(String& json, String key, unsigned long& value, bool e) {
|
2022-02-01 20:39:51 +03:00
|
|
|
bool ret = true;
|
|
|
|
|
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
|
|
|
|
|
DeserializationError error = deserializeJson(doc, json);
|
|
|
|
|
if (error) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonRead"), error.f_str());
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2022-02-01 20:39:51 +03:00
|
|
|
ret = false;
|
|
|
|
|
} else if (!doc.containsKey(key)) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonRead"), key + " missing");
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2022-02-01 20:39:51 +03:00
|
|
|
ret = false;
|
|
|
|
|
}
|
|
|
|
|
value = doc[key].as<unsigned long>();
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-22 16:40:46 +01:00
|
|
|
bool jsonRead(String& json, String key, float& value, bool e) {
|
2022-02-01 20:28:17 +03:00
|
|
|
bool ret = true;
|
|
|
|
|
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
|
|
|
|
|
DeserializationError error = deserializeJson(doc, json);
|
|
|
|
|
if (error) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonRead"), error.f_str());
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2022-02-01 20:28:17 +03:00
|
|
|
ret = false;
|
|
|
|
|
} else if (!doc.containsKey(key)) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonRead"), key + " missing");
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2022-02-01 20:28:17 +03:00
|
|
|
ret = false;
|
|
|
|
|
}
|
|
|
|
|
value = doc[key].as<float>();
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-22 16:40:46 +01:00
|
|
|
bool jsonRead(String& json, String key, String& value, bool e) {
|
2021-12-22 23:33:47 +01:00
|
|
|
bool ret = true;
|
|
|
|
|
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
|
|
|
|
|
DeserializationError error = deserializeJson(doc, json);
|
|
|
|
|
if (error) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonRead"), error.f_str());
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2021-12-22 23:33:47 +01:00
|
|
|
ret = false;
|
|
|
|
|
} else if (!doc.containsKey(key)) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonRead"), key + " missing");
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2021-12-22 23:33:47 +01:00
|
|
|
ret = false;
|
|
|
|
|
}
|
|
|
|
|
value = doc[key].as<String>();
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-22 16:40:46 +01:00
|
|
|
bool jsonRead(String& json, String key, bool& value, bool e) {
|
2021-12-22 23:33:47 +01:00
|
|
|
bool ret = true;
|
|
|
|
|
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
|
|
|
|
|
DeserializationError error = deserializeJson(doc, json);
|
|
|
|
|
if (error) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonRead"), error.f_str());
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2021-12-22 23:33:47 +01:00
|
|
|
ret = false;
|
|
|
|
|
} else if (!doc.containsKey(key)) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonRead"), key + " missing");
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2021-12-22 23:33:47 +01:00
|
|
|
ret = false;
|
|
|
|
|
}
|
|
|
|
|
value = doc[key].as<bool>();
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-22 16:40:46 +01:00
|
|
|
bool jsonRead(String& json, String key, int& value, bool e) {
|
2021-12-22 23:33:47 +01:00
|
|
|
bool ret = true;
|
|
|
|
|
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
|
|
|
|
|
DeserializationError error = deserializeJson(doc, json);
|
|
|
|
|
if (error) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonRead"), error.f_str());
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2021-12-22 23:33:47 +01:00
|
|
|
ret = false;
|
|
|
|
|
} else if (!doc.containsKey(key)) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonRead"), key + " missing");
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2021-12-22 23:33:47 +01:00
|
|
|
ret = false;
|
|
|
|
|
}
|
|
|
|
|
value = doc[key].as<int>();
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
2021-12-24 22:49:06 +01:00
|
|
|
|
2021-12-25 00:19:58 +01:00
|
|
|
// new==============================================================================
|
2022-02-22 16:40:46 +01:00
|
|
|
bool jsonWriteStr_(String& json, String key, String value, bool e) {
|
2021-12-25 00:19:58 +01:00
|
|
|
bool ret = true;
|
|
|
|
|
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
|
|
|
|
|
DeserializationError error = deserializeJson(doc, json);
|
|
|
|
|
if (error) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonWrite"), error.f_str());
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2021-12-25 00:19:58 +01:00
|
|
|
ret = false;
|
|
|
|
|
}
|
|
|
|
|
doc[key] = value;
|
|
|
|
|
json = "";
|
|
|
|
|
serializeJson(doc, json);
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-22 16:40:46 +01:00
|
|
|
bool jsonWriteBool_(String& json, String key, bool value, bool e) {
|
2021-12-25 00:19:58 +01:00
|
|
|
bool ret = true;
|
|
|
|
|
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
|
|
|
|
|
DeserializationError error = deserializeJson(doc, json);
|
|
|
|
|
if (error) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonWrite"), error.f_str());
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2021-12-25 00:19:58 +01:00
|
|
|
ret = false;
|
|
|
|
|
}
|
|
|
|
|
doc[key] = value;
|
|
|
|
|
json = "";
|
|
|
|
|
serializeJson(doc, json);
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-22 16:40:46 +01:00
|
|
|
bool jsonWriteInt_(String& json, String key, int value, bool e) {
|
2021-12-25 00:19:58 +01:00
|
|
|
bool ret = true;
|
|
|
|
|
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
|
|
|
|
|
DeserializationError error = deserializeJson(doc, json);
|
|
|
|
|
if (error) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonWrite"), error.f_str());
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2021-12-25 00:19:58 +01:00
|
|
|
ret = false;
|
|
|
|
|
}
|
|
|
|
|
doc[key] = value;
|
|
|
|
|
json = "";
|
|
|
|
|
serializeJson(doc, json);
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-22 16:40:46 +01:00
|
|
|
bool jsonWriteFloat_(String& json, String key, float value, bool e) {
|
2021-12-25 00:19:58 +01:00
|
|
|
bool ret = true;
|
|
|
|
|
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
|
|
|
|
|
DeserializationError error = deserializeJson(doc, json);
|
|
|
|
|
if (error) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonWrite"), error.f_str());
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2021-12-25 00:19:58 +01:00
|
|
|
ret = false;
|
|
|
|
|
}
|
|
|
|
|
doc[key] = value;
|
|
|
|
|
json = "";
|
|
|
|
|
serializeJson(doc, json);
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-09 21:55:17 +01:00
|
|
|
void writeUint8tValueToJsonString(uint8_t* payload, size_t length, size_t headerLenth, String& json) {
|
|
|
|
|
String payloadStr;
|
|
|
|
|
payloadStr.reserve(length + 1);
|
|
|
|
|
for (size_t i = headerLenth; i < length; i++) {
|
|
|
|
|
payloadStr += (char)payload[i];
|
|
|
|
|
}
|
2022-02-13 16:13:51 +01:00
|
|
|
jsonMergeObjects(json, payloadStr);
|
2022-02-09 21:55:17 +01:00
|
|
|
}
|
|
|
|
|
|
2022-02-22 16:40:46 +01:00
|
|
|
bool jsonMergeObjects(String& json1, String& json2, bool e) {
|
2022-02-09 21:55:17 +01:00
|
|
|
bool ret = true;
|
|
|
|
|
DynamicJsonDocument doc1(JSON_BUFFER_SIZE);
|
|
|
|
|
DeserializationError error1 = deserializeJson(doc1, json1);
|
|
|
|
|
DynamicJsonDocument doc2(JSON_BUFFER_SIZE);
|
|
|
|
|
DeserializationError error2 = deserializeJson(doc2, json2);
|
|
|
|
|
jsonMergeDocs(doc1.as<JsonObject>(), doc2.as<JsonObject>());
|
|
|
|
|
if (error1 || error2) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("json"), "jsonMergeObjects error");
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2022-02-09 21:55:17 +01:00
|
|
|
ret = false;
|
|
|
|
|
}
|
|
|
|
|
json1 = "";
|
|
|
|
|
serializeJson(doc1, json1);
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void jsonMergeDocs(JsonObject dest, JsonObjectConst src) {
|
|
|
|
|
for (auto kvp : src) {
|
|
|
|
|
dest[kvp.key()] = kvp.value();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-24 22:49:06 +01:00
|
|
|
// depricated======================================================================
|
2022-02-22 16:40:46 +01:00
|
|
|
String jsonReadStr(String& json, String name, bool e) {
|
2021-12-24 22:49:06 +01:00
|
|
|
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
|
|
|
|
|
DeserializationError error = deserializeJson(doc, json);
|
2022-02-09 21:55:17 +01:00
|
|
|
if (error) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonRead"), error.f_str());
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2022-02-09 21:55:17 +01:00
|
|
|
}
|
2021-12-24 22:49:06 +01:00
|
|
|
return doc[name].as<String>();
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-22 16:40:46 +01:00
|
|
|
boolean jsonReadBool(String& json, String name, bool e) {
|
2021-12-24 22:49:06 +01:00
|
|
|
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
|
|
|
|
|
DeserializationError error = deserializeJson(doc, json);
|
2022-02-09 21:55:17 +01:00
|
|
|
if (error) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonRead"), error.f_str());
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2022-02-09 21:55:17 +01:00
|
|
|
}
|
2021-12-24 22:49:06 +01:00
|
|
|
return doc[name].as<bool>();
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-22 16:40:46 +01:00
|
|
|
int jsonReadInt(String& json, String name, bool e) {
|
2021-12-24 22:49:06 +01:00
|
|
|
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
|
|
|
|
|
DeserializationError error = deserializeJson(doc, json);
|
2022-02-09 21:55:17 +01:00
|
|
|
if (error) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonRead"), error.f_str());
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2022-02-09 21:55:17 +01:00
|
|
|
}
|
2021-12-24 22:49:06 +01:00
|
|
|
return doc[name].as<int>();
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-22 23:33:47 +01:00
|
|
|
// depricated========================================================================
|
2022-02-22 16:40:46 +01:00
|
|
|
String jsonWriteStr(String& json, String name, String value, bool e) {
|
2021-12-22 23:33:47 +01:00
|
|
|
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
|
|
|
|
|
DeserializationError error = deserializeJson(doc, json);
|
2022-02-09 21:55:17 +01:00
|
|
|
if (error) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonWrite"), error.f_str());
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2022-02-09 21:55:17 +01:00
|
|
|
}
|
2021-12-22 23:33:47 +01:00
|
|
|
doc[name] = value;
|
|
|
|
|
json = "";
|
|
|
|
|
serializeJson(doc, json);
|
|
|
|
|
return json;
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-22 16:40:46 +01:00
|
|
|
String jsonWriteBool(String& json, String name, boolean value, bool e) {
|
2021-12-22 23:33:47 +01:00
|
|
|
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
|
|
|
|
|
DeserializationError error = deserializeJson(doc, json);
|
2022-02-09 21:55:17 +01:00
|
|
|
if (error) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonWrite"), error.f_str());
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2022-02-09 21:55:17 +01:00
|
|
|
}
|
2021-12-22 23:33:47 +01:00
|
|
|
doc[name] = value;
|
|
|
|
|
json = "";
|
|
|
|
|
serializeJson(doc, json);
|
|
|
|
|
return json;
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-22 16:40:46 +01:00
|
|
|
String jsonWriteInt(String& json, String name, int value, bool e) {
|
2021-12-22 23:33:47 +01:00
|
|
|
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
|
|
|
|
|
DeserializationError error = deserializeJson(doc, json);
|
2022-02-09 21:55:17 +01:00
|
|
|
if (error) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonWrite"), error.f_str());
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2022-02-09 21:55:17 +01:00
|
|
|
}
|
2021-12-22 23:33:47 +01:00
|
|
|
doc[name] = value;
|
|
|
|
|
json = "";
|
|
|
|
|
serializeJson(doc, json);
|
|
|
|
|
return json;
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-22 16:40:46 +01:00
|
|
|
String jsonWriteFloat(String& json, String name, float value, bool e) {
|
2021-12-22 23:33:47 +01:00
|
|
|
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
|
|
|
|
|
DeserializationError error = deserializeJson(doc, json);
|
2022-02-09 21:55:17 +01:00
|
|
|
if (error) {
|
2022-02-22 16:40:46 +01:00
|
|
|
if (e) {
|
|
|
|
|
SerialPrint("EE", F("jsonWrite"), error.f_str());
|
|
|
|
|
jsonErrorDetected();
|
|
|
|
|
}
|
2022-02-09 21:55:17 +01:00
|
|
|
}
|
2021-12-22 23:33:47 +01:00
|
|
|
doc[name] = value;
|
|
|
|
|
json = "";
|
|
|
|
|
serializeJson(doc, json);
|
|
|
|
|
return json;
|
|
|
|
|
}
|
2022-02-09 21:55:17 +01:00
|
|
|
|
|
|
|
|
void jsonErrorDetected() {
|
2022-02-12 03:09:57 +01:00
|
|
|
jsonWriteInt(errorsHeapJson, F("jse2"), 1);
|
|
|
|
|
int number = jsonReadInt(errorsHeapJson, F("jse2n"));
|
2022-02-09 21:55:17 +01:00
|
|
|
number++;
|
2022-02-12 03:09:57 +01:00
|
|
|
jsonWriteInt(errorsHeapJson, F("jse2n"), number);
|
2022-02-09 21:55:17 +01:00
|
|
|
}
|