From 03879d6aed085b4fe32c493968ac71b5066a0cb2 Mon Sep 17 00:00:00 2001 From: Andreas Schiffler Date: Thu, 11 Aug 2022 13:25:28 +0200 Subject: [PATCH] bugfix pointer to power limit --- tools/esp8266/app.h | 2 +- tools/esp8266/hmRadio.h | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/tools/esp8266/app.h b/tools/esp8266/app.h index 8c563fe1..0014e68e 100644 --- a/tools/esp8266/app.h +++ b/tools/esp8266/app.h @@ -22,7 +22,7 @@ // // #define __MQTT_TEST__ // MQTT Interval wird auf 10 Sekunden verkürzt ( nur für testzwecke ) #define __MQTT_AFTER_RX__ // versendet die MQTT Daten sobald die WR daten Aufbereitet wurden ( gehört eigentlich ins Setup ) -// #define __MQTT_NO_DISCOVERCONFIG__ // das versenden der MQTTDiscoveryConfig abschalten ( gehört eigentlich ins Setup ) +#define __MQTT_NO_DISCOVERCONFIG__ // das versenden der MQTTDiscoveryConfig abschalten ( gehört eigentlich ins Setup ) typedef CircularBuffer BufferType; typedef HmRadio RadioType; diff --git a/tools/esp8266/hmRadio.h b/tools/esp8266/hmRadio.h index 23573dfd..a5c6f863 100644 --- a/tools/esp8266/hmRadio.h +++ b/tools/esp8266/hmRadio.h @@ -172,16 +172,17 @@ class HmRadio { // 4 bytes control data // Power Limit fix point 10 eg. 30 W --> 0d300 = 0x012c // -1 = 0xffff --> no limit - 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 + uint16_t powerLimit = data[0]; + uint16_t powerLimitSetting = data[1]; + if (powerLimit == 0xffff){ + powerLimit &= 0xffff; // ToDo: unlimit value is needed and is inverter specific! --> get it via RF from inverter or via user interface } else { - data[0] *= 10; // will overwrite the data bc it is a pointer + powerLimit *= 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! + mTxBuf[10 + (++cnt)] = (powerLimit >> 8) & 0xff; // power limit + mTxBuf[10 + (++cnt)] = (powerLimit ) & 0xff; // power limit + mTxBuf[10 + (++cnt)] = (powerLimitSetting >> 8) & 0xff; // setting for persistens handling + mTxBuf[10 + (++cnt)] = (powerLimitSetting ) & 0xff; // setting for persistens handling } // crc control data uint16_t crc = crc16(&mTxBuf[10], cnt+1);