Skip to content

Commit

Permalink
0.8.8
Browse files Browse the repository at this point in the history
* fix ESP8266 save inverter #1232
  • Loading branch information
lumapu committed Nov 16, 2023
1 parent 1bc3a0f commit 972b033
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 11 deletions.
3 changes: 3 additions & 0 deletions src/CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Development Changes

## 0.8.8 - 2023-11-16
* fix ESP8266 save inverter #1232

## 0.8.7 - 2023-11-13
* fix ESP8266 inverter settings #1226
* send radio statistics via MqTT #1227
Expand Down
2 changes: 1 addition & 1 deletion src/defines.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
//-------------------------------------
#define VERSION_MAJOR 0
#define VERSION_MINOR 8
#define VERSION_PATCH 7
#define VERSION_PATCH 8

//-------------------------------------
typedef struct {
Expand Down
36 changes: 27 additions & 9 deletions src/web/RestApi.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,12 +124,26 @@ class RestApi {

void onApiPostBody(AsyncWebServerRequest *request, uint8_t *data, size_t len, size_t index, size_t total) {
DPRINTLN(DBG_VERBOSE, "onApiPostBody");
DynamicJsonDocument json(800);
AsyncJsonResponse* response = new AsyncJsonResponse(false, 200);
JsonObject root = response->getRoot();

DeserializationError err = deserializeJson(json, (const char *)data, len);
if(0 == index) {
if(NULL != mTmpBuf)
delete[] mTmpBuf;
mTmpBuf = new uint8_t[total+1];
mTmpSize = total;
}
if(mTmpSize >= (len + index))
memcpy(&mTmpBuf[index], data, len);

if((len + index) != total)
return; // not last frame - nothing to do

DynamicJsonDocument json(1000);

DeserializationError err = deserializeJson(json, (const char *)mTmpBuf, mTmpSize);
JsonObject obj = json.as<JsonObject>();

AsyncJsonResponse* response = new AsyncJsonResponse(false, 200);
JsonObject root = response->getRoot();
root[F("success")] = (err) ? false : true;
if(!err) {
String path = request->url().substring(5);
Expand All @@ -141,18 +155,20 @@ class RestApi {
root[F("success")] = false;
root[F("error")] = "Path not found: " + path;
}
}
else {
} else {
switch (err.code()) {
case DeserializationError::Ok: break;
case DeserializationError::InvalidInput: root[F("error")] = F("Invalid input"); break;
case DeserializationError::NoMemory: root[F("error")] = F("Not enough memory"); break;
default: root[F("error")] = F("Deserialization failed"); break;
case DeserializationError::IncompleteInput: root[F("error")] = F("Incomplete input"); break;
case DeserializationError::InvalidInput: root[F("error")] = F("Invalid input"); break;
case DeserializationError::NoMemory: root[F("error")] = F("Not enough memory"); break;
default: root[F("error")] = F("Deserialization failed"); break;
}
}

response->setLength();
request->send(response);
delete[] mTmpBuf;
mTmpBuf = NULL;
}

void getNotFound(JsonObject obj, String url) {
Expand Down Expand Up @@ -760,6 +776,8 @@ class RestApi {
uint32_t mTimezoneOffset;
uint32_t mHeapFree, mHeapFreeBlk;
uint8_t mHeapFrag;
uint8_t *mTmpBuf = NULL;
uint32_t mTmpSize;
};

#endif /*__WEB_API_H__*/
2 changes: 1 addition & 1 deletion src/web/html/setup.html
Original file line number Diff line number Diff line change
Expand Up @@ -798,7 +798,7 @@
function cb(obj) {
var e = document.getElementById("res");
if(!obj.success)
e.innerHTML = "error while saving";
e.innerHTML = "error: " + obj.error;
else {
modalClose();
getAjax("/api/inverter/list", parseIv);
Expand Down

0 comments on commit 972b033

Please sign in to comment.