Browse Source

speed up set power limit

pull/240/head
Andreas Schiffler 2 years ago
parent
commit
6be2b0979f
  1. 7
      tools/esp8266/app.cpp
  2. 1
      tools/esp8266/app.h
  3. 6
      tools/esp8266/hmInverter.h

7
tools/esp8266/app.cpp

@ -89,6 +89,7 @@ void app::loop(void) {
if(0 != len) { if(0 != len) {
Inverter<> *iv = mSys->findInverter(&p->packet[1]); Inverter<> *iv = mSys->findInverter(&p->packet[1]);
if(NULL != iv && p->packet[0] == (TX_REQ_INFO + 0x80)) { // response from get information command if(NULL != iv && p->packet[0] == (TX_REQ_INFO + 0x80)) { // response from get information command
mPayload[iv->id].txId = p->packet[0];
DPRINTLN(DBG_DEBUG, F("Response from info request received")); DPRINTLN(DBG_DEBUG, F("Response from info request received"));
uint8_t *pid = &p->packet[9]; uint8_t *pid = &p->packet[9];
if (*pid == 0x00) if (*pid == 0x00)
@ -115,6 +116,7 @@ void app::loop(void) {
} }
} }
if(NULL != iv && p->packet[0] == (TX_REQ_DEVCONTROL + 0x80)) { // response from dev control command if(NULL != iv && p->packet[0] == (TX_REQ_DEVCONTROL + 0x80)) { // response from dev control command
mPayload[iv->id].txId = p->packet[0];
DPRINTLN(DBG_DEBUG, F("Response from devcontrol request received")); DPRINTLN(DBG_DEBUG, F("Response from devcontrol request received"));
iv->devControlRequest = false; iv->devControlRequest = false;
switch (p->packet[12]) { switch (p->packet[12]) {
@ -248,6 +250,7 @@ void app::loop(void) {
if(mConfig.serialDebug) if(mConfig.serialDebug)
DPRINTLN(DBG_INFO, F("Devcontrol request ") + String(iv->devControlCmd) + F(" power limit ") + String(iv->powerLimit[0])); DPRINTLN(DBG_INFO, F("Devcontrol request ") + String(iv->devControlCmd) + F(" power limit ") + String(iv->powerLimit[0]));
mSys->Radio.sendControlPacket(iv->radioId.u64, iv->devControlCmd ,iv->powerLimit); mSys->Radio.sendControlPacket(iv->radioId.u64, iv->devControlCmd ,iv->powerLimit);
iv->clearCmdQueue();
iv->enqueCommand<InfoCommand>(SystemConfigPara); iv->enqueCommand<InfoCommand>(SystemConfigPara);
} else { } else {
mSys->Radio.sendTimePacket(iv->radioId.u64,iv->getQueuedCmd(), mPayload[iv->id].ts,iv->alarmMesIndex); mSys->Radio.sendTimePacket(iv->radioId.u64,iv->getQueuedCmd(), mPayload[iv->id].ts,iv->alarmMesIndex);
@ -306,6 +309,10 @@ void app::processPayload(bool retransmit) {
for(uint8_t id = 0; id < mSys->getNumInverters(); id++) { for(uint8_t id = 0; id < mSys->getNumInverters(); id++) {
Inverter<> *iv = mSys->getInverterByPos(id); Inverter<> *iv = mSys->getInverterByPos(id);
if(NULL != iv) { if(NULL != iv) {
if(mPayload[iv->id].txId != (TX_REQ_INFO + 0x80)) {
// no processing needed if txId is not 0x95
mPayload[iv->id].complete = true;
}
if(!mPayload[iv->id].complete ) { if(!mPayload[iv->id].complete ) {
if(!buildPayload(iv->id)) { if(!buildPayload(iv->id)) {
if(mPayload[iv->id].requested) { if(mPayload[iv->id].requested) {

1
tools/esp8266/app.h

@ -45,6 +45,7 @@ const char* const pinArgNames[] = {"pinCs", "pinCe", "pinIrq"};
typedef struct { typedef struct {
uint8_t txId;
uint8_t invId; uint8_t invId;
uint32_t ts; uint32_t ts;
uint8_t data[MAX_PAYLOAD_ENTRIES][MAX_RF_PAYLOAD_SIZE]; uint8_t data[MAX_PAYLOAD_ENTRIES][MAX_RF_PAYLOAD_SIZE];

6
tools/esp8266/hmInverter.h

@ -149,6 +149,12 @@ class Inverter {
} }
} }
void clearCmdQueue(){
while (!_commandQueue.empty()){
// Will destroy CommandAbstract Class Object (?)
_commandQueue.pop();
}
}
uint8_t getQueuedCmd() uint8_t getQueuedCmd()
{ {
if (_commandQueue.empty()){ if (_commandQueue.empty()){

Loading…
Cancel
Save