From bbf8f4d46e58270963f5289220582860dd4b2a7c Mon Sep 17 00:00:00 2001 From: Andrey Klimov Date: Sat, 21 Aug 2021 03:06:41 +0300 Subject: [PATCH] Refactored core fix --- build-flags/build_flags_mega2560slim2 | 2 +- compiled/lighthub21/firmware.bin | Bin 163552 -> 164488 bytes lighthub/inputs.cpp | 13 +- lighthub/item.cpp | 354 +++++++++++++++----------- lighthub/itemCmd.cpp | 8 +- 5 files changed, 226 insertions(+), 151 deletions(-) diff --git a/build-flags/build_flags_mega2560slim2 b/build-flags/build_flags_mega2560slim2 index 477aa66..79b6129 100644 --- a/build-flags/build_flags_mega2560slim2 +++ b/build-flags/build_flags_mega2560slim2 @@ -17,7 +17,7 @@ -DMOTOR_DISABLE #-DWiz5100 -DARDUINO_OTA_MDNS_DISABLE --DMDNS_ENABLE +#-DMDNS_ENABLE # Example of UARTBRIDGE configuration #-DUARTBRIDGE_ENABLE diff --git a/compiled/lighthub21/firmware.bin b/compiled/lighthub21/firmware.bin index 7f8b42d1651f9804bdbf3ea9791894d9116c2460..95a9ae98c5785415bec532c1d9cdc1c89d03d1c6 100644 GIT binary patch delta 55492 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

{v&7V;x<>h3U%-`-z=P6; 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 diff --git a/lighthub/inputs.cpp b/lighthub/inputs.cpp index 6b23df5..ec54960 100644 --- a/lighthub/inputs.cpp +++ b/lighthub/inputs.cpp @@ -641,16 +641,22 @@ if (newState!=store->state && cause!=CHECK_INTERRUPT) debugSerial<reqState=newState; - store->delayedState=true; + if (newState != store->state) + { + store->reqState=newState; + store->delayedState=true; + } return true; } } +static volatile uint8_t contactPollBusy = 0; + void Input::contactPoll(short cause) { boolean currentInputState; - if (!store) return; + if (!store || contactPollBusy) return; + contactPollBusy++; changeState(IS_REQSTATE,cause); //Check for postponed states transitions @@ -853,6 +859,7 @@ if (cause != CHECK_INTERRUPT) switch (store->state) //Timer based transitions } } else // no change store->bounce = SAME_STATE_ATTEMPTS; +contactPollBusy--; } diff --git a/lighthub/item.cpp b/lighthub/item.cpp index f54691e..7888fe7 100644 --- a/lighthub/item.cpp +++ b/lighthub/item.cpp @@ -680,7 +680,7 @@ int Item::Ctrl(itemCmd cmd, char* subItem, bool allowRecursion) return -1; } cmd.debugOut(); - debugSerial<0); + + if (chActive>0 && !cmd.getInt()) {cmd.Cmd(CMD_OFF);status2Send |= SEND_COMMAND | SEND_IMMEDIATE;} + if (chActive==0 && cmd.getInt()) {cmd.Cmd(CMD_ON);status2Send |= SEND_COMMAND | SEND_IMMEDIATE;} + + // continue processing as SET + case S_SET: + stored.loadItemDef(this); + // if previous color was in RGB notation but new value is HSV - discard previous val and change type; + if ((stored.getArgType() == ST_RGB || stored.getArgType() == ST_RGBW) && + (cmd.getArgType() == ST_HSV255)) + stored.setArgType(cmd.getArgType()); + + if (itemType == CH_GROUP && cmd.isColor()) stored.setArgType(ST_HSV255);//Extend storage for group channel + + //Convert value to most approptiate type for channel + stored.assignFrom(cmd,getChanType()); + stored.debugOut(); + + if ((scale100 || SCALE_VOLUME_100) && (cmd.getArgType()==ST_HSV255 || cmd.getArgType()==ST_PERCENTS255 || cmd.getArgType()==ST_INT32 || cmd.getArgType()==ST_UINT32)) + stored.scale100(); + cmd=stored; + status2Send |= SEND_PARAMETERS | SEND_DEFFERED; + + break; + case S_VAL: + break; + + case S_SAT: + stored.loadItemDef(this); + if (stored.setS(cmd.getS())) + { + cmd=stored; + cmd.setSuffix(S_SET); + status2Send |= SEND_PARAMETERS | SEND_DEFFERED; + } else invalidArgument=true; + break; + + case S_HUE: + stored.loadItemDef(this); + if (stored.setH(cmd.getH())) + { + cmd=stored; + cmd.setSuffix(S_SET); + status2Send |= SEND_PARAMETERS | SEND_DEFFERED; + } else invalidArgument=true; + break; + case S_TEMP: + stored.loadItemDef(this); + stored.setColorTemp(cmd.getColorTemp()); + cmd=stored; + status2Send |= SEND_PARAMETERS | SEND_DEFFERED; + } + + } + break; case CMD_TOGGLE: chActive=(isActive()>0); toExecute=true; @@ -730,88 +796,13 @@ int Item::Ctrl(itemCmd cmd, char* subItem, bool allowRecursion) cmd.Cmd(CMD_ON); } status2Send |=SEND_COMMAND | SEND_IMMEDIATE; - break; - // TBD - INCREMENT-DECREMENT - } - - /// + break; - if (itemType==CH_GROUP) - { - - if (allowRecursion && itemArg->type == aJson_Array && operation) - { - digGroup(itemArg,&cmd,subItem); - status2Send |= SEND_COMMAND | SEND_PARAMETERS | SEND_IMMEDIATE; - res=1; - } - // return 1; - } // GROUP - - else - { // NON GROUP part - if (chActive<0) chActive = (isActive()>0); - toExecute=chActive || toExecute; // Execute if active - - if (subItem) - { - //Check if subitem is some sort of command - int subitemCmd = subitem2cmd(subItem); - short prevCmd = getCmd(); - if (!prevCmd && chActive) prevCmd=CMD_ON; - - if (subitemCmd) //Find some COMMAND in subitem - { - if (subitemCmd != prevCmd) - { - debugSerial<0 && !cmd.getInt()) {cmd.Cmd(CMD_OFF);status2Send |= SEND_COMMAND | SEND_IMMEDIATE;} - if (chActive==0 && cmd.getInt()) {cmd.Cmd(CMD_ON);status2Send |= SEND_COMMAND | SEND_IMMEDIATE;} - - // continue processing as SET - case S_SET: - stored.loadItemDef(this); - // if previous color was in RGB notation but new value is HSV - discard previous val and change type; - if ((stored.getArgType() == ST_RGB || stored.getArgType() == ST_RGBW) && - (cmd.getArgType() == ST_HSV255)) - stored.setArgType(cmd.getArgType()); + break; + // + } + if (itemType==CH_GROUP) + { + if (allowRecursion && itemArg->type == aJson_Array && operation) + { + digGroup(itemArg,&cmd,subItem); + res=1; + } - //if (itemType == CH_GROUP && cmd.isColor()) stored.setArgType(ST_HSV255);//Extend storage for group channel - - //Convert value to most approptiate type for channel - stored.assignFrom(cmd,getChanType()); - if (scale100 || SCALE_VOLUME_100) stored.scale100(); - cmd=stored; - status2Send |= SEND_PARAMETERS | SEND_DEFFERED; - - break; - case S_VAL: - break; - - case S_SAT: - stored.loadItemDef(this); - if (stored.setS(cmd.getS())) - { - cmd=stored; - cmd.setSuffix(S_SET); - status2Send |= SEND_PARAMETERS | SEND_DEFFERED; - } - break; - - case S_HUE: - stored.loadItemDef(this); - if (stored.setH(cmd.getH())) - { - cmd=stored; - cmd.setSuffix(S_SET); - status2Send |= SEND_PARAMETERS | SEND_DEFFERED; - } - break; - case S_TEMP: - stored.loadItemDef(this); - stored.setColorTemp(cmd.getColorTemp()); - cmd=stored; - status2Send |= SEND_PARAMETERS | SEND_DEFFERED; - } - - } - break; + // Post-processing of group command - converting HALT,REST,XON,XOFF to conventional ON/OFF for status + switch (cmd.getCmd()) { + int t; + case CMD_RESTORE: // individual for group members + switch (t = getCmd()) { + case CMD_HALT: //previous command was HALT ? + debugSerial << F("Restored from:") << t << endl; + cmd.loadItemDef(this); + cmd.Cmd(CMD_ON); //turning on + break; + default: + return -3; + } + status2Send |= SEND_COMMAND; + break; + case CMD_XOFF: // individual for group members + switch (t = getCmd()) { + case CMD_XON: //previous command was CMD_XON ? + debugSerial << F("Turned off from:") << t << endl; + cmd.Cmd(CMD_OFF); //turning Off + status2Send |= SEND_COMMAND | SEND_IMMEDIATE; + break; + default: + debugSerial << F("XOFF skipped. Prev cmd:") << t <0); + toExecute=chActive || toExecute; // Execute if active + debugSerial<name, sizeof(addrstr)-1); diff --git a/lighthub/itemCmd.cpp b/lighthub/itemCmd.cpp index 72a2668..427c827 100644 --- a/lighthub/itemCmd.cpp +++ b/lighthub/itemCmd.cpp @@ -106,7 +106,7 @@ uint8_t itemCmd::getStoragetypeByChanType(short chanType) case CH_RELAY: case CH_VC: case CH_MODBUS: - case CH_GROUP: + //case CH_GROUP: return ST_PERCENTS255; break; default: @@ -936,7 +936,7 @@ bool itemCmd::loadItem(Item * item, uint16_t optionsFlag) { cmd.itemArgType= subtype; if (optionsFlag & SEND_PARAMETERS) param.asInt32 = item->getVal(); - debugSerial<itemVal->valueint); - debugSerial<itemVal->valueint); - debugSerial<