Update switch comments

This commit is contained in:
Theo Arends 2023-08-17 23:28:27 +02:00
parent b8804cf2a8
commit 2eaa0fcb67

View File

@ -349,27 +349,27 @@ void SwitchHandler(void) {
if (button != Switch.last_state[i]) { // This implies if ((PRESSED == button) then (NOT_PRESSED == Switch.last_state[i])) if (button != Switch.last_state[i]) { // This implies if ((PRESSED == button) then (NOT_PRESSED == Switch.last_state[i]))
switch (switchmode) { switch (switchmode) {
case TOGGLE: case TOGGLE: // SwitchMode 0
case PUSHBUTTON_TOGGLE: case PUSHBUTTON_TOGGLE: // SwitchMode 7
switchflag = POWER_TOGGLE; // Toggle switchflag = POWER_TOGGLE; // Toggle
break; break;
case FOLLOW: case FOLLOW: // SwitchMode 1
switchflag = button &1; // Follow wall switch state switchflag = button &1; // Follow wall switch state
break; break;
case FOLLOW_INV: case FOLLOW_INV: // SwitchMode 2
switchflag = ~button &1; // Follow inverted wall switch state switchflag = ~button &1; // Follow inverted wall switch state
break; break;
case PUSHBUTTON: case PUSHBUTTON: // SwitchMode 3
if (PRESSED == button) { if (PRESSED == button) {
switchflag = POWER_TOGGLE; // Toggle with pushbutton to Gnd switchflag = POWER_TOGGLE; // Toggle with pushbutton to Gnd
} }
break; break;
case PUSHBUTTON_INV: case PUSHBUTTON_INV: // SwitchMode 4
if (NOT_PRESSED == button) { if (NOT_PRESSED == button) {
switchflag = POWER_TOGGLE; // Toggle with releasing pushbutton from Gnd switchflag = POWER_TOGGLE; // Toggle with releasing pushbutton from Gnd
} }
break; break;
case PUSHBUTTONHOLD: case PUSHBUTTONHOLD: // SwitchMode 5
if (PRESSED == button) { if (PRESSED == button) {
Switch.hold_timer[i] = loops_per_second * Settings->param[P_HOLD_TIME] / 10; // Start timer on button press Switch.hold_timer[i] = loops_per_second * Settings->param[P_HOLD_TIME] / 10; // Start timer on button press
} }
@ -378,7 +378,7 @@ void SwitchHandler(void) {
switchflag = POWER_TOGGLE; // ...and Toggle switchflag = POWER_TOGGLE; // ...and Toggle
} }
break; break;
case PUSHBUTTONHOLD_INV: case PUSHBUTTONHOLD_INV: // SwitchMode 6
if (NOT_PRESSED == button) { if (NOT_PRESSED == button) {
Switch.hold_timer[i] = loops_per_second * Settings->param[P_HOLD_TIME] / 10; // Start timer on button press... Switch.hold_timer[i] = loops_per_second * Settings->param[P_HOLD_TIME] / 10; // Start timer on button press...
} }
@ -387,9 +387,9 @@ void SwitchHandler(void) {
switchflag = POWER_TOGGLE; // ...and Toggle switchflag = POWER_TOGGLE; // ...and Toggle
} }
break; break;
case TOGGLEMULTI: case TOGGLEMULTI: // SwitchMode 8
case FOLLOWMULTI: case FOLLOWMULTI: // SwitchMode 9
case FOLLOWMULTI_INV: case FOLLOWMULTI_INV: // SwitchMode 10
if (Switch.hold_timer[i]) { if (Switch.hold_timer[i]) {
Switch.hold_timer[i] = 0; Switch.hold_timer[i] = 0;
SendKey(KEY_SWITCH, i +1, POWER_HOLD); // Execute command via MQTT SendKey(KEY_SWITCH, i +1, POWER_HOLD); // Execute command via MQTT
@ -398,7 +398,7 @@ void SwitchHandler(void) {
Switch.hold_timer[i] = loops_per_second / 2; // 0.5 second multi press window Switch.hold_timer[i] = loops_per_second / 2; // 0.5 second multi press window
} }
break; break;
case PUSHHOLDMULTI: case PUSHHOLDMULTI: // SwitchMode 11
if (NOT_PRESSED == button) { if (NOT_PRESSED == button) {
if ((Switch.hold_timer[i] & SM_TIMER_MASK) != 0) { if ((Switch.hold_timer[i] & SM_TIMER_MASK) != 0) {
Switch.hold_timer[i] = ((Switch.hold_timer[i] & ~SM_TIMER_MASK) == SM_FIRST_PRESS) ? SM_SECOND_PRESS : 0; Switch.hold_timer[i] = ((Switch.hold_timer[i] & ~SM_TIMER_MASK) == SM_FIRST_PRESS) ? SM_SECOND_PRESS : 0;
@ -424,7 +424,7 @@ void SwitchHandler(void) {
} }
Switch.hold_timer[i] = (Switch.hold_timer[i] & ~SM_TIMER_MASK) | loops_per_second * Settings->param[P_HOLD_TIME] / 10; Switch.hold_timer[i] = (Switch.hold_timer[i] & ~SM_TIMER_MASK) | loops_per_second * Settings->param[P_HOLD_TIME] / 10;
break; break;
case PUSHHOLDMULTI_INV: case PUSHHOLDMULTI_INV: // SwitchMode 12
if (PRESSED == button) { if (PRESSED == button) {
if ((Switch.hold_timer[i] & SM_TIMER_MASK) != 0) { if ((Switch.hold_timer[i] & SM_TIMER_MASK) != 0) {
Switch.hold_timer[i] = ((Switch.hold_timer[i] & ~SM_TIMER_MASK) == SM_FIRST_PRESS) ? SM_SECOND_PRESS : 0; Switch.hold_timer[i] = ((Switch.hold_timer[i] & ~SM_TIMER_MASK) == SM_FIRST_PRESS) ? SM_SECOND_PRESS : 0;
@ -450,18 +450,18 @@ void SwitchHandler(void) {
} }
Switch.hold_timer[i] = (Switch.hold_timer[i] & ~SM_TIMER_MASK) | loops_per_second * Settings->param[P_HOLD_TIME] / 10; Switch.hold_timer[i] = (Switch.hold_timer[i] & ~SM_TIMER_MASK) | loops_per_second * Settings->param[P_HOLD_TIME] / 10;
break; break;
case PUSHON: case PUSHON: // SwitchMode 13
if (PRESSED == button) { if (PRESSED == button) {
switchflag = POWER_ON; // Power ON with pushbutton to Gnd switchflag = POWER_ON; // Power ON with pushbutton to Gnd
} }
break; break;
case PUSHON_INV: case PUSHON_INV: // SwitchMode 14
if (NOT_PRESSED == button) { if (NOT_PRESSED == button) {
switchflag = POWER_ON; // Power ON with releasing pushbutton from Gnd switchflag = POWER_ON; // Power ON with releasing pushbutton from Gnd
} }
break; break;
case PUSH_IGNORE: case PUSH_IGNORE: // SwitchMode 15
case PUSH_IGNORE_INV: case PUSH_IGNORE_INV: // SwitchMode 16
Switch.last_state[i] = button; // Update switch state before publishing Switch.last_state[i] = button; // Update switch state before publishing
MqttPublishSensor(); MqttPublishSensor();
break; break;
@ -469,14 +469,14 @@ void SwitchHandler(void) {
Switch.last_state[i] = button; Switch.last_state[i] = button;
} }
if (switchflag <= POWER_TOGGLE) { if (switchflag <= POWER_TOGGLE) {
if (!Settings->flag5.mqtt_switches) { // SetOption114 (0) - Detach Switches from relays and enable MQTT action state for all the SwitchModes if (!Settings->flag5.mqtt_switches) { // SetOption114 (0) - Detach Switches from relays and enable MQTT action state for all the SwitchModes
if (!SendKey(KEY_SWITCH, i +1, switchflag)) { // Execute command via MQTT if (!SendKey(KEY_SWITCH, i +1, switchflag)) { // Execute command via MQTT
ExecuteCommandPower(i +1, switchflag, SRC_SWITCH); // Execute command internally (if i < TasmotaGlobal.devices_present) ExecuteCommandPower(i +1, switchflag, SRC_SWITCH); // Execute command internally (if i < TasmotaGlobal.devices_present)
} }
} else { mqtt_action = switchflag; } } else { mqtt_action = switchflag; }
} }
if ((mqtt_action != POWER_NONE) && Settings->flag5.mqtt_switches) { // SetOption114 (0) - Detach Switches from relays and enable MQTT action state for all the SwitchModes if ((mqtt_action != POWER_NONE) && Settings->flag5.mqtt_switches) { // SetOption114 (0) - Detach Switches from relays and enable MQTT action state for all the SwitchModes
if (!Settings->flag.hass_discovery) { // SetOption19 - Control Home Assistant automatic discovery (See SetOption59) if (!Settings->flag.hass_discovery) { // SetOption19 - Control Home Assistant automatic discovery (See SetOption59)
char mqtt_state_str[16]; char mqtt_state_str[16];
char *mqtt_state = mqtt_state_str; char *mqtt_state = mqtt_state_str;
if (mqtt_action <= 3) { if (mqtt_action <= 3) {