From 8a33fca824bbb3c07d591d4cf06ead8c0dbf89a3 Mon Sep 17 00:00:00 2001 From: Davide Depau <davide@depau.eu> Date: Fri, 2 Jul 2021 23:24:33 +0200 Subject: [PATCH] Kelon: Handle toggles in toCommon() --- src/ir_Kelon.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/ir_Kelon.cpp b/src/ir_Kelon.cpp index 00041126a..7f02e2513 100644 --- a/src/ir_Kelon.cpp +++ b/src/ir_Kelon.cpp @@ -451,10 +451,13 @@ stdAc::state_t IRKelonAc::toCommon(const stdAc::state_t *prev) const { result.sleep = getSleep() ? 0 : -1; // Not supported. // N/A, AC only supports toggling it - result.power = prev == nullptr || prev->power; + result.power = (prev == nullptr || prev->power) ^ _.PowerToggle; // N/A, AC only supports toggling it - result.swingv = prev != nullptr ? prev->swingv : stdAc::swingv_t::kAuto; - // N/A, horizontal air direction can only be set by manually adjusting it + result.swingv = stdAc::swingv_t::kAuto; + if (prev != nullptr && + (prev->swingv == stdAc::swingv_t::kAuto) ^ _.SwingVToggle) { + result.swingv = stdAc::swingv_t::kOff; + } result.swingh = stdAc::swingh_t::kOff; result.light = true; result.beep = true;