From 03bb7fbb889e15a3bdb4b655d1e977d5ab83de30 Mon Sep 17 00:00:00 2001 From: Andreas Schiffler Date: Sun, 7 Aug 2022 18:42:21 +0200 Subject: [PATCH] bugfix pointer for pwr limit data --- tools/esp8266/app.cpp | 8 ++++---- tools/esp8266/hmRadio.h | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/tools/esp8266/app.cpp b/tools/esp8266/app.cpp index 217eeec9..519e070e 100644 --- a/tools/esp8266/app.cpp +++ b/tools/esp8266/app.cpp @@ -84,10 +84,10 @@ void app::setup(uint32_t timeout) { if(0ULL != invSerial) { iv = mSys->addInverter(name, invSerial, modPwr); if(NULL != iv) { - mEep->read(ADDR_INV_PWR_LIM + (i * 2),&iv->powerLimit[0]); + mEep->read(ADDR_INV_PWR_LIM + (i * 2),(uint16_t *)&(iv->powerLimit[0])); if (iv->powerLimit[0] != 0xffff) { // only set it, if it is changed by user. Default value in the html setup page is -1 = 0xffff iv->powerLimit[1] = 0x0100; // set the limit as persistent - iv->devControlCmd = 11; // set active power limit + iv->devControlCmd = ActivePowerContr; // set active power limit iv->devControlRequest = true; // set to true to update the active power limit from setup html page DPRINTLN(DBG_INFO, F("add inverter: ") + String(name) + ", SN: " + String(invSerial, HEX) + ", Power Limit: " + String(iv->powerLimit[0])); } @@ -304,7 +304,7 @@ void app::loop(void) { default: if (iv->devControlCmd == ActivePowerContr){ //case inverter did not accept the sent limit; set back to last stored limit - mEep->read(ADDR_INV_PWR_LIM + iv->id * 2, &iv->powerLimit[0]); + mEep->read(ADDR_INV_PWR_LIM + iv->id * 2, (uint16_t *)&(iv->powerLimit[0])); DPRINTLN(DBG_INFO, F("Inverter has not accepted power limit set point")); } iv->devControlCmd = Init; @@ -571,7 +571,7 @@ void app::showSetup(void) { mEep->read(ADDR_INV_ADDR + (i * 8), &invSerial); mEep->read(ADDR_INV_NAME + (i * MAX_NAME_LENGTH), name, MAX_NAME_LENGTH); mEep->read(ADDR_INV_CH_PWR + (i * 2 * 4), modPwr, 4); - mEep->read(ADDR_INV_PWR_LIM + (i * 2),&invActivePowerLimit); + mEep->read(ADDR_INV_PWR_LIM + (i * 2),(uint16_t *) &invActivePowerLimit); inv += F("

Inverter ") + String(i) + "

"; inv += F(""); diff --git a/tools/esp8266/hmRadio.h b/tools/esp8266/hmRadio.h index 55d6fed8..b64591ad 100644 --- a/tools/esp8266/hmRadio.h +++ b/tools/esp8266/hmRadio.h @@ -176,12 +176,13 @@ class HmRadio { if (data[0] == 0xffff){ data[0] &= 0xffff; // ToDo: unlimit value is needed and is inverter specific! --> get it via RF from inverter or via user interface } else { - data[0] *= 10; + data[0] *= 10; // will overwrite the data bc it is a pointer } mTxBuf[10 + (++cnt)] = (data[0] >> 8) & 0xff; // power limit mTxBuf[10 + (++cnt)] = (data[0] ) & 0xff; // power limit mTxBuf[10 + (++cnt)] = (data[1] >> 8) & 0xff; // setting for persistens handling mTxBuf[10 + (++cnt)] = (data[1] ) & 0xff; // setting for persistens handling + data[0] /= 10; // UGLY! } // crc control data uint16_t crc = crc16(&mTxBuf[10], cnt+1);