fix: Invalid 'active' state of Sticky LS when no source set (#1430)
* The set/reset switches for a logical switch are only processed if the are valid. * added coment * Move / elaborate on comment Co-authored-by: Peter Feerick <peter.feerick@gmail.com>
This commit is contained in:
+16
-12
@@ -908,22 +908,26 @@ void logicalSwitchesTimerTick()
|
||||
ls_sticky_struct & lastValue = (ls_sticky_struct &)LS_LAST_VALUE(fm, i);
|
||||
bool before = lastValue.last & 0x01;
|
||||
if (lastValue.state) {
|
||||
bool now = getSwitch(ls->v2);
|
||||
if (now != before) {
|
||||
lastValue.last ^= 1;
|
||||
if (!before) {
|
||||
lastValue.state = 0;
|
||||
if (ls->v2 != SWSRC_NONE) { // only if used / source set
|
||||
bool now = getSwitch(ls->v2);
|
||||
if (now != before) {
|
||||
lastValue.last ^= 1;
|
||||
if (!before) {
|
||||
lastValue.state = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
bool now = getSwitch(ls->v1);
|
||||
if (before != now) {
|
||||
lastValue.last ^= 1;
|
||||
if (!before) {
|
||||
lastValue.state = 1;
|
||||
if (ls->v1 != SWSRC_NONE) { // only if used / source set
|
||||
bool now = getSwitch(ls->v1);
|
||||
if (before != now) {
|
||||
lastValue.last ^= 1;
|
||||
if (!before) {
|
||||
lastValue.state = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (ls->func == LS_FUNC_EDGE) {
|
||||
|
||||
Reference in New Issue
Block a user