From f1a2894066f2bc59b46c2aa6ce6eab075a492323 Mon Sep 17 00:00:00 2001 From: PtilopsisLeucotis Date: Sat, 16 Oct 2021 17:22:50 +0300 Subject: [PATCH 01/15] Rename Swing to SwingV for vertical swing --- src/IRac.cpp | 6 +- src/ir_Haier.cpp | 128 +++++++++++++++++----------------- src/ir_Haier.h | 60 ++++++++-------- test/IRac_test.cpp | 6 +- test/ir_Haier_test.cpp | 152 ++++++++++++++++++++--------------------- 5 files changed, 176 insertions(+), 176 deletions(-) diff --git a/src/IRac.cpp b/src/IRac.cpp index e3e0874ba..c82be8668 100644 --- a/src/IRac.cpp +++ b/src/IRac.cpp @@ -1086,7 +1086,7 @@ void IRac::haier(IRHaierAC *ac, ac->setMode(ac->convertMode(mode)); ac->setTemp(degrees); ac->setFan(ac->convertFan(fan)); - ac->setSwing(ac->convertSwingV(swingv)); + ac->setSwingV(ac->convertSwingV(swingv)); // No Horizontal Swing setting available. // No Quiet setting available. // No Turbo setting available. @@ -1125,7 +1125,7 @@ void IRac::haier176(IRHaierAC176 *ac, ac->setMode(ac->convertMode(mode)); ac->setTemp(degrees); ac->setFan(ac->convertFan(fan)); - ac->setSwing(ac->convertSwingV(swingv)); + ac->setSwingV(ac->convertSwingV(swingv)); // No Horizontal Swing setting available. ac->setQuiet(quiet); ac->setTurbo(turbo); @@ -1161,7 +1161,7 @@ void IRac::haierYrwo2(IRHaierACYRW02 *ac, ac->setMode(ac->convertMode(mode)); ac->setTemp(degrees); ac->setFan(ac->convertFan(fan)); - ac->setSwing(ac->convertSwingV(swingv)); + ac->setSwingV(ac->convertSwingV(swingv)); // No Horizontal Swing setting available. ac->setQuiet(quiet); ac->setTurbo(turbo); diff --git a/src/ir_Haier.cpp b/src/ir_Haier.cpp index 41e40541a..6e22140e1 100644 --- a/src/ir_Haier.cpp +++ b/src/ir_Haier.cpp @@ -162,7 +162,7 @@ void IRHaierAC::setCommand(const uint8_t command) { case kHaierAcCmdTimerSet: case kHaierAcCmdTimerCancel: case kHaierAcCmdHealth: - case kHaierAcCmdSwing: + case kHaierAcCmdSwingV: _.Command = command; } } @@ -322,22 +322,22 @@ void IRHaierAC::setCurrTime(const uint16_t nr_mins) { } /// Get the Vertical Swing position setting of the A/C. -/// @return The native swing mode. -uint8_t IRHaierAC::getSwing(void) const { - return _.Swing; +/// @return The native vertical swing mode. +uint8_t IRHaierAC::getSwingV(void) const { + return _.SwingV; } /// Set the Vertical Swing mode of the A/C. /// @param[in] state The mode to set the vanes to. -void IRHaierAC::setSwing(const uint8_t state) { - if (state == _.Swing) return; // Nothing to do. +void IRHaierAC::setSwingV(const uint8_t state) { + if (state == _.SwingV) return; // Nothing to do. switch (state) { - case kHaierAcSwingOff: - case kHaierAcSwingUp: - case kHaierAcSwingDown: - case kHaierAcSwingChg: - _.Command = kHaierAcCmdSwing; - _.Swing = state; + case kHaierAcSwingVOff: + case kHaierAcSwingVUp: + case kHaierAcSwingVDown: + case kHaierAcSwingVChg: + _.Command = kHaierAcCmdSwingV; + _.SwingV = state; break; } } @@ -376,11 +376,11 @@ uint8_t IRHaierAC::convertSwingV(const stdAc::swingv_t position) { switch (position) { case stdAc::swingv_t::kHighest: case stdAc::swingv_t::kHigh: - case stdAc::swingv_t::kMiddle: return kHaierAcSwingUp; + case stdAc::swingv_t::kMiddle: return kHaierAcSwingVUp; case stdAc::swingv_t::kLow: - case stdAc::swingv_t::kLowest: return kHaierAcSwingDown; - case stdAc::swingv_t::kOff: return kHaierAcSwingOff; - default: return kHaierAcSwingChg; + case stdAc::swingv_t::kLowest: return kHaierAcSwingVDown; + case stdAc::swingv_t::kOff: return kHaierAcSwingVOff; + default: return kHaierAcSwingVChg; } } @@ -414,9 +414,9 @@ stdAc::fanspeed_t IRHaierAC::toCommonFanSpeed(const uint8_t speed) { /// @return The native equivalent of the enum. stdAc::swingv_t IRHaierAC::toCommonSwingV(const uint8_t pos) { switch (pos) { - case kHaierAcSwingUp: return stdAc::swingv_t::kHighest; - case kHaierAcSwingDown: return stdAc::swingv_t::kLowest; - case kHaierAcSwingOff: return stdAc::swingv_t::kOff; + case kHaierAcSwingVUp: return stdAc::swingv_t::kHighest; + case kHaierAcSwingVDown: return stdAc::swingv_t::kLowest; + case kHaierAcSwingVOff: return stdAc::swingv_t::kOff; default: return stdAc::swingv_t::kAuto; } } @@ -433,7 +433,7 @@ stdAc::state_t IRHaierAC::toCommon(void) const { result.celsius = true; result.degrees = getTemp(); result.fanspeed = toCommonFanSpeed(getFan()); - result.swingv = toCommonSwingV(_.Swing); + result.swingv = toCommonSwingV(_.SwingV); result.filter = _.Health; result.sleep = _.Sleep ? 0 : -1; // Not supported. @@ -491,8 +491,8 @@ String IRHaierAC::toString(void) const { case kHaierAcCmdHealth: result += kHealthStr; break; - case kHaierAcCmdSwing: - result += kSwingStr; + case kHaierAcCmdSwingV: + result += kSwingVStr; break; default: result += kUnknownStr; @@ -503,19 +503,19 @@ String IRHaierAC::toString(void) const { result += addTempToString(getTemp()); result += addFanToString(getFan(), kHaierAcFanHigh, kHaierAcFanLow, kHaierAcFanAuto, kHaierAcFanAuto, kHaierAcFanMed); - result += addIntToString(_.Swing, kSwingStr); + result += addIntToString(_.SwingV, kSwingVStr); result += kSpaceLBraceStr; - switch (_.Swing) { - case kHaierAcSwingOff: + switch (_.SwingV) { + case kHaierAcSwingVOff: result += kOffStr; break; - case kHaierAcSwingUp: + case kHaierAcSwingVUp: result += kUpStr; break; - case kHaierAcSwingDown: + case kHaierAcSwingVDown: result += kDownStr; break; - case kHaierAcSwingChg: + case kHaierAcSwingVChg: result += kChangeStr; break; default: @@ -609,7 +609,7 @@ void IRHaierAC176::setButton(uint8_t button) { switch (button) { case kHaierAcYrw02ButtonTempUp: case kHaierAcYrw02ButtonTempDown: - case kHaierAcYrw02ButtonSwing: + case kHaierAcYrw02ButtonSwingV: case kHaierAcYrw02ButtonFan: case kHaierAcYrw02ButtonPower: case kHaierAcYrw02ButtonMode: @@ -766,28 +766,28 @@ void IRHaierAC176::setFan(uint8_t speed) { /// Get the Vertical Swing position setting of the A/C. /// @return The native position/mode. -uint8_t IRHaierAC176::getSwing(void) const { return _.Swing; } +uint8_t IRHaierAC176::getSwingV(void) const { return _.SwingV; } /// Set the Vertical Swing mode of the A/C. /// @param[in] pos The position/mode to set the vanes to. -void IRHaierAC176::setSwing(uint8_t pos) { +void IRHaierAC176::setSwingV(uint8_t pos) { uint8_t newpos = pos; switch (pos) { - case kHaierAcYrw02SwingOff: - case kHaierAcYrw02SwingAuto: - case kHaierAcYrw02SwingTop: - case kHaierAcYrw02SwingMiddle: - case kHaierAcYrw02SwingBottom: - case kHaierAcYrw02SwingDown: _.Button = kHaierAcYrw02ButtonSwing; break; + case kHaierAcYrw02SwingVOff: + case kHaierAcYrw02SwingVAuto: + case kHaierAcYrw02SwingVTop: + case kHaierAcYrw02SwingVMiddle: + case kHaierAcYrw02SwingVBottom: + case kHaierAcYrw02SwingVDown: _.Button = kHaierAcYrw02ButtonSwingV; break; default: return; // Unexpected value so don't do anything. } // Heat mode has no MIDDLE setting, use BOTTOM instead. - if (pos == kHaierAcYrw02SwingMiddle && _.Mode == kHaierAcYrw02Heat) - newpos = kHaierAcYrw02SwingBottom; + if (pos == kHaierAcYrw02SwingVMiddle && _.Mode == kHaierAcYrw02Heat) + newpos = kHaierAcYrw02SwingVBottom; // BOTTOM is only allowed if we are in Heat mode, otherwise MIDDLE. - if (pos == kHaierAcYrw02SwingBottom && _.Mode != kHaierAcYrw02Heat) - newpos = kHaierAcYrw02SwingMiddle; - _.Swing = newpos; + if (pos == kHaierAcYrw02SwingVBottom && _.Mode != kHaierAcYrw02Heat) + newpos = kHaierAcYrw02SwingVMiddle; + _.SwingV = newpos; } @@ -907,12 +907,12 @@ uint8_t IRHaierAC176::convertFan(const stdAc::fanspeed_t speed) { uint8_t IRHaierAC176::convertSwingV(const stdAc::swingv_t position) { switch (position) { case stdAc::swingv_t::kHighest: - case stdAc::swingv_t::kHigh: return kHaierAcYrw02SwingTop; - case stdAc::swingv_t::kMiddle: return kHaierAcYrw02SwingMiddle; - case stdAc::swingv_t::kLow: return kHaierAcYrw02SwingDown; - case stdAc::swingv_t::kLowest: return kHaierAcYrw02SwingBottom; - case stdAc::swingv_t::kOff: return kHaierAcYrw02SwingOff; - default: return kHaierAcYrw02SwingAuto; + case stdAc::swingv_t::kHigh: return kHaierAcYrw02SwingVTop; + case stdAc::swingv_t::kMiddle: return kHaierAcYrw02SwingVMiddle; + case stdAc::swingv_t::kLow: return kHaierAcYrw02SwingVDown; + case stdAc::swingv_t::kLowest: return kHaierAcYrw02SwingVBottom; + case stdAc::swingv_t::kOff: return kHaierAcYrw02SwingVOff; + default: return kHaierAcYrw02SwingVAuto; } } @@ -946,11 +946,11 @@ stdAc::fanspeed_t IRHaierAC176::toCommonFanSpeed(const uint8_t speed) { /// @return The native equivalent of the enum. stdAc::swingv_t IRHaierAC176::toCommonSwingV(const uint8_t pos) { switch (pos) { - case kHaierAcYrw02SwingTop: return stdAc::swingv_t::kHighest; - case kHaierAcYrw02SwingMiddle: return stdAc::swingv_t::kMiddle; - case kHaierAcYrw02SwingDown: return stdAc::swingv_t::kLow; - case kHaierAcYrw02SwingBottom: return stdAc::swingv_t::kLowest; - case kHaierAcYrw02SwingOff: return stdAc::swingv_t::kOff; + case kHaierAcYrw02SwingVTop: return stdAc::swingv_t::kHighest; + case kHaierAcYrw02SwingVMiddle: return stdAc::swingv_t::kMiddle; + case kHaierAcYrw02SwingVDown: return stdAc::swingv_t::kLow; + case kHaierAcYrw02SwingVBottom: return stdAc::swingv_t::kLowest; + case kHaierAcYrw02SwingVOff: return stdAc::swingv_t::kOff; default: return stdAc::swingv_t::kAuto; } } @@ -966,7 +966,7 @@ stdAc::state_t IRHaierAC176::toCommon(void) const { result.celsius = true; result.degrees = getTemp(); result.fanspeed = toCommonFanSpeed(_.Fan); - result.swingv = toCommonSwingV(_.Swing); + result.swingv = toCommonSwingV(_.SwingV); result.filter = _.Health; result.sleep = _.Sleep ? 0 : -1; result.turbo = _.Turbo; @@ -1012,8 +1012,8 @@ String IRHaierAC176::toString(void) const { case kHaierAcYrw02ButtonHealth: result += kHealthStr; break; - case kHaierAcYrw02ButtonSwing: - result += kSwingStr; + case kHaierAcYrw02ButtonSwingV: + result += kSwingVStr; break; case kHaierAcYrw02ButtonTurbo: result += kTurboStr; @@ -1031,25 +1031,25 @@ String IRHaierAC176::toString(void) const { kHaierAcYrw02FanMed); result += addBoolToString(_.Turbo, kTurboStr); result += addBoolToString(_.Quiet, kQuietStr); - result += addIntToString(_.Swing, kSwingStr); + result += addIntToString(_.SwingV, kSwingVStr); result += kSpaceLBraceStr; - switch (_.Swing) { - case kHaierAcYrw02SwingOff: + switch (_.SwingV) { + case kHaierAcYrw02SwingVOff: result += kOffStr; break; - case kHaierAcYrw02SwingAuto: + case kHaierAcYrw02SwingVAuto: result += kAutoStr; break; - case kHaierAcYrw02SwingBottom: + case kHaierAcYrw02SwingVBottom: result += kLowestStr; break; - case kHaierAcYrw02SwingDown: + case kHaierAcYrw02SwingVDown: result += kLowStr; break; - case kHaierAcYrw02SwingTop: + case kHaierAcYrw02SwingVTop: result += kHighestStr; break; - case kHaierAcYrw02SwingMiddle: + case kHaierAcYrw02SwingVMiddle: result += kMiddleStr; break; default: diff --git a/src/ir_Haier.h b/src/ir_Haier.h index 6cc31b890..7fb9fbd85 100644 --- a/src/ir_Haier.h +++ b/src/ir_Haier.h @@ -41,7 +41,7 @@ union HaierProtocol{ // Byte 2 uint8_t CurrHours:5; uint8_t unknown :1; // value=1 - uint8_t Swing :2; + uint8_t SwingV :2; // Byte 3 uint8_t CurrMins:6; uint8_t OffTimer:1; @@ -82,12 +82,12 @@ const uint8_t kHaierAcCmdSleep = 0b1000; const uint8_t kHaierAcCmdTimerSet = 0b1001; const uint8_t kHaierAcCmdTimerCancel = 0b1010; const uint8_t kHaierAcCmdHealth = 0b1100; -const uint8_t kHaierAcCmdSwing = 0b1101; +const uint8_t kHaierAcCmdSwingV = 0b1101; -const uint8_t kHaierAcSwingOff = 0b00; -const uint8_t kHaierAcSwingUp = 0b01; -const uint8_t kHaierAcSwingDown = 0b10; -const uint8_t kHaierAcSwingChg = 0b11; +const uint8_t kHaierAcSwingVOff = 0b00; +const uint8_t kHaierAcSwingVUp = 0b01; +const uint8_t kHaierAcSwingVDown = 0b10; +const uint8_t kHaierAcSwingVChg = 0b11; const uint8_t kHaierAcAuto = 0; const uint8_t kHaierAcCool = 1; @@ -118,11 +118,11 @@ const uint8_t kHaierAcSleepBit = 0b01000000; #define HAIER_AC_CMD_TIMER_SET kHaierAcCmdTimerSet #define HAIER_AC_CMD_TIMER_CANCEL kHaierAcCmdTimerCancel #define HAIER_AC_CMD_HEALTH kHaierAcCmdHealth -#define HAIER_AC_CMD_SWING kHaierAcCmdSwing -#define HAIER_AC_SWING_OFF kHaierAcSwingOff -#define HAIER_AC_SWING_UP kHaierAcSwingUp -#define HAIER_AC_SWING_DOWN kHaierAcSwingDown -#define HAIER_AC_SWING_CHG kHaierAcSwingChg +#define HAIER_AC_CMD_SWINGV kHaierAcCmdSwingV +#define HAIER_AC_SWINGV_OFF kHaierAcSwingVOff +#define HAIER_AC_SWINGV_UP kHaierAcSwingVUp +#define HAIER_AC_SWINGV_DOWN kHaierAcSwingVDown +#define HAIER_AC_SWINGV_CHG kHaierAcSwingVChg #define HAIER_AC_AUTO kHaierAcAuto #define HAIER_AC_COOL kHaierAcCool #define HAIER_AC_DRY kHaierAcDry @@ -136,12 +136,12 @@ const uint8_t kHaierAcSleepBit = 0b01000000; const uint8_t kHaierAcYrw02Prefix = 0xA6; const uint8_t kHaierAc176Prefix = 0xB7; -const uint8_t kHaierAcYrw02SwingOff = 0x0; -const uint8_t kHaierAcYrw02SwingTop = 0x1; -const uint8_t kHaierAcYrw02SwingMiddle = 0x2; // Not available in heat mode. -const uint8_t kHaierAcYrw02SwingBottom = 0x3; // Only available in heat mode. -const uint8_t kHaierAcYrw02SwingDown = 0xA; -const uint8_t kHaierAcYrw02SwingAuto = 0xC; // Airflow +const uint8_t kHaierAcYrw02SwingVOff = 0x0; +const uint8_t kHaierAcYrw02SwingVTop = 0x1; +const uint8_t kHaierAcYrw02SwingVMiddle = 0x2; // Not available in heat mode. +const uint8_t kHaierAcYrw02SwingVBottom = 0x3; // Only available in heat mode. +const uint8_t kHaierAcYrw02SwingVDown = 0xA; +const uint8_t kHaierAcYrw02SwingVAuto = 0xC; // Airflow const uint8_t kHaierAcYrw02FanHigh = 0b001; const uint8_t kHaierAcYrw02FanMed = 0b010; @@ -156,7 +156,7 @@ const uint8_t kHaierAcYrw02Fan = 0b110; // 5 const uint8_t kHaierAcYrw02ButtonTempUp = 0x0; const uint8_t kHaierAcYrw02ButtonTempDown = 0x1; -const uint8_t kHaierAcYrw02ButtonSwing = 0x2; +const uint8_t kHaierAcYrw02ButtonSwingV = 0x2; const uint8_t kHaierAcYrw02ButtonFan = 0x4; const uint8_t kHaierAcYrw02ButtonPower = 0x5; const uint8_t kHaierAcYrw02ButtonMode = 0x6; @@ -177,7 +177,7 @@ union HaierAc176Protocol{ // Byte 0 uint8_t Prefix :8; // Byte 1 - uint8_t Swing :4; + uint8_t SwingV :4; uint8_t Temp :4; // 16C~30C // Byte 2 uint8_t :8; @@ -236,12 +236,12 @@ union HaierAc176Protocol{ }; // Legacy Haier YRW02 remote defines. -#define HAIER_AC_YRW02_SWING_OFF kHaierAcYrw02SwingOff -#define HAIER_AC_YRW02_SWING_TOP kHaierAcYrw02SwingTop -#define HAIER_AC_YRW02_SWING_MIDDLE kHaierAcYrw02SwingMiddle -#define HAIER_AC_YRW02_SWING_BOTTOM kHaierAcYrw02SwingBottom -#define HAIER_AC_YRW02_SWING_DOWN kHaierAcYrw02SwingDown -#define HAIER_AC_YRW02_SWING_AUTO kHaierAcYrw02SwingAuto +#define HAIER_AC_YRW02_SWINGV_OFF kHaierAcYrw02SwingVOff +#define HAIER_AC_YRW02_SWINGV_TOP kHaierAcYrw02SwingVTop +#define HAIER_AC_YRW02_SWINGV_MIDDLE kHaierAcYrw02SwingVMiddle +#define HAIER_AC_YRW02_SWINGV_BOTTOM kHaierAcYrw02SwingVBottom +#define HAIER_AC_YRW02_SWINGV_DOWN kHaierAcYrw02SwingVDown +#define HAIER_AC_YRW02_SWINGV_AUTO kHaierAcYrw02SwingVAuto #define HAIER_AC_YRW02_FAN_HIGH kHaierAcYrw02FanHigh #define HAIER_AC_YRW02_FAN_MED kHaierAcYrw02FanMed #define HAIER_AC_YRW02_FAN_LOW kHaierAcYrw02FanLow @@ -254,7 +254,7 @@ union HaierAc176Protocol{ #define HAIER_AC_YRW02_FAN kHaierAcYrw02Fan #define HAIER_AC_YRW02_BUTTON_TEMP_UP kHaierAcYrw02ButtonTempUp #define HAIER_AC_YRW02_BUTTON_TEMP_DOWN kHaierAcYrw02ButtonTempDown -#define HAIER_AC_YRW02_BUTTON_SWING kHaierAcYrw02ButtonSwing +#define HAIER_AC_YRW02_BUTTON_SWINGV kHaierAcYrw02ButtonSwingV #define HAIER_AC_YRW02_BUTTON_FAN kHaierAcYrw02ButtonFan #define HAIER_AC_YRW02_BUTTON_POWER kHaierAcYrw02ButtonPower #define HAIER_AC_YRW02_BUTTON_MODE kHaierAcYrw02ButtonMode @@ -305,8 +305,8 @@ class IRHaierAC { uint16_t getCurrTime(void) const; void setCurrTime(const uint16_t mins); - uint8_t getSwing(void) const; - void setSwing(const uint8_t state); + uint8_t getSwingV(void) const; + void setSwingV(const uint8_t state); uint8_t* getRaw(void); void setRaw(const uint8_t new_code[]); @@ -377,8 +377,8 @@ class IRHaierAC176 { bool getQuiet(void) const; void setQuiet(const bool on); - uint8_t getSwing(void) const; - void setSwing(const uint8_t pos); + uint8_t getSwingV(void) const; + void setSwingV(const uint8_t pos); void setTimerMode(const uint8_t setting); uint8_t getTimerMode(void) const; diff --git a/test/IRac_test.cpp b/test/IRac_test.cpp index b2eff6efa..9fba85e0d 100644 --- a/test/IRac_test.cpp +++ b/test/IRac_test.cpp @@ -760,7 +760,7 @@ TEST(TestIRac, Haier) { IRrecv capture(kGpioUnused); char expected[] = "Command: 1 (On), Mode: 1 (Cool), Temp: 24C, Fan: 2 (Medium), " - "Swing: 1 (Up), Sleep: On, Health: On, Clock: 13:45, " + "Swing(V): 1 (Up), Sleep: On, Health: On, Clock: 13:45, " "On Timer: Off, Off Timer: Off"; ac.begin(); @@ -789,7 +789,7 @@ TEST(TestIRac, Haier176) { IRrecv capture(kGpioUnused); const char expected[] = "Power: On, Button: 5 (Power), Mode: 1 (Cool), Temp: 23C, " - "Fan: 2 (Medium), Turbo: On, Quiet: Off, Swing: 1 (Highest), Sleep: On, " + "Fan: 2 (Medium), Turbo: On, Quiet: Off, Swing(V): 1 (Highest), Sleep: On, " "Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off"; ac.begin(); irac.haier176(&ac, @@ -818,7 +818,7 @@ TEST(TestIRac, HaierYrwo2) { IRrecv capture(kGpioUnused); char expected[] = "Power: On, Button: 5 (Power), Mode: 1 (Cool), Temp: 23C, " - "Fan: 2 (Medium), Turbo: Off, Quiet: On, Swing: 1 (Highest), Sleep: On, " + "Fan: 2 (Medium), Turbo: Off, Quiet: On, Swing(V): 1 (Highest), Sleep: On, " "Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off"; ac.begin(); diff --git a/test/ir_Haier_test.cpp b/test/ir_Haier_test.cpp index 0c63b089f..7d59d147b 100644 --- a/test/ir_Haier_test.cpp +++ b/test/ir_Haier_test.cpp @@ -128,8 +128,8 @@ TEST(TestHaierACClass, Command) { EXPECT_EQ(kHaierAcCmdTimerCancel, ac.getCommand()); ac.setCommand(kHaierAcCmdHealth); EXPECT_EQ(kHaierAcCmdHealth, ac.getCommand()); - ac.setCommand(kHaierAcCmdSwing); - EXPECT_EQ(kHaierAcCmdSwing, ac.getCommand()); + ac.setCommand(kHaierAcCmdSwingV); + EXPECT_EQ(kHaierAcCmdSwingV, ac.getCommand()); ac.setCommand(kHaierAcCmdOn); EXPECT_EQ(kHaierAcCmdOn, ac.getCommand()); ac.setCommand(kHaierAcCmdOff); @@ -240,26 +240,26 @@ TEST(TestHaierACClass, FanSpeed) { EXPECT_EQ(kHaierAcCmdOn, ac.getCommand()); } -TEST(TestHaierACClass, Swing) { +TEST(TestHaierACClass, SwingV) { IRHaierAC ac(kGpioUnused); ac.begin(); ac.setFan(kHaierAcFanLow); ac.setCommand(kHaierAcCmdOn); - ac.setSwing(kHaierAcSwingOff); - EXPECT_EQ(kHaierAcSwingOff, ac.getSwing()); + ac.setSwingV(kHaierAcSwingVOff); + EXPECT_EQ(kHaierAcSwingVOff, ac.getSwingV()); - ac.setSwing(kHaierAcSwingUp); - EXPECT_EQ(kHaierAcSwingUp, ac.getSwing()); - EXPECT_EQ(kHaierAcCmdSwing, ac.getCommand()); + ac.setSwingV(kHaierAcSwingVUp); + EXPECT_EQ(kHaierAcSwingVUp, ac.getSwingV()); + EXPECT_EQ(kHaierAcCmdSwingV, ac.getCommand()); - ac.setSwing(kHaierAcSwingDown); - EXPECT_EQ(kHaierAcSwingDown, ac.getSwing()); - EXPECT_EQ(kHaierAcCmdSwing, ac.getCommand()); + ac.setSwingV(kHaierAcSwingVDown); + EXPECT_EQ(kHaierAcSwingVDown, ac.getSwingV()); + EXPECT_EQ(kHaierAcCmdSwingV, ac.getCommand()); - ac.setSwing(kHaierAcSwingChg); - EXPECT_EQ(kHaierAcSwingChg, ac.getSwing()); - EXPECT_EQ(kHaierAcCmdSwing, ac.getCommand()); + ac.setSwingV(kHaierAcSwingVChg); + EXPECT_EQ(kHaierAcSwingVChg, ac.getSwingV()); + EXPECT_EQ(kHaierAcCmdSwingV, ac.getCommand()); } TEST(TestHaierACClass, CurrentTime) { @@ -351,7 +351,7 @@ TEST(TestHaierACClass, MessageConstuction) { EXPECT_EQ( "Command: 1 (On), Mode: 0 (Auto), Temp: 25C, Fan: 1 (Low), " - "Swing: 0 (Off), Sleep: Off, Health: Off, " + "Swing(V): 0 (Off), Sleep: Off, Health: Off, " "Clock: 00:00, On Timer: Off, Off Timer: Off", ac.toString()); ac.setMode(kHaierAcCool); @@ -359,16 +359,16 @@ TEST(TestHaierACClass, MessageConstuction) { ac.setFan(kHaierAcFanHigh); EXPECT_EQ( "Command: 3 (Fan), Mode: 1 (Cool), Temp: 21C, Fan: 3 (High), " - "Swing: 0 (Off), Sleep: Off, Health: Off, " + "Swing(V): 0 (Off), Sleep: Off, Health: Off, " "Clock: 00:00, On Timer: Off, Off Timer: Off", ac.toString()); - ac.setSwing(kHaierAcSwingChg); + ac.setSwingV(kHaierAcSwingVChg); ac.setHealth(true); ac.setSleep(true); ac.setCurrTime(615); // 10:15am EXPECT_EQ( "Command: 8 (Sleep), Mode: 1 (Cool), Temp: 21C, Fan: 3 (High), " - "Swing: 3 (Change), Sleep: On, Health: On, " + "Swing(V): 3 (Change), Sleep: On, Health: On, " "Clock: 10:15, On Timer: Off, Off Timer: Off", ac.toString()); ac.setOnTimer(800); // 1:20pm @@ -377,7 +377,7 @@ TEST(TestHaierACClass, MessageConstuction) { EXPECT_EQ( "Command: 1 (On), Mode: 1 (Cool), Temp: 21C, Fan: 3 (High), " - "Swing: 3 (Change), Sleep: On, Health: On, " + "Swing(V): 3 (Change), Sleep: On, Health: On, " "Clock: 10:15, On Timer: 13:20, Off Timer: 18:45", ac.toString()); @@ -385,14 +385,14 @@ TEST(TestHaierACClass, MessageConstuction) { ac.setMode(kHaierAcHeat); EXPECT_EQ( "Command: 2 (Mode), Mode: 3 (Heat), Temp: 21C, Fan: 3 (High), " - "Swing: 3 (Change), Sleep: On, Health: On, " + "Swing(V): 3 (Change), Sleep: On, Health: On, " "Clock: 10:15, On Timer: 13:20, Off Timer: 18:45", ac.toString()); ac.setTemp(25); EXPECT_EQ( "Command: 6 (Temp Up), Mode: 3 (Heat), Temp: 25C, Fan: 3 (High), " - "Swing: 3 (Change), Sleep: On, Health: On, " + "Swing(V): 3 (Change), Sleep: On, Health: On, " "Clock: 10:15, On Timer: 13:20, Off Timer: 18:45", ac.toString()); @@ -410,7 +410,7 @@ TEST(TestHaierACClass, MessageConstuction) { ac.setRaw(randomState); EXPECT_EQ( "Command: 9 (Timer Set), Mode: 3 (Heat), Temp: 20C, Fan: 3 (High), " - "Swing: 1 (Up), Sleep: On, Health: Off, " + "Swing(V): 1 (Up), Sleep: On, Health: Off, " "Clock: 16:32, On Timer: Off, Off Timer: Off", ac.toString()); // getRaw() should correct the checksum. @@ -641,49 +641,49 @@ TEST(TestHaierACYRW02Class, Fan) { EXPECT_EQ(kHaierAcYrw02ButtonTempUp, ac.getButton()); } -TEST(TestHaierACYRW02Class, Swing) { +TEST(TestHaierACYRW02Class, SwingV) { IRHaierACYRW02 ac(kGpioUnused); ac.begin(); - ac.setSwing(kHaierAcYrw02SwingOff); - EXPECT_EQ(kHaierAcYrw02SwingOff, ac.getSwing()); - EXPECT_EQ(kHaierAcYrw02ButtonSwing, ac.getButton()); + ac.setSwingV(kHaierAcYrw02SwingVOff); + EXPECT_EQ(kHaierAcYrw02SwingVOff, ac.getSwingV()); + EXPECT_EQ(kHaierAcYrw02ButtonSwingV, ac.getButton()); ac.setButton(kHaierAcYrw02ButtonTempUp); - ac.setSwing(kHaierAcYrw02SwingAuto); - EXPECT_EQ(kHaierAcYrw02SwingAuto, ac.getSwing()); - EXPECT_EQ(kHaierAcYrw02ButtonSwing, ac.getButton()); + ac.setSwingV(kHaierAcYrw02SwingVAuto); + EXPECT_EQ(kHaierAcYrw02SwingVAuto, ac.getSwingV()); + EXPECT_EQ(kHaierAcYrw02ButtonSwingV, ac.getButton()); - ac.setSwing(kHaierAcYrw02SwingTop); - EXPECT_EQ(kHaierAcYrw02SwingTop, ac.getSwing()); - EXPECT_EQ(kHaierAcYrw02ButtonSwing, ac.getButton()); + ac.setSwingV(kHaierAcYrw02SwingVTop); + EXPECT_EQ(kHaierAcYrw02SwingVTop, ac.getSwingV()); + EXPECT_EQ(kHaierAcYrw02ButtonSwingV, ac.getButton()); - ac.setSwing(kHaierAcYrw02SwingDown); - EXPECT_EQ(kHaierAcYrw02SwingDown, ac.getSwing()); - EXPECT_EQ(kHaierAcYrw02ButtonSwing, ac.getButton()); + ac.setSwingV(kHaierAcYrw02SwingVDown); + EXPECT_EQ(kHaierAcYrw02SwingVDown, ac.getSwingV()); + EXPECT_EQ(kHaierAcYrw02ButtonSwingV, ac.getButton()); // Test unexpected values. ac.setButton(kHaierAcYrw02ButtonTempUp); - ac.setSwing(0xFF); - EXPECT_EQ(kHaierAcYrw02SwingDown, ac.getSwing()); + ac.setSwingV(0xFF); + EXPECT_EQ(kHaierAcYrw02SwingVDown, ac.getSwingV()); EXPECT_EQ(kHaierAcYrw02ButtonTempUp, ac.getButton()); // Test the mode-dependant positions. ac.setMode(kHaierAcYrw02Auto); - ac.setSwing(kHaierAcYrw02SwingMiddle); - EXPECT_EQ(kHaierAcYrw02SwingMiddle, ac.getSwing()); - EXPECT_EQ(kHaierAcYrw02ButtonSwing, ac.getButton()); + ac.setSwingV(kHaierAcYrw02SwingVMiddle); + EXPECT_EQ(kHaierAcYrw02SwingVMiddle, ac.getSwingV()); + EXPECT_EQ(kHaierAcYrw02ButtonSwingV, ac.getButton()); ac.setMode(kHaierAcYrw02Heat); - ac.setSwing(kHaierAcYrw02SwingMiddle); - EXPECT_EQ(kHaierAcYrw02SwingBottom, ac.getSwing()); - ac.setSwing(kHaierAcYrw02SwingAuto); - EXPECT_EQ(kHaierAcYrw02SwingAuto, ac.getSwing()); - ac.setSwing(kHaierAcYrw02SwingBottom); - EXPECT_EQ(kHaierAcYrw02SwingBottom, ac.getSwing()); + ac.setSwingV(kHaierAcYrw02SwingVMiddle); + EXPECT_EQ(kHaierAcYrw02SwingVBottom, ac.getSwingV()); + ac.setSwingV(kHaierAcYrw02SwingVAuto); + EXPECT_EQ(kHaierAcYrw02SwingVAuto, ac.getSwingV()); + ac.setSwingV(kHaierAcYrw02SwingVBottom); + EXPECT_EQ(kHaierAcYrw02SwingVBottom, ac.getSwingV()); ac.setMode(kHaierAcYrw02Cool); - ac.setSwing(kHaierAcYrw02SwingBottom); - EXPECT_EQ(kHaierAcYrw02SwingMiddle, ac.getSwing()); + ac.setSwingV(kHaierAcYrw02SwingVBottom); + EXPECT_EQ(kHaierAcYrw02SwingVMiddle, ac.getSwingV()); } TEST(TestHaierACYRW02Class, MessageConstuction) { @@ -691,7 +691,7 @@ TEST(TestHaierACYRW02Class, MessageConstuction) { EXPECT_EQ( "Power: On, Button: 5 (Power), Mode: 0 (Auto), Temp: 25C," - " Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing: 0 (Off), Sleep: Off," + " Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 0 (Off), Sleep: Off," " Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); ac.setMode(kHaierAcYrw02Cool); @@ -699,17 +699,17 @@ TEST(TestHaierACYRW02Class, MessageConstuction) { ac.setFan(kHaierAcYrw02FanHigh); EXPECT_EQ( "Power: On, Button: 4 (Fan), Mode: 1 (Cool), Temp: 21C," - " Fan: 1 (High), Turbo: Off, Quiet: Off, Swing: 0 (Off), Sleep: Off," + " Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 0 (Off), Sleep: Off," " Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); - ac.setSwing(kHaierAcYrw02SwingMiddle); + ac.setSwingV(kHaierAcYrw02SwingVMiddle); ac.setHealth(false); ac.setSleep(true); ac.setTurbo(true); EXPECT_EQ( "Power: On, Button: 8 (Turbo), Mode: 1 (Cool), Temp: 21C, " - "Fan: 1 (High), Turbo: On, Quiet: Off, Swing: 2 (Middle), " + "Fan: 1 (High), Turbo: On, Quiet: Off, Swing(V): 2 (Middle), " "Sleep: On, Health: Off, " "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); @@ -725,7 +725,7 @@ TEST(TestHaierACYRW02Class, RealStates) { ac.setRaw(expectedState1); EXPECT_EQ( "Power: On, Button: 7 (Health), Mode: 4 (Heat), Temp: 30C, " - "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing: 1 (Highest), Sleep: Off, " + "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 1 (Highest), Sleep: Off, " "Health: Off, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); @@ -735,7 +735,7 @@ TEST(TestHaierACYRW02Class, RealStates) { ac.setRaw(expectedState2); EXPECT_EQ( "Power: Off, Button: 5 (Power), Mode: 4 (Heat), Temp: 30C, " - "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing: 0 (Off), Sleep: Off, " + "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 0 (Off), Sleep: Off, " "Health: Off, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); @@ -745,29 +745,29 @@ TEST(TestHaierACYRW02Class, RealStates) { ac.setRaw(expectedState3); EXPECT_EQ( "Power: On, Button: 1 (Temp Down), Mode: 1 (Cool), Temp: 16C, " - "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing: 2 (Middle), Sleep: Off, " + "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), Sleep: Off, " "Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); - // cool 25, health, fan auto, swing auto, sleep on + // cool 25, health, fan auto, vertical swing auto, sleep on uint8_t expectedState4[kHaierACYRW02StateLength] = { 0xA6, 0x9C, 0x00, 0x02, 0x40, 0xA8, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x0B, 0xD7}; ac.setRaw(expectedState4); EXPECT_EQ( "Power: On, Button: 11 (Sleep), Mode: 1 (Cool), Temp: 25C, " - "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing: 12 (Auto), Sleep: On, " + "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 12 (Auto), Sleep: On, " "Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); - // cool 25, health, fan 3, swing auto, sleep on + // cool 25, health, fan 3, vertical swing auto, sleep on uint8_t expectedState5[kHaierACYRW02StateLength] = { 0xA6, 0x9C, 0x00, 0x02, 0x40, 0x27, 0x36, 0x20, 0x80, 0x00, 0x00, 0x00, 0x04, 0x85}; ac.setRaw(expectedState5); EXPECT_EQ( "Power: On, Button: 4 (Fan), Mode: 1 (Cool), Temp: 25C, " - "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing: 12 (Auto), Sleep: On, " + "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 12 (Auto), Sleep: On, " "Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); } @@ -840,7 +840,7 @@ TEST(TestDecodeHaierAC, RealExample1) { EXPECT_EQ( "Command: 1 (On), Mode: 1 (Cool), Temp: 16C, Fan: 1 (Low), " - "Swing: 0 (Off), Sleep: Off, Health: Off, " + "Swing(V): 0 (Off), Sleep: Off, Health: Off, " "Clock: 00:01, On Timer: Off, Off Timer: Off", IRAcUtils::resultAcToString(&irsend.capture)); stdAc::state_t r, p; @@ -885,7 +885,7 @@ TEST(TestDecodeHaierAC, RealExample2) { ac.setRaw(irsend.capture.state); EXPECT_EQ( "Command: 6 (Temp Up), Mode: 1 (Cool), Temp: 22C, Fan: 1 (Low), " - "Swing: 0 (Off), Sleep: Off, Health: Off, " + "Swing(V): 0 (Off), Sleep: Off, Health: Off, " "Clock: 00:01, On Timer: Off, Off Timer: Off", ac.toString()); } @@ -928,7 +928,7 @@ TEST(TestDecodeHaierAC, RealExample3) { ac.setRaw(irsend.capture.state); EXPECT_EQ( "Command: 12 (Health), Mode: 1 (Cool), Temp: 30C, Fan: 1 (Low), " - "Swing: 0 (Off), Sleep: Off, Health: On, " + "Swing(V): 0 (Off), Sleep: Off, Health: On, " "Clock: 00:09, On Timer: Off, Off Timer: Off", ac.toString()); } @@ -998,7 +998,7 @@ TEST(TestDecodeHaierAC_YRW02, RealExample) { ac.setRaw(irsend.capture.state); EXPECT_EQ( "Power: On, Button: 5 (Power), Mode: 1 (Cool), Temp: 17C, " - "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing: 2 (Middle), Sleep: Off, " + "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), Sleep: Off, " "Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); } @@ -1015,7 +1015,7 @@ TEST(TestHaierAcIssues, Issue668) { ac._irsend.reset(); char expected_on[] = "Command: 1 (On), Mode: 1 (Cool), Temp: 25C, Fan: 1 (Low), " - "Swing: 0 (Off), Sleep: Off, Health: Off, Clock: 00:00, " + "Swing(V): 0 (Off), Sleep: Off, Health: Off, Clock: 00:00, " "On Timer: Off, Off Timer: Off"; // State taken from real capture: // https://github.com/crankyoldgit/IRremoteESP8266/issues/668#issuecomment-483531895 @@ -1053,7 +1053,7 @@ TEST(TestHaierAcIssues, Issue668) { ac._irsend.reset(); char expected_temp_plus_one[] = "Command: 6 (Temp Up), Mode: 1 (Cool), Temp: 26C, Fan: 1 (Low), " - "Swing: 0 (Off), Sleep: Off, Health: Off, Clock: 00:00, " + "Swing(V): 0 (Off), Sleep: Off, Health: Off, Clock: 00:00, " "On Timer: Off, Off Timer: Off"; // State taken from real capture: // https://github.com/crankyoldgit/IRremoteESP8266/issues/668#issuecomment-483531895 @@ -1077,7 +1077,7 @@ TEST(TestHaierAcIssues, Issue668) { ac._irsend.reset(); char expected_temp_minus_one[] = "Command: 7 (Temp Down), Mode: 1 (Cool), Temp: 25C, Fan: 1 (Low), " - "Swing: 0 (Off), Sleep: Off, Health: Off, Clock: 00:00, " + "Swing(V): 0 (Off), Sleep: Off, Health: Off, Clock: 00:00, " "On Timer: Off, Off Timer: Off"; ASSERT_EQ(26, ac.getTemp()); ac.setTemp(ac.getTemp() - 1); @@ -1098,7 +1098,7 @@ TEST(TestHaierACClass, toCommon) { ac.setMode(kHaierAcCool); ac.setTemp(20); ac.setFan(kHaierAcFanHigh); - ac.setSwing(kHaierAcSwingChg); + ac.setSwingV(kHaierAcSwingVChg); ac.setHealth(true); ac.setSleep(true); // Now test it. @@ -1129,7 +1129,7 @@ TEST(TestHaierACYRW02Class, toCommon) { ac.setMode(kHaierAcYrw02Cool); ac.setTemp(20); ac.setFan(kHaierAcYrw02FanHigh); - ac.setSwing(kHaierAcYrw02SwingTop); + ac.setSwingV(kHaierAcYrw02SwingVTop); ac.setHealth(true); ac.setSleep(true); // Now test it. @@ -1222,7 +1222,7 @@ TEST(TestDecodeHaierAC176, SyntheticDecode) { EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits); EXPECT_EQ( "Power: On, Button: 5 (Power), Mode: 1 (Cool), Temp: 24C, Fan: 5 (Auto), " - "Turbo: Off, Quiet: Off, Swing: 6 (UNKNOWN), Sleep: Off, Health: Off, " + "Turbo: Off, Quiet: Off, Swing(V): 6 (UNKNOWN), Sleep: Off, Health: Off, " "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", IRAcUtils::resultAcToString(&irsend.capture)); stdAc::state_t result, prev; @@ -1263,7 +1263,7 @@ TEST(TestHaierAC176Class, BuildKnownState) { EXPECT_TRUE(ac.validChecksum(ac.getRaw())); EXPECT_EQ( "Power: On, Button: 4 (Fan), Mode: 4 (Heat), Temp: 24C, Fan: 1 (High), " - "Turbo: Off, Quiet: Off, Swing: 0 (Off), Sleep: Off, Health: On, " + "Turbo: Off, Quiet: Off, Swing(V): 0 (Off), Sleep: Off, Health: On, " "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); /* Disabled pending: @@ -1354,26 +1354,26 @@ TEST(TestHaierAC176Class, Timers) { EXPECT_EQ(kHaierAcYrw02OnTimer, ac.getTimerMode()); EXPECT_EQ( "Power: Off, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " - "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing: 2 (Middle), Sleep: Off, " + "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), Sleep: Off, " "Health: Off, Timer Mode: 2 (On), On Timer: 00:30, Off Timer: Off", ac.toString()); ac.setRaw(timeroff); EXPECT_EQ(kHaierAcYrw02NoTimers, ac.getTimerMode()); EXPECT_EQ( "Power: On, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " - "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing: 2 (Middle), Sleep: Off, " + "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), Sleep: Off, " "Health: Off, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); ac.setRaw(timeroffthenon); EXPECT_EQ( "Power: On, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " - "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing: 2 (Middle), Sleep: Off, " + "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), Sleep: Off, " "Health: Off, Timer Mode: 5 (Off-On), On Timer: 08:00, Off Timer: 00:30", ac.toString()); ac.setTimerMode(kHaierAcYrw02OnThenOffTimer); EXPECT_EQ( "Power: On, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " - "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing: 2 (Middle), Sleep: Off, " + "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), Sleep: Off, " "Health: Off, Timer Mode: 4 (On-Off), On Timer: 08:00, Off Timer: 00:30", ac.toString()); ac.setTimerMode(kHaierAcYrw02OffTimer); @@ -1381,7 +1381,7 @@ TEST(TestHaierAC176Class, Timers) { EXPECT_EQ(30, ac.getOffTimer()); EXPECT_EQ( "Power: On, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " - "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing: 2 (Middle), Sleep: Off, " + "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), Sleep: Off, " "Health: Off, Timer Mode: 1 (Off), On Timer: Off, Off Timer: 00:30", ac.toString()); ac.setTimerMode(kHaierAcYrw02NoTimers); @@ -1389,7 +1389,7 @@ TEST(TestHaierAC176Class, Timers) { EXPECT_EQ(0, ac.getOffTimer()); EXPECT_EQ( "Power: On, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " - "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing: 2 (Middle), Sleep: Off, " + "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), Sleep: Off, " "Health: Off, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); } From 4fda38ceaffe355381840fef98dce9bd2de9a4e1 Mon Sep 17 00:00:00 2001 From: PtilopsisLeucotis Date: Sun, 17 Oct 2021 18:00:53 +0300 Subject: [PATCH 02/15] Add horisontal swing feature --- src/IRac.cpp | 19 +++++++----- src/IRac.h | 4 +-- src/ir_Haier.cpp | 81 +++++++++++++++++++++++++++++++++++++++++++++++- src/ir_Haier.h | 21 ++++++++++++- 4 files changed, 113 insertions(+), 12 deletions(-) diff --git a/src/IRac.cpp b/src/IRac.cpp index c82be8668..462919bab 100644 --- a/src/IRac.cpp +++ b/src/IRac.cpp @@ -1112,6 +1112,7 @@ void IRac::haier(IRHaierAC *ac, /// @param[in] degrees The temperature setting in degrees. /// @param[in] fan The speed setting for the fan. /// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horisontal swing setting. /// @param[in] turbo Run the device in turbo/powerful mode. /// @param[in] quiet Run the device in quiet mode. /// @param[in] filter Turn on the (ion/pollen/etc) filter mode. @@ -1119,14 +1120,15 @@ void IRac::haier(IRHaierAC *ac, void IRac::haier176(IRHaierAC176 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, - const stdAc::swingv_t swingv, const bool turbo, - const bool quiet, const bool filter, const int16_t sleep) { + const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, + const bool turbo, const bool quiet, const bool filter, + const int16_t sleep) { ac->begin(); ac->setMode(ac->convertMode(mode)); ac->setTemp(degrees); ac->setFan(ac->convertFan(fan)); ac->setSwingV(ac->convertSwingV(swingv)); - // No Horizontal Swing setting available. + ac->setSwingH(ac->convertSwingH(swingh)); ac->setQuiet(quiet); ac->setTurbo(turbo); // No Light setting available. @@ -1147,6 +1149,7 @@ void IRac::haier176(IRHaierAC176 *ac, /// @param[in] degrees The temperature setting in degrees. /// @param[in] fan The speed setting for the fan. /// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horisontal swing setting. /// @param[in] turbo Run the device in turbo/powerful mode. /// @param[in] quiet Run the device in quiet mode. /// @param[in] filter Turn on the (ion/pollen/etc) filter mode. @@ -1154,15 +1157,15 @@ void IRac::haier176(IRHaierAC176 *ac, void IRac::haierYrwo2(IRHaierACYRW02 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, - const stdAc::swingv_t swingv, const bool turbo, - const bool quiet, const bool filter, + const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, + const bool turbo, const bool quiet, const bool filter, const int16_t sleep) { ac->begin(); ac->setMode(ac->convertMode(mode)); ac->setTemp(degrees); ac->setFan(ac->convertFan(fan)); ac->setSwingV(ac->convertSwingV(swingv)); - // No Horizontal Swing setting available. + ac->setSwingH(ac->convertSwingH(swingh)); ac->setQuiet(quiet); ac->setTurbo(turbo); // No Light setting available. @@ -2751,7 +2754,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) { { IRHaierAC176 ac(_pin, _inverted, _modulation); haier176(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv, - send.turbo, send.filter, send.sleep); + send.swingh, send.turbo, send.filter, send.sleep); break; } #endif // SEND_HAIER_AC176 @@ -2760,7 +2763,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) { { IRHaierACYRW02 ac(_pin, _inverted, _modulation); haierYrwo2(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv, - send.turbo, send.filter, send.sleep); + send.swingh, send.turbo, send.filter, send.sleep); break; } #endif // SEND_HAIER_AC_YRW02 diff --git a/src/IRac.h b/src/IRac.h index 7ef3adf4a..4db18dbf6 100644 --- a/src/IRac.h +++ b/src/IRac.h @@ -261,7 +261,7 @@ void electra(IRElectraAc *ac, void haier176(IRHaierAC176 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, - const stdAc::swingv_t swingv, + const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool quiet, const bool filter, const int16_t sleep = -1); #endif // SEND_HAIER_AC176 @@ -269,7 +269,7 @@ void electra(IRElectraAc *ac, void haierYrwo2(IRHaierACYRW02 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, - const stdAc::swingv_t swingv, + const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool quiet, const bool filter, const int16_t sleep = -1); #endif // SEND_HAIER_AC_YRW02 diff --git a/src/ir_Haier.cpp b/src/ir_Haier.cpp index 6e22140e1..bc3d798db 100644 --- a/src/ir_Haier.cpp +++ b/src/ir_Haier.cpp @@ -610,6 +610,7 @@ void IRHaierAC176::setButton(uint8_t button) { case kHaierAcYrw02ButtonTempUp: case kHaierAcYrw02ButtonTempDown: case kHaierAcYrw02ButtonSwingV: + case kHaierAcYrw02ButtonSwingH: case kHaierAcYrw02ButtonFan: case kHaierAcYrw02ButtonPower: case kHaierAcYrw02ButtonMode: @@ -790,6 +791,25 @@ void IRHaierAC176::setSwingV(uint8_t pos) { _.SwingV = newpos; } +/// Get the Horisontal Swing position setting of the A/C. +/// @return The native position/mode. +uint8_t IRHaierAC176::getSwingH(void) const { return _.SwingH; } + +/// Set the Horisontal Swing mode of the A/C. +/// @param[in] pos The position/mode to set the vanes to. +void IRHaierAC176::setSwingH(uint8_t pos) { + switch (pos) { + case kHaierAcYrw02SwingHOff: + case kHaierAcYrw02SwingHLeftMax: + case kHaierAcYrw02SwingHLeft: + case kHaierAcYrw02SwingHRight: + case kHaierAcYrw02SwingHRightMax: + case kHaierAcYrw02SwingHAuto: _.Button = kHaierAcYrw02ButtonSwingH; break; + default: return; // Unexpected value so don't do anything. + } + _.SwingH = pos; +} + /// Set the Timer operating mode. /// @param[in] mode The timer mode to use. @@ -916,6 +936,21 @@ uint8_t IRHaierAC176::convertSwingV(const stdAc::swingv_t position) { } } +/// Convert a stdAc::swingh_t enum into it's native setting. +/// @param[in] position The enum to be converted. +/// @return The native equivalent of the enum. +uint8_t IRHaierAC176::convertSwingH(const stdAc::swingh_t position) { + switch (position) { + case stdAc::swingh_t::kOff: return kHaierAcYrw02SwingHOff; + case stdAc::swingh_t::kLeftMax: return kHaierAcYrw02SwingHLeftMax; + case stdAc::swingh_t::kLeft: return kHaierAcYrw02SwingHLeft; + case stdAc::swingh_t::kRight: return kHaierAcYrw02SwingHRight; + case stdAc::swingh_t::kRightMax: return kHaierAcYrw02SwingHRightMax; + case stdAc::swingh_t::kAuto: return kHaierAcYrw02SwingHAuto; + default: return kHaierAcYrw02SwingHOff; + } +} + /// Convert a native mode into its stdAc equivalent. /// @param[in] mode The native setting to be converted. /// @return The stdAc equivalent of the native setting. @@ -955,6 +990,21 @@ stdAc::swingv_t IRHaierAC176::toCommonSwingV(const uint8_t pos) { } } +/// Convert a stdAc::swingh_t enum into it's native setting. +/// @param[in] pos The enum to be converted. +/// @return The native equivalent of the enum. +stdAc::swingh_t IRHaierAC176::toCommonSwingH(const uint8_t pos) { + switch (pos) { + case kHaierAcYrw02SwingHOff: return stdAc::swingh_t::kOff; + case kHaierAcYrw02SwingHLeftMax: return stdAc::swingh_t::kLeftMax; + case kHaierAcYrw02SwingHLeft: return stdAc::swingh_t::kLeft; + case kHaierAcYrw02SwingHRight: return stdAc::swingh_t::kRight; + case kHaierAcYrw02SwingHRightMax: return stdAc::swingh_t::kRightMax; + case kHaierAcYrw02SwingHAuto: return stdAc::swingh_t::kAuto; + default: return stdAc::swingh_t::kOff; + } +} + /// Convert the current internal state into its stdAc::state_t equivalent. /// @return The stdAc equivalent of the native settings. stdAc::state_t IRHaierAC176::toCommon(void) const { @@ -967,12 +1017,12 @@ stdAc::state_t IRHaierAC176::toCommon(void) const { result.degrees = getTemp(); result.fanspeed = toCommonFanSpeed(_.Fan); result.swingv = toCommonSwingV(_.SwingV); + result.swingh = toCommonSwingH(_.SwingH); result.filter = _.Health; result.sleep = _.Sleep ? 0 : -1; result.turbo = _.Turbo; result.quiet = _.Quiet; // Not supported. - result.swingh = stdAc::swingh_t::kOff; result.econo = false; result.light = false; result.clean = false; @@ -1014,6 +1064,9 @@ String IRHaierAC176::toString(void) const { break; case kHaierAcYrw02ButtonSwingV: result += kSwingVStr; + break; + case kHaierAcYrw02ButtonSwingH: + result += kSwingHStr; break; case kHaierAcYrw02ButtonTurbo: result += kTurboStr; @@ -1056,6 +1109,32 @@ String IRHaierAC176::toString(void) const { result += kUnknownStr; } result += ')'; + result += addIntToString(_.SwingH, kSwingHStr); + result += kSpaceLBraceStr; + switch (_.SwingH) { + case kHaierAcYrw02SwingHOff: + result += kOffStr; + break; + case kHaierAcYrw02SwingHLeftMax: + result += kLeftMaxStr; + break; + case kHaierAcYrw02SwingHLeft: + result += kLeftStr; + break; + case kHaierAcYrw02SwingHRight: + result += kRightStr; + break; + case kHaierAcYrw02SwingHRightMax: + result += kRightMaxStr; + break; + case kHaierAcYrw02SwingHAuto: + result += kAutoStr; + break; + default: + result += kUnknownStr; + } + result += ')'; + result += addBoolToString(_.Sleep, kSleepStr); result += addBoolToString(_.Health, kHealthStr); const uint8_t tmode = getTimerMode(); diff --git a/src/ir_Haier.h b/src/ir_Haier.h index 7fb9fbd85..922980065 100644 --- a/src/ir_Haier.h +++ b/src/ir_Haier.h @@ -143,6 +143,13 @@ const uint8_t kHaierAcYrw02SwingVBottom = 0x3; // Only available in heat mode. const uint8_t kHaierAcYrw02SwingVDown = 0xA; const uint8_t kHaierAcYrw02SwingVAuto = 0xC; // Airflow +const uint8_t kHaierAcYrw02SwingHOff = 0x0; +const uint8_t kHaierAcYrw02SwingHLeftMax = 0x3; +const uint8_t kHaierAcYrw02SwingHLeft = 0x4; +const uint8_t kHaierAcYrw02SwingHRight = 0x5; +const uint8_t kHaierAcYrw02SwingHRightMax = 0x6; +const uint8_t kHaierAcYrw02SwingHAuto = 0x7; + const uint8_t kHaierAcYrw02FanHigh = 0b001; const uint8_t kHaierAcYrw02FanMed = 0b010; const uint8_t kHaierAcYrw02FanLow = 0b011; @@ -157,6 +164,7 @@ const uint8_t kHaierAcYrw02Fan = 0b110; // 5 const uint8_t kHaierAcYrw02ButtonTempUp = 0x0; const uint8_t kHaierAcYrw02ButtonTempDown = 0x1; const uint8_t kHaierAcYrw02ButtonSwingV = 0x2; +const uint8_t kHaierAcYrw02ButtonSwingH = 0x3; const uint8_t kHaierAcYrw02ButtonFan = 0x4; const uint8_t kHaierAcYrw02ButtonPower = 0x5; const uint8_t kHaierAcYrw02ButtonMode = 0x6; @@ -180,7 +188,8 @@ union HaierAc176Protocol{ uint8_t SwingV :4; uint8_t Temp :4; // 16C~30C // Byte 2 - uint8_t :8; + uint8_t :5; + uint8_t SwingH :3; // Byte 3 uint8_t :1; uint8_t Health :1; @@ -242,6 +251,12 @@ union HaierAc176Protocol{ #define HAIER_AC_YRW02_SWINGV_BOTTOM kHaierAcYrw02SwingVBottom #define HAIER_AC_YRW02_SWINGV_DOWN kHaierAcYrw02SwingVDown #define HAIER_AC_YRW02_SWINGV_AUTO kHaierAcYrw02SwingVAuto +#define HAIER_AC_YRW02_SWINGH_OFF kHaierAcYrw02SwingHOff +#define HAIER_AC_YRW02_SWINGH_LEFTMAX kHaierAcYrw02SwingHLeftMax +#define HAIER_AC_YRW02_SWINGH_LEFT kHaierAcYrw02SwingHLeft +#define HAIER_AC_YRW02_SWINGH_RIGHT kHaierAcYrw02SwingHRight +#define HAIER_AC_YRW02_SWINGH_RIGHTMAX kHaierAcYrw02SwingHRightMax +#define HAIER_AC_YRW02_SWINGH_AUTO kHaierAcYrw02SwingHAuto #define HAIER_AC_YRW02_FAN_HIGH kHaierAcYrw02FanHigh #define HAIER_AC_YRW02_FAN_MED kHaierAcYrw02FanMed #define HAIER_AC_YRW02_FAN_LOW kHaierAcYrw02FanLow @@ -379,6 +394,8 @@ class IRHaierAC176 { uint8_t getSwingV(void) const; void setSwingV(const uint8_t pos); + uint8_t getSwingH(void) const; + void setSwingH(const uint8_t pos); void setTimerMode(const uint8_t setting); uint8_t getTimerMode(void) const; @@ -394,9 +411,11 @@ class IRHaierAC176 { static uint8_t convertMode(const stdAc::opmode_t mode); static uint8_t convertFan(const stdAc::fanspeed_t speed); static uint8_t convertSwingV(const stdAc::swingv_t position); + static uint8_t convertSwingH(const stdAc::swingh_t position); static stdAc::opmode_t toCommonMode(const uint8_t mode); static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed); static stdAc::swingv_t toCommonSwingV(const uint8_t pos); + static stdAc::swingh_t toCommonSwingH(const uint8_t pos); static bool toCommonTurbo(const uint8_t speed); static bool toCommonQuiet(const uint8_t speed); stdAc::state_t toCommon(void) const; From ce061871267330a97ac774d5fbeb85cb6d01f979 Mon Sep 17 00:00:00 2001 From: PtilopsisLeucotis Date: Sun, 17 Oct 2021 21:37:19 +0300 Subject: [PATCH 03/15] Fix tests --- test/IRac_test.cpp | 12 ++++-- test/ir_Haier_test.cpp | 86 +++++++++++++++++++++++++----------------- 2 files changed, 59 insertions(+), 39 deletions(-) diff --git a/test/IRac_test.cpp b/test/IRac_test.cpp index 9fba85e0d..6049a3d1d 100644 --- a/test/IRac_test.cpp +++ b/test/IRac_test.cpp @@ -789,8 +789,9 @@ TEST(TestIRac, Haier176) { IRrecv capture(kGpioUnused); const char expected[] = "Power: On, Button: 5 (Power), Mode: 1 (Cool), Temp: 23C, " - "Fan: 2 (Medium), Turbo: On, Quiet: Off, Swing(V): 1 (Highest), Sleep: On, " - "Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off"; + "Fan: 2 (Medium), Turbo: On, Quiet: Off, Swing(V): 1 (Highest), " + "Swing(H): 0 (Off), Sleep: On, Health: On, " + "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off"; ac.begin(); irac.haier176(&ac, true, // Power @@ -798,6 +799,7 @@ TEST(TestIRac, Haier176) { 23, // Celsius stdAc::fanspeed_t::kMedium, // Fan speed stdAc::swingv_t::kHigh, // Vertical swing + stdAc::swingh_t::kOff, // Horisontal swing true, // Turbo false, // Quiet true, // Filter @@ -818,8 +820,9 @@ TEST(TestIRac, HaierYrwo2) { IRrecv capture(kGpioUnused); char expected[] = "Power: On, Button: 5 (Power), Mode: 1 (Cool), Temp: 23C, " - "Fan: 2 (Medium), Turbo: Off, Quiet: On, Swing(V): 1 (Highest), Sleep: On, " - "Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off"; + "Fan: 2 (Medium), Turbo: Off, Quiet: On, Swing(V): 1 (Highest), " + "Swing(H): 7 (Auto), Sleep: On, Health: On, " + "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off"; ac.begin(); irac.haierYrwo2(&ac, @@ -828,6 +831,7 @@ TEST(TestIRac, HaierYrwo2) { 23, // Celsius stdAc::fanspeed_t::kMedium, // Fan speed stdAc::swingv_t::kHigh, // Vertical swing + stdAc::swingh_t::kAuto, // Vertical swing false, // Turbo true, // Quiet true, // Filter diff --git a/test/ir_Haier_test.cpp b/test/ir_Haier_test.cpp index 7d59d147b..875b59646 100644 --- a/test/ir_Haier_test.cpp +++ b/test/ir_Haier_test.cpp @@ -690,17 +690,19 @@ TEST(TestHaierACYRW02Class, MessageConstuction) { IRHaierACYRW02 ac(kGpioUnused); EXPECT_EQ( - "Power: On, Button: 5 (Power), Mode: 0 (Auto), Temp: 25C," - " Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 0 (Off), Sleep: Off," - " Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", + "Power: On, Button: 5 (Power), Mode: 0 (Auto), Temp: 25C, " + "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 0 (Off), " + "Swing(H): 0 (Off), Sleep: Off, Health: On, " + "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); ac.setMode(kHaierAcYrw02Cool); ac.setTemp(21); ac.setFan(kHaierAcYrw02FanHigh); EXPECT_EQ( - "Power: On, Button: 4 (Fan), Mode: 1 (Cool), Temp: 21C," - " Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 0 (Off), Sleep: Off," - " Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", + "Power: On, Button: 4 (Fan), Mode: 1 (Cool), Temp: 21C, " + "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 0 (Off), " + "Swing(H): 0 (Off), Sleep: Off, Health: On, " + "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); ac.setSwingV(kHaierAcYrw02SwingVMiddle); @@ -710,7 +712,7 @@ TEST(TestHaierACYRW02Class, MessageConstuction) { EXPECT_EQ( "Power: On, Button: 8 (Turbo), Mode: 1 (Cool), Temp: 21C, " "Fan: 1 (High), Turbo: On, Quiet: Off, Swing(V): 2 (Middle), " - "Sleep: On, Health: Off, " + "Swing(H): 0 (Off), Sleep: On, Health: Off, " "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); } @@ -725,8 +727,9 @@ TEST(TestHaierACYRW02Class, RealStates) { ac.setRaw(expectedState1); EXPECT_EQ( "Power: On, Button: 7 (Health), Mode: 4 (Heat), Temp: 30C, " - "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 1 (Highest), Sleep: Off, " - "Health: Off, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", + "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 1 (Highest), " + "Swing(H): 0 (Off), Sleep: Off, Health: Off, " + "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); uint8_t expectedState2[kHaierACYRW02StateLength] = { @@ -735,8 +738,9 @@ TEST(TestHaierACYRW02Class, RealStates) { ac.setRaw(expectedState2); EXPECT_EQ( "Power: Off, Button: 5 (Power), Mode: 4 (Heat), Temp: 30C, " - "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 0 (Off), Sleep: Off, " - "Health: Off, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", + "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 0 (Off), " + "Swing(H): 0 (Off), Sleep: Off, Health: Off, " + "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); uint8_t expectedState3[kHaierACYRW02StateLength] = { @@ -745,8 +749,9 @@ TEST(TestHaierACYRW02Class, RealStates) { ac.setRaw(expectedState3); EXPECT_EQ( "Power: On, Button: 1 (Temp Down), Mode: 1 (Cool), Temp: 16C, " - "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), Sleep: Off, " - "Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", + "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), " + "Swing(H): 0 (Off), Sleep: Off, Health: On, " + "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); // cool 25, health, fan auto, vertical swing auto, sleep on @@ -756,8 +761,9 @@ TEST(TestHaierACYRW02Class, RealStates) { ac.setRaw(expectedState4); EXPECT_EQ( "Power: On, Button: 11 (Sleep), Mode: 1 (Cool), Temp: 25C, " - "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 12 (Auto), Sleep: On, " - "Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", + "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 12 (Auto), " + "Swing(H): 0 (Off), Sleep: On, Health: On, " + "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); // cool 25, health, fan 3, vertical swing auto, sleep on @@ -767,8 +773,9 @@ TEST(TestHaierACYRW02Class, RealStates) { ac.setRaw(expectedState5); EXPECT_EQ( "Power: On, Button: 4 (Fan), Mode: 1 (Cool), Temp: 25C, " - "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 12 (Auto), Sleep: On, " - "Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", + "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 12 (Auto), " + "Swing(H): 0 (Off), Sleep: On, Health: On, " + "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); } @@ -998,8 +1005,9 @@ TEST(TestDecodeHaierAC_YRW02, RealExample) { ac.setRaw(irsend.capture.state); EXPECT_EQ( "Power: On, Button: 5 (Power), Mode: 1 (Cool), Temp: 17C, " - "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), Sleep: Off, " - "Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", + "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), " + "Swing(H): 0 (Off), Sleep: Off, Health: On, " + "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); } @@ -1221,8 +1229,9 @@ TEST(TestDecodeHaierAC176, SyntheticDecode) { EXPECT_FALSE(irsend.capture.repeat); EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits); EXPECT_EQ( - "Power: On, Button: 5 (Power), Mode: 1 (Cool), Temp: 24C, Fan: 5 (Auto), " - "Turbo: Off, Quiet: Off, Swing(V): 6 (UNKNOWN), Sleep: Off, Health: Off, " + "Power: On, Button: 5 (Power), Mode: 1 (Cool), Temp: 24C, " + "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 6 (UNKNOWN), " + "Swing(H): 0 (Off), Sleep: Off, Health: Off, " "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", IRAcUtils::resultAcToString(&irsend.capture)); stdAc::state_t result, prev; @@ -1262,8 +1271,9 @@ TEST(TestHaierAC176Class, BuildKnownState) { ac.setFan(kHaierAcYrw02FanHigh); EXPECT_TRUE(ac.validChecksum(ac.getRaw())); EXPECT_EQ( - "Power: On, Button: 4 (Fan), Mode: 4 (Heat), Temp: 24C, Fan: 1 (High), " - "Turbo: Off, Quiet: Off, Swing(V): 0 (Off), Sleep: Off, Health: On, " + "Power: On, Button: 4 (Fan), Mode: 4 (Heat), Temp: 24C, " + "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 0 (Off), " + "Swing(H): 0 (Off), Sleep: Off, Health: On, " "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); /* Disabled pending: @@ -1354,42 +1364,48 @@ TEST(TestHaierAC176Class, Timers) { EXPECT_EQ(kHaierAcYrw02OnTimer, ac.getTimerMode()); EXPECT_EQ( "Power: Off, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " - "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), Sleep: Off, " - "Health: Off, Timer Mode: 2 (On), On Timer: 00:30, Off Timer: Off", + "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), " + "Swing(H): 0 (Off), Sleep: Off, Health: Off, " + "Timer Mode: 2 (On), On Timer: 00:30, Off Timer: Off", ac.toString()); ac.setRaw(timeroff); EXPECT_EQ(kHaierAcYrw02NoTimers, ac.getTimerMode()); EXPECT_EQ( "Power: On, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " - "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), Sleep: Off, " - "Health: Off, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", + "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), " + "Swing(H): 0 (Off), Sleep: Off, Health: Off, " + "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); ac.setRaw(timeroffthenon); EXPECT_EQ( "Power: On, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " - "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), Sleep: Off, " - "Health: Off, Timer Mode: 5 (Off-On), On Timer: 08:00, Off Timer: 00:30", + "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), " + "Swing(H): 0 (Off), Sleep: Off, Health: Off, " + "Timer Mode: 5 (Off-On), On Timer: 08:00, Off Timer: 00:30", ac.toString()); ac.setTimerMode(kHaierAcYrw02OnThenOffTimer); EXPECT_EQ( "Power: On, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " - "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), Sleep: Off, " - "Health: Off, Timer Mode: 4 (On-Off), On Timer: 08:00, Off Timer: 00:30", + "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), " + "Swing(H): 0 (Off), Sleep: Off, Health: Off, " + "Timer Mode: 4 (On-Off), On Timer: 08:00, Off Timer: 00:30", ac.toString()); ac.setTimerMode(kHaierAcYrw02OffTimer); EXPECT_EQ(0, ac.getOnTimer()); EXPECT_EQ(30, ac.getOffTimer()); EXPECT_EQ( "Power: On, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " - "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), Sleep: Off, " - "Health: Off, Timer Mode: 1 (Off), On Timer: Off, Off Timer: 00:30", + "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), " + "Swing(H): 0 (Off), Sleep: Off, Health: Off, " + "Timer Mode: 1 (Off), On Timer: Off, Off Timer: 00:30", ac.toString()); ac.setTimerMode(kHaierAcYrw02NoTimers); EXPECT_EQ(0, ac.getOnTimer()); EXPECT_EQ(0, ac.getOffTimer()); EXPECT_EQ( "Power: On, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " - "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), Sleep: Off, " - "Health: Off, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", + "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), " + "Swing(H): 0 (Off), Sleep: Off, Health: Off, " + "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); } From 7c3315b2a0a0881d414b39c4759664e1ce351666 Mon Sep 17 00:00:00 2001 From: PtilopsisLeucotis Date: Sun, 17 Oct 2021 22:59:30 +0300 Subject: [PATCH 04/15] Add some horisontal swing tests --- test/ir_Haier_test.cpp | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/test/ir_Haier_test.cpp b/test/ir_Haier_test.cpp index 875b59646..95e698215 100644 --- a/test/ir_Haier_test.cpp +++ b/test/ir_Haier_test.cpp @@ -686,6 +686,43 @@ TEST(TestHaierACYRW02Class, SwingV) { EXPECT_EQ(kHaierAcYrw02SwingVMiddle, ac.getSwingV()); } +TEST(TestHaierACYRW02Class, SwingH) { + IRHaierACYRW02 ac(kGpioUnused); + ac.begin(); + + ac.setSwingH(kHaierAcYrw02SwingVOff); + EXPECT_EQ(kHaierAcYrw02SwingHOff, ac.getSwingH()); + EXPECT_EQ(kHaierAcYrw02ButtonSwingH, ac.getButton()); + + ac.setButton(kHaierAcYrw02ButtonTempUp); + + ac.setSwingH(kHaierAcYrw02SwingHLeftMax); + EXPECT_EQ(kHaierAcYrw02SwingHLeftMax, ac.getSwingH()); + EXPECT_EQ(kHaierAcYrw02ButtonSwingH, ac.getButton()); + + ac.setSwingH(kHaierAcYrw02SwingHLeft); + EXPECT_EQ(kHaierAcYrw02SwingHLeft, ac.getSwingH()); + EXPECT_EQ(kHaierAcYrw02ButtonSwingH, ac.getButton()); + + ac.setSwingH(kHaierAcYrw02SwingHRight); + EXPECT_EQ(kHaierAcYrw02SwingHRight, ac.getSwingH()); + EXPECT_EQ(kHaierAcYrw02ButtonSwingH, ac.getButton()); + + ac.setSwingH(kHaierAcYrw02SwingHRightMax); + EXPECT_EQ(kHaierAcYrw02SwingHRightMax, ac.getSwingH()); + EXPECT_EQ(kHaierAcYrw02ButtonSwingH, ac.getButton()); + + ac.setSwingH(kHaierAcYrw02SwingHAuto); + EXPECT_EQ(kHaierAcYrw02SwingHAuto, ac.getSwingH()); + EXPECT_EQ(kHaierAcYrw02ButtonSwingH, ac.getButton()); + + // Test unexpected values. + ac.setButton(kHaierAcYrw02ButtonTempUp); + ac.setSwingH(0xFF); + EXPECT_EQ(kHaierAcYrw02SwingHAuto, ac.getSwingH()); + EXPECT_EQ(kHaierAcYrw02ButtonTempUp, ac.getButton()); +} + TEST(TestHaierACYRW02Class, MessageConstuction) { IRHaierACYRW02 ac(kGpioUnused); @@ -1138,6 +1175,7 @@ TEST(TestHaierACYRW02Class, toCommon) { ac.setTemp(20); ac.setFan(kHaierAcYrw02FanHigh); ac.setSwingV(kHaierAcYrw02SwingVTop); + ac.setSwingH(kHaierAcYrw02SwingHRightMax); ac.setHealth(true); ac.setSleep(true); // Now test it. @@ -1150,9 +1188,9 @@ TEST(TestHaierACYRW02Class, toCommon) { ASSERT_EQ(stdAc::opmode_t::kCool, ac.toCommon().mode); ASSERT_EQ(stdAc::fanspeed_t::kMax, ac.toCommon().fanspeed); ASSERT_EQ(stdAc::swingv_t::kHighest, ac.toCommon().swingv); + ASSERT_EQ(stdAc::swingh_t::kRightMax, ac.toCommon().swingh); ASSERT_EQ(0, ac.toCommon().sleep); // Unsupported. - ASSERT_EQ(stdAc::swingh_t::kOff, ac.toCommon().swingh); ASSERT_FALSE(ac.toCommon().turbo); ASSERT_FALSE(ac.toCommon().light); ASSERT_FALSE(ac.toCommon().quiet); From c964172e1bdbc5ef96852de7f17885c6ffd8aeee Mon Sep 17 00:00:00 2001 From: PtilopsisLeucotis Date: Sun, 17 Oct 2021 23:22:39 +0300 Subject: [PATCH 05/15] Fix typo --- src/IRac.cpp | 4 ++-- src/ir_Haier.cpp | 4 ++-- test/IRac_test.cpp | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/IRac.cpp b/src/IRac.cpp index 462919bab..8ba604394 100644 --- a/src/IRac.cpp +++ b/src/IRac.cpp @@ -1112,7 +1112,7 @@ void IRac::haier(IRHaierAC *ac, /// @param[in] degrees The temperature setting in degrees. /// @param[in] fan The speed setting for the fan. /// @param[in] swingv The vertical swing setting. -/// @param[in] swingh The horisontal swing setting. +/// @param[in] swingh The horizontal swing setting. /// @param[in] turbo Run the device in turbo/powerful mode. /// @param[in] quiet Run the device in quiet mode. /// @param[in] filter Turn on the (ion/pollen/etc) filter mode. @@ -1149,7 +1149,7 @@ void IRac::haier176(IRHaierAC176 *ac, /// @param[in] degrees The temperature setting in degrees. /// @param[in] fan The speed setting for the fan. /// @param[in] swingv The vertical swing setting. -/// @param[in] swingh The horisontal swing setting. +/// @param[in] swingh The horizontal swing setting. /// @param[in] turbo Run the device in turbo/powerful mode. /// @param[in] quiet Run the device in quiet mode. /// @param[in] filter Turn on the (ion/pollen/etc) filter mode. diff --git a/src/ir_Haier.cpp b/src/ir_Haier.cpp index bc3d798db..544d55fd4 100644 --- a/src/ir_Haier.cpp +++ b/src/ir_Haier.cpp @@ -791,11 +791,11 @@ void IRHaierAC176::setSwingV(uint8_t pos) { _.SwingV = newpos; } -/// Get the Horisontal Swing position setting of the A/C. +/// Get the Horizontal Swing position setting of the A/C. /// @return The native position/mode. uint8_t IRHaierAC176::getSwingH(void) const { return _.SwingH; } -/// Set the Horisontal Swing mode of the A/C. +/// Set the Horizontal Swing mode of the A/C. /// @param[in] pos The position/mode to set the vanes to. void IRHaierAC176::setSwingH(uint8_t pos) { switch (pos) { diff --git a/test/IRac_test.cpp b/test/IRac_test.cpp index 6049a3d1d..a4a12366a 100644 --- a/test/IRac_test.cpp +++ b/test/IRac_test.cpp @@ -799,7 +799,7 @@ TEST(TestIRac, Haier176) { 23, // Celsius stdAc::fanspeed_t::kMedium, // Fan speed stdAc::swingv_t::kHigh, // Vertical swing - stdAc::swingh_t::kOff, // Horisontal swing + stdAc::swingh_t::kOff, // Horizontal swing true, // Turbo false, // Quiet true, // Filter From 6ee9669acf4e9de08a5a5071443b0bf72c1a848b Mon Sep 17 00:00:00 2001 From: PtilopsisLeucotis Date: Sun, 17 Oct 2021 23:54:16 +0300 Subject: [PATCH 06/15] Satisfy cpplint --- src/IRac.cpp | 3 ++- src/ir_Haier.cpp | 5 ++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/IRac.cpp b/src/IRac.cpp index 8ba604394..8ce4a2a15 100644 --- a/src/IRac.cpp +++ b/src/IRac.cpp @@ -1157,7 +1157,8 @@ void IRac::haier176(IRHaierAC176 *ac, void IRac::haierYrwo2(IRHaierACYRW02 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, - const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, + const stdAc::swingv_t swingv, + const stdAc::swingh_t swingh, const bool turbo, const bool quiet, const bool filter, const int16_t sleep) { ac->begin(); diff --git a/src/ir_Haier.cpp b/src/ir_Haier.cpp index 544d55fd4..f46dce37f 100644 --- a/src/ir_Haier.cpp +++ b/src/ir_Haier.cpp @@ -1064,7 +1064,7 @@ String IRHaierAC176::toString(void) const { break; case kHaierAcYrw02ButtonSwingV: result += kSwingVStr; - break; + break; case kHaierAcYrw02ButtonSwingH: result += kSwingHStr; break; @@ -1114,7 +1114,7 @@ String IRHaierAC176::toString(void) const { switch (_.SwingH) { case kHaierAcYrw02SwingHOff: result += kOffStr; - break; + break; case kHaierAcYrw02SwingHLeftMax: result += kLeftMaxStr; break; @@ -1134,7 +1134,6 @@ String IRHaierAC176::toString(void) const { result += kUnknownStr; } result += ')'; - result += addBoolToString(_.Sleep, kSleepStr); result += addBoolToString(_.Health, kHealthStr); const uint8_t tmode = getTimerMode(); From 821c974b828d59150cfebabb1b240e8e99d66c56 Mon Sep 17 00:00:00 2001 From: PtilopsisLeucotis Date: Mon, 18 Oct 2021 18:51:48 +0300 Subject: [PATCH 07/15] Rename back kHaierAcCmdSwingV to kHaierAcCmdSwing --- src/ir_Haier.cpp | 6 +++--- src/ir_Haier.h | 4 ++-- test/ir_Haier_test.cpp | 10 +++++----- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/ir_Haier.cpp b/src/ir_Haier.cpp index f46dce37f..44804ca90 100644 --- a/src/ir_Haier.cpp +++ b/src/ir_Haier.cpp @@ -162,7 +162,7 @@ void IRHaierAC::setCommand(const uint8_t command) { case kHaierAcCmdTimerSet: case kHaierAcCmdTimerCancel: case kHaierAcCmdHealth: - case kHaierAcCmdSwingV: + case kHaierAcCmdSwing: _.Command = command; } } @@ -336,7 +336,7 @@ void IRHaierAC::setSwingV(const uint8_t state) { case kHaierAcSwingVUp: case kHaierAcSwingVDown: case kHaierAcSwingVChg: - _.Command = kHaierAcCmdSwingV; + _.Command = kHaierAcCmdSwing; _.SwingV = state; break; } @@ -491,7 +491,7 @@ String IRHaierAC::toString(void) const { case kHaierAcCmdHealth: result += kHealthStr; break; - case kHaierAcCmdSwingV: + case kHaierAcCmdSwing: result += kSwingVStr; break; default: diff --git a/src/ir_Haier.h b/src/ir_Haier.h index 922980065..c8e892a9e 100644 --- a/src/ir_Haier.h +++ b/src/ir_Haier.h @@ -82,7 +82,7 @@ const uint8_t kHaierAcCmdSleep = 0b1000; const uint8_t kHaierAcCmdTimerSet = 0b1001; const uint8_t kHaierAcCmdTimerCancel = 0b1010; const uint8_t kHaierAcCmdHealth = 0b1100; -const uint8_t kHaierAcCmdSwingV = 0b1101; +const uint8_t kHaierAcCmdSwing = 0b1101; const uint8_t kHaierAcSwingVOff = 0b00; const uint8_t kHaierAcSwingVUp = 0b01; @@ -118,7 +118,7 @@ const uint8_t kHaierAcSleepBit = 0b01000000; #define HAIER_AC_CMD_TIMER_SET kHaierAcCmdTimerSet #define HAIER_AC_CMD_TIMER_CANCEL kHaierAcCmdTimerCancel #define HAIER_AC_CMD_HEALTH kHaierAcCmdHealth -#define HAIER_AC_CMD_SWINGV kHaierAcCmdSwingV +#define HAIER_AC_CMD_SWINGV kHaierAcCmdSwing #define HAIER_AC_SWINGV_OFF kHaierAcSwingVOff #define HAIER_AC_SWINGV_UP kHaierAcSwingVUp #define HAIER_AC_SWINGV_DOWN kHaierAcSwingVDown diff --git a/test/ir_Haier_test.cpp b/test/ir_Haier_test.cpp index 95e698215..f3dd35cc7 100644 --- a/test/ir_Haier_test.cpp +++ b/test/ir_Haier_test.cpp @@ -128,8 +128,8 @@ TEST(TestHaierACClass, Command) { EXPECT_EQ(kHaierAcCmdTimerCancel, ac.getCommand()); ac.setCommand(kHaierAcCmdHealth); EXPECT_EQ(kHaierAcCmdHealth, ac.getCommand()); - ac.setCommand(kHaierAcCmdSwingV); - EXPECT_EQ(kHaierAcCmdSwingV, ac.getCommand()); + ac.setCommand(kHaierAcCmdSwing); + EXPECT_EQ(kHaierAcCmdSwing, ac.getCommand()); ac.setCommand(kHaierAcCmdOn); EXPECT_EQ(kHaierAcCmdOn, ac.getCommand()); ac.setCommand(kHaierAcCmdOff); @@ -251,15 +251,15 @@ TEST(TestHaierACClass, SwingV) { ac.setSwingV(kHaierAcSwingVUp); EXPECT_EQ(kHaierAcSwingVUp, ac.getSwingV()); - EXPECT_EQ(kHaierAcCmdSwingV, ac.getCommand()); + EXPECT_EQ(kHaierAcCmdSwing, ac.getCommand()); ac.setSwingV(kHaierAcSwingVDown); EXPECT_EQ(kHaierAcSwingVDown, ac.getSwingV()); - EXPECT_EQ(kHaierAcCmdSwingV, ac.getCommand()); + EXPECT_EQ(kHaierAcCmdSwing, ac.getCommand()); ac.setSwingV(kHaierAcSwingVChg); EXPECT_EQ(kHaierAcSwingVChg, ac.getSwingV()); - EXPECT_EQ(kHaierAcCmdSwingV, ac.getCommand()); + EXPECT_EQ(kHaierAcCmdSwing, ac.getCommand()); } TEST(TestHaierACClass, CurrentTime) { From 28f86f0098589f5a6c835cfef396a30daf4785bd Mon Sep 17 00:00:00 2001 From: PtilopsisLeucotis Date: Mon, 18 Oct 2021 19:51:41 +0300 Subject: [PATCH 08/15] Cosmetic line up returns --- src/ir_Haier.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ir_Haier.cpp b/src/ir_Haier.cpp index 44804ca90..4356d6b6a 100644 --- a/src/ir_Haier.cpp +++ b/src/ir_Haier.cpp @@ -417,7 +417,7 @@ stdAc::swingv_t IRHaierAC::toCommonSwingV(const uint8_t pos) { case kHaierAcSwingVUp: return stdAc::swingv_t::kHighest; case kHaierAcSwingVDown: return stdAc::swingv_t::kLowest; case kHaierAcSwingVOff: return stdAc::swingv_t::kOff; - default: return stdAc::swingv_t::kAuto; + default: return stdAc::swingv_t::kAuto; } } @@ -986,7 +986,7 @@ stdAc::swingv_t IRHaierAC176::toCommonSwingV(const uint8_t pos) { case kHaierAcYrw02SwingVDown: return stdAc::swingv_t::kLow; case kHaierAcYrw02SwingVBottom: return stdAc::swingv_t::kLowest; case kHaierAcYrw02SwingVOff: return stdAc::swingv_t::kOff; - default: return stdAc::swingv_t::kAuto; + default: return stdAc::swingv_t::kAuto; } } From 037db98f3e0e886825cca019a024e8a6f41ce0b7 Mon Sep 17 00:00:00 2001 From: PtilopsisLeucotis Date: Mon, 18 Oct 2021 21:06:47 +0300 Subject: [PATCH 09/15] Return back `getSwing()`, `setSwing()` functions --- src/ir_Haier.cpp | 14 ++++++++++++++ src/ir_Haier.h | 5 +++++ 2 files changed, 19 insertions(+) diff --git a/src/ir_Haier.cpp b/src/ir_Haier.cpp index 4356d6b6a..cae836df7 100644 --- a/src/ir_Haier.cpp +++ b/src/ir_Haier.cpp @@ -765,6 +765,20 @@ void IRHaierAC176::setFan(uint8_t speed) { } } +/// For backward compatibility. Use getSwingV() instead. +/// Get the Vertical Swing position setting of the A/C. +/// @return The native position/mode. +uint8_t IRHaierAC176::getSwing(void) const { + return IRHaierAC176::getSwingV(); +} + +/// For backward compatibility. Use setSwingV() instead. +/// Set the Vertical Swing mode of the A/C. +/// @param[in] pos The position/mode to set the vanes to. +void IRHaierAC176::setSwing(uint8_t pos) { + return IRHaierAC176::setSwingV(pos); +} + /// Get the Vertical Swing position setting of the A/C. /// @return The native position/mode. uint8_t IRHaierAC176::getSwingV(void) const { return _.SwingV; } diff --git a/src/ir_Haier.h b/src/ir_Haier.h index c8e892a9e..1e44a3074 100644 --- a/src/ir_Haier.h +++ b/src/ir_Haier.h @@ -397,6 +397,11 @@ class IRHaierAC176 { uint8_t getSwingH(void) const; void setSwingH(const uint8_t pos); + /// This functions for backward compatibility. + /// Use getSwingV() and setSwingV() instead. + uint8_t getSwing(void) const; + void setSwing(const uint8_t pos); + void setTimerMode(const uint8_t setting); uint8_t getTimerMode(void) const; void setOnTimer(const uint16_t mins); From cb8259fea272dc56896e5155b668bdd25c7c16a9 Mon Sep 17 00:00:00 2001 From: PtilopsisLeucotis Date: Mon, 18 Oct 2021 22:13:28 +0300 Subject: [PATCH 10/15] Revert changed legacy defines --- src/ir_Haier.h | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/ir_Haier.h b/src/ir_Haier.h index 1e44a3074..618807616 100644 --- a/src/ir_Haier.h +++ b/src/ir_Haier.h @@ -245,18 +245,12 @@ union HaierAc176Protocol{ }; // Legacy Haier YRW02 remote defines. -#define HAIER_AC_YRW02_SWINGV_OFF kHaierAcYrw02SwingVOff -#define HAIER_AC_YRW02_SWINGV_TOP kHaierAcYrw02SwingVTop -#define HAIER_AC_YRW02_SWINGV_MIDDLE kHaierAcYrw02SwingVMiddle -#define HAIER_AC_YRW02_SWINGV_BOTTOM kHaierAcYrw02SwingVBottom -#define HAIER_AC_YRW02_SWINGV_DOWN kHaierAcYrw02SwingVDown -#define HAIER_AC_YRW02_SWINGV_AUTO kHaierAcYrw02SwingVAuto -#define HAIER_AC_YRW02_SWINGH_OFF kHaierAcYrw02SwingHOff -#define HAIER_AC_YRW02_SWINGH_LEFTMAX kHaierAcYrw02SwingHLeftMax -#define HAIER_AC_YRW02_SWINGH_LEFT kHaierAcYrw02SwingHLeft -#define HAIER_AC_YRW02_SWINGH_RIGHT kHaierAcYrw02SwingHRight -#define HAIER_AC_YRW02_SWINGH_RIGHTMAX kHaierAcYrw02SwingHRightMax -#define HAIER_AC_YRW02_SWINGH_AUTO kHaierAcYrw02SwingHAuto +#define HAIER_AC_YRW02_SWING_OFF kHaierAcYrw02SwingOff +#define HAIER_AC_YRW02_SWING_TOP kHaierAcYrw02SwingTop +#define HAIER_AC_YRW02_SWING_MIDDLE kHaierAcYrw02SwingMiddle +#define HAIER_AC_YRW02_SWING_BOTTOM kHaierAcYrw02SwingBottom +#define HAIER_AC_YRW02_SWING_DOWN kHaierAcYrw02SwingDown +#define HAIER_AC_YRW02_SWING_AUTO kHaierAcYrw02SwingAuto #define HAIER_AC_YRW02_FAN_HIGH kHaierAcYrw02FanHigh #define HAIER_AC_YRW02_FAN_MED kHaierAcYrw02FanMed #define HAIER_AC_YRW02_FAN_LOW kHaierAcYrw02FanLow @@ -269,7 +263,7 @@ union HaierAc176Protocol{ #define HAIER_AC_YRW02_FAN kHaierAcYrw02Fan #define HAIER_AC_YRW02_BUTTON_TEMP_UP kHaierAcYrw02ButtonTempUp #define HAIER_AC_YRW02_BUTTON_TEMP_DOWN kHaierAcYrw02ButtonTempDown -#define HAIER_AC_YRW02_BUTTON_SWINGV kHaierAcYrw02ButtonSwingV +#define HAIER_AC_YRW02_BUTTON_SWING kHaierAcYrw02ButtonSwing #define HAIER_AC_YRW02_BUTTON_FAN kHaierAcYrw02ButtonFan #define HAIER_AC_YRW02_BUTTON_POWER kHaierAcYrw02ButtonPower #define HAIER_AC_YRW02_BUTTON_MODE kHaierAcYrw02ButtonMode From a6f2df0e1512652ce57272a1539212cf48fbeed2 Mon Sep 17 00:00:00 2001 From: PtilopsisLeucotis Date: Mon, 18 Oct 2021 23:26:09 +0300 Subject: [PATCH 11/15] Rework SwingH to string conversion --- src/ir_Haier.cpp | 48 ++++++++++++++++-------------------------- src/ir_Haier.h | 2 +- test/IRac_test.cpp | 2 +- test/ir_Haier_test.cpp | 36 +++++++++++++++---------------- 4 files changed, 38 insertions(+), 50 deletions(-) diff --git a/src/ir_Haier.cpp b/src/ir_Haier.cpp index cae836df7..d006b1e2e 100644 --- a/src/ir_Haier.cpp +++ b/src/ir_Haier.cpp @@ -32,6 +32,7 @@ using irutils::addBoolToString; using irutils::addIntToString; using irutils::addLabeledString; using irutils::addModeToString; +using irutils::addSwingHToString; using irutils::addFanToString; using irutils::addTempToString; using irutils::minsToString; @@ -813,7 +814,7 @@ uint8_t IRHaierAC176::getSwingH(void) const { return _.SwingH; } /// @param[in] pos The position/mode to set the vanes to. void IRHaierAC176::setSwingH(uint8_t pos) { switch (pos) { - case kHaierAcYrw02SwingHOff: + case kHaierAcYrw02SwingHMiddle: case kHaierAcYrw02SwingHLeftMax: case kHaierAcYrw02SwingHLeft: case kHaierAcYrw02SwingHRight: @@ -955,13 +956,13 @@ uint8_t IRHaierAC176::convertSwingV(const stdAc::swingv_t position) { /// @return The native equivalent of the enum. uint8_t IRHaierAC176::convertSwingH(const stdAc::swingh_t position) { switch (position) { - case stdAc::swingh_t::kOff: return kHaierAcYrw02SwingHOff; + case stdAc::swingh_t::kMiddle: return kHaierAcYrw02SwingHMiddle; case stdAc::swingh_t::kLeftMax: return kHaierAcYrw02SwingHLeftMax; case stdAc::swingh_t::kLeft: return kHaierAcYrw02SwingHLeft; case stdAc::swingh_t::kRight: return kHaierAcYrw02SwingHRight; case stdAc::swingh_t::kRightMax: return kHaierAcYrw02SwingHRightMax; case stdAc::swingh_t::kAuto: return kHaierAcYrw02SwingHAuto; - default: return kHaierAcYrw02SwingHOff; + default: return kHaierAcYrw02SwingHMiddle; } } @@ -1009,7 +1010,7 @@ stdAc::swingv_t IRHaierAC176::toCommonSwingV(const uint8_t pos) { /// @return The native equivalent of the enum. stdAc::swingh_t IRHaierAC176::toCommonSwingH(const uint8_t pos) { switch (pos) { - case kHaierAcYrw02SwingHOff: return stdAc::swingh_t::kOff; + case kHaierAcYrw02SwingHMiddle: return stdAc::swingh_t::kMiddle; case kHaierAcYrw02SwingHLeftMax: return stdAc::swingh_t::kLeftMax; case kHaierAcYrw02SwingHLeft: return stdAc::swingh_t::kLeft; case kHaierAcYrw02SwingHRight: return stdAc::swingh_t::kRight; @@ -1049,7 +1050,7 @@ stdAc::state_t IRHaierAC176::toCommon(void) const { /// @return A human readable string. String IRHaierAC176::toString(void) const { String result = ""; - result.reserve(130); // Reserve some heap for the string to reduce fragging. + result.reserve(250); // Reserve some heap for the string to reduce fragging. result += addBoolToString(_.Power, kPowerStr, false); uint8_t cmd = _.Button; result += addIntToString(cmd, kButtonStr); @@ -1123,31 +1124,18 @@ String IRHaierAC176::toString(void) const { result += kUnknownStr; } result += ')'; - result += addIntToString(_.SwingH, kSwingHStr); - result += kSpaceLBraceStr; - switch (_.SwingH) { - case kHaierAcYrw02SwingHOff: - result += kOffStr; - break; - case kHaierAcYrw02SwingHLeftMax: - result += kLeftMaxStr; - break; - case kHaierAcYrw02SwingHLeft: - result += kLeftStr; - break; - case kHaierAcYrw02SwingHRight: - result += kRightStr; - break; - case kHaierAcYrw02SwingHRightMax: - result += kRightMaxStr; - break; - case kHaierAcYrw02SwingHAuto: - result += kAutoStr; - break; - default: - result += kUnknownStr; - } - result += ')'; + result += addSwingHToString(_.SwingH, kHaierAcYrw02SwingHAuto, + kHaierAcYrw02SwingHLeftMax, + kHaierAcYrw02SwingHLeft, + kHaierAcYrw02SwingHMiddle, + kHaierAcYrw02SwingHRight, + kHaierAcYrw02SwingHRightMax, + // Below are unused. + kHaierAcYrw02SwingHMiddle, + kHaierAcYrw02SwingHMiddle, + kHaierAcYrw02SwingHMiddle, + kHaierAcYrw02SwingHMiddle, + kHaierAcYrw02SwingHMiddle); result += addBoolToString(_.Sleep, kSleepStr); result += addBoolToString(_.Health, kHealthStr); const uint8_t tmode = getTimerMode(); diff --git a/src/ir_Haier.h b/src/ir_Haier.h index 618807616..839d0101d 100644 --- a/src/ir_Haier.h +++ b/src/ir_Haier.h @@ -143,7 +143,7 @@ const uint8_t kHaierAcYrw02SwingVBottom = 0x3; // Only available in heat mode. const uint8_t kHaierAcYrw02SwingVDown = 0xA; const uint8_t kHaierAcYrw02SwingVAuto = 0xC; // Airflow -const uint8_t kHaierAcYrw02SwingHOff = 0x0; +const uint8_t kHaierAcYrw02SwingHMiddle = 0x0; const uint8_t kHaierAcYrw02SwingHLeftMax = 0x3; const uint8_t kHaierAcYrw02SwingHLeft = 0x4; const uint8_t kHaierAcYrw02SwingHRight = 0x5; diff --git a/test/IRac_test.cpp b/test/IRac_test.cpp index a4a12366a..7ff512e28 100644 --- a/test/IRac_test.cpp +++ b/test/IRac_test.cpp @@ -790,7 +790,7 @@ TEST(TestIRac, Haier176) { const char expected[] = "Power: On, Button: 5 (Power), Mode: 1 (Cool), Temp: 23C, " "Fan: 2 (Medium), Turbo: On, Quiet: Off, Swing(V): 1 (Highest), " - "Swing(H): 0 (Off), Sleep: On, Health: On, " + "Swing(H): 0 (Middle), Sleep: On, Health: On, " "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off"; ac.begin(); irac.haier176(&ac, diff --git a/test/ir_Haier_test.cpp b/test/ir_Haier_test.cpp index f3dd35cc7..baf46096a 100644 --- a/test/ir_Haier_test.cpp +++ b/test/ir_Haier_test.cpp @@ -691,7 +691,7 @@ TEST(TestHaierACYRW02Class, SwingH) { ac.begin(); ac.setSwingH(kHaierAcYrw02SwingVOff); - EXPECT_EQ(kHaierAcYrw02SwingHOff, ac.getSwingH()); + EXPECT_EQ(kHaierAcYrw02SwingHMiddle, ac.getSwingH()); EXPECT_EQ(kHaierAcYrw02ButtonSwingH, ac.getButton()); ac.setButton(kHaierAcYrw02ButtonTempUp); @@ -729,7 +729,7 @@ TEST(TestHaierACYRW02Class, MessageConstuction) { EXPECT_EQ( "Power: On, Button: 5 (Power), Mode: 0 (Auto), Temp: 25C, " "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 0 (Off), " - "Swing(H): 0 (Off), Sleep: Off, Health: On, " + "Swing(H): 0 (Middle), Sleep: Off, Health: On, " "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); ac.setMode(kHaierAcYrw02Cool); @@ -738,7 +738,7 @@ TEST(TestHaierACYRW02Class, MessageConstuction) { EXPECT_EQ( "Power: On, Button: 4 (Fan), Mode: 1 (Cool), Temp: 21C, " "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 0 (Off), " - "Swing(H): 0 (Off), Sleep: Off, Health: On, " + "Swing(H): 0 (Middle), Sleep: Off, Health: On, " "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); @@ -749,7 +749,7 @@ TEST(TestHaierACYRW02Class, MessageConstuction) { EXPECT_EQ( "Power: On, Button: 8 (Turbo), Mode: 1 (Cool), Temp: 21C, " "Fan: 1 (High), Turbo: On, Quiet: Off, Swing(V): 2 (Middle), " - "Swing(H): 0 (Off), Sleep: On, Health: Off, " + "Swing(H): 0 (Middle), Sleep: On, Health: Off, " "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); } @@ -765,7 +765,7 @@ TEST(TestHaierACYRW02Class, RealStates) { EXPECT_EQ( "Power: On, Button: 7 (Health), Mode: 4 (Heat), Temp: 30C, " "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 1 (Highest), " - "Swing(H): 0 (Off), Sleep: Off, Health: Off, " + "Swing(H): 0 (Middle), Sleep: Off, Health: Off, " "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); @@ -776,7 +776,7 @@ TEST(TestHaierACYRW02Class, RealStates) { EXPECT_EQ( "Power: Off, Button: 5 (Power), Mode: 4 (Heat), Temp: 30C, " "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 0 (Off), " - "Swing(H): 0 (Off), Sleep: Off, Health: Off, " + "Swing(H): 0 (Middle), Sleep: Off, Health: Off, " "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); @@ -787,7 +787,7 @@ TEST(TestHaierACYRW02Class, RealStates) { EXPECT_EQ( "Power: On, Button: 1 (Temp Down), Mode: 1 (Cool), Temp: 16C, " "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), " - "Swing(H): 0 (Off), Sleep: Off, Health: On, " + "Swing(H): 0 (Middle), Sleep: Off, Health: On, " "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); @@ -799,7 +799,7 @@ TEST(TestHaierACYRW02Class, RealStates) { EXPECT_EQ( "Power: On, Button: 11 (Sleep), Mode: 1 (Cool), Temp: 25C, " "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 12 (Auto), " - "Swing(H): 0 (Off), Sleep: On, Health: On, " + "Swing(H): 0 (Middle), Sleep: On, Health: On, " "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); @@ -811,7 +811,7 @@ TEST(TestHaierACYRW02Class, RealStates) { EXPECT_EQ( "Power: On, Button: 4 (Fan), Mode: 1 (Cool), Temp: 25C, " "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 12 (Auto), " - "Swing(H): 0 (Off), Sleep: On, Health: On, " + "Swing(H): 0 (Middle), Sleep: On, Health: On, " "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); } @@ -1043,7 +1043,7 @@ TEST(TestDecodeHaierAC_YRW02, RealExample) { EXPECT_EQ( "Power: On, Button: 5 (Power), Mode: 1 (Cool), Temp: 17C, " "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), " - "Swing(H): 0 (Off), Sleep: Off, Health: On, " + "Swing(H): 0 (Middle), Sleep: Off, Health: On, " "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); } @@ -1269,7 +1269,7 @@ TEST(TestDecodeHaierAC176, SyntheticDecode) { EXPECT_EQ( "Power: On, Button: 5 (Power), Mode: 1 (Cool), Temp: 24C, " "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 6 (UNKNOWN), " - "Swing(H): 0 (Off), Sleep: Off, Health: Off, " + "Swing(H): 0 (Middle), Sleep: Off, Health: Off, " "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", IRAcUtils::resultAcToString(&irsend.capture)); stdAc::state_t result, prev; @@ -1311,7 +1311,7 @@ TEST(TestHaierAC176Class, BuildKnownState) { EXPECT_EQ( "Power: On, Button: 4 (Fan), Mode: 4 (Heat), Temp: 24C, " "Fan: 1 (High), Turbo: Off, Quiet: Off, Swing(V): 0 (Off), " - "Swing(H): 0 (Off), Sleep: Off, Health: On, " + "Swing(H): 0 (Middle), Sleep: Off, Health: On, " "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); /* Disabled pending: @@ -1403,7 +1403,7 @@ TEST(TestHaierAC176Class, Timers) { EXPECT_EQ( "Power: Off, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), " - "Swing(H): 0 (Off), Sleep: Off, Health: Off, " + "Swing(H): 0 (Middle), Sleep: Off, Health: Off, " "Timer Mode: 2 (On), On Timer: 00:30, Off Timer: Off", ac.toString()); ac.setRaw(timeroff); @@ -1411,21 +1411,21 @@ TEST(TestHaierAC176Class, Timers) { EXPECT_EQ( "Power: On, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), " - "Swing(H): 0 (Off), Sleep: Off, Health: Off, " + "Swing(H): 0 (Middle), Sleep: Off, Health: Off, " "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); ac.setRaw(timeroffthenon); EXPECT_EQ( "Power: On, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), " - "Swing(H): 0 (Off), Sleep: Off, Health: Off, " + "Swing(H): 0 (Middle), Sleep: Off, Health: Off, " "Timer Mode: 5 (Off-On), On Timer: 08:00, Off Timer: 00:30", ac.toString()); ac.setTimerMode(kHaierAcYrw02OnThenOffTimer); EXPECT_EQ( "Power: On, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), " - "Swing(H): 0 (Off), Sleep: Off, Health: Off, " + "Swing(H): 0 (Middle), Sleep: Off, Health: Off, " "Timer Mode: 4 (On-Off), On Timer: 08:00, Off Timer: 00:30", ac.toString()); ac.setTimerMode(kHaierAcYrw02OffTimer); @@ -1434,7 +1434,7 @@ TEST(TestHaierAC176Class, Timers) { EXPECT_EQ( "Power: On, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), " - "Swing(H): 0 (Off), Sleep: Off, Health: Off, " + "Swing(H): 0 (Middle), Sleep: Off, Health: Off, " "Timer Mode: 1 (Off), On Timer: Off, Off Timer: 00:30", ac.toString()); ac.setTimerMode(kHaierAcYrw02NoTimers); @@ -1443,7 +1443,7 @@ TEST(TestHaierAC176Class, Timers) { EXPECT_EQ( "Power: On, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " "Fan: 5 (Auto), Turbo: Off, Quiet: Off, Swing(V): 2 (Middle), " - "Swing(H): 0 (Off), Sleep: Off, Health: Off, " + "Swing(H): 0 (Middle), Sleep: Off, Health: Off, " "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", ac.toString()); } From 7e30ff9722d7f20eccb379941fff2c9dbaff1304 Mon Sep 17 00:00:00 2001 From: PtilopsisLeucotis Date: Mon, 18 Oct 2021 23:34:34 +0300 Subject: [PATCH 12/15] Satisfy cpplint --- src/ir_Haier.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ir_Haier.h b/src/ir_Haier.h index 839d0101d..7cf02e8de 100644 --- a/src/ir_Haier.h +++ b/src/ir_Haier.h @@ -391,8 +391,8 @@ class IRHaierAC176 { uint8_t getSwingH(void) const; void setSwingH(const uint8_t pos); - /// This functions for backward compatibility. - /// Use getSwingV() and setSwingV() instead. + /// This functions for backward compatibility. + /// Use getSwingV() and setSwingV() instead. uint8_t getSwing(void) const; void setSwing(const uint8_t pos); From 9f61de8064424b8d2ac65ccf662e5ba0fe4229b6 Mon Sep 17 00:00:00 2001 From: PtilopsisLeucotis Date: Wed, 20 Oct 2021 00:24:11 +0300 Subject: [PATCH 13/15] Cosmetic fix `IRHaierAC176::setSwingV()` --- src/ir_Haier.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/ir_Haier.cpp b/src/ir_Haier.cpp index d006b1e2e..e434062e3 100644 --- a/src/ir_Haier.cpp +++ b/src/ir_Haier.cpp @@ -776,9 +776,7 @@ uint8_t IRHaierAC176::getSwing(void) const { /// For backward compatibility. Use setSwingV() instead. /// Set the Vertical Swing mode of the A/C. /// @param[in] pos The position/mode to set the vanes to. -void IRHaierAC176::setSwing(uint8_t pos) { - return IRHaierAC176::setSwingV(pos); -} +void IRHaierAC176::setSwing(uint8_t pos) { setSwingV(pos); } /// Get the Vertical Swing position setting of the A/C. /// @return The native position/mode. From e4e7a49bfa952abca42c17e11568699286b4baf8 Mon Sep 17 00:00:00 2001 From: PtilopsisLeucotis Date: Wed, 20 Oct 2021 00:27:29 +0300 Subject: [PATCH 14/15] Fix gramamatical error in comments --- src/ir_Haier.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ir_Haier.h b/src/ir_Haier.h index 7cf02e8de..e534790e7 100644 --- a/src/ir_Haier.h +++ b/src/ir_Haier.h @@ -391,7 +391,7 @@ class IRHaierAC176 { uint8_t getSwingH(void) const; void setSwingH(const uint8_t pos); - /// This functions for backward compatibility. + /// These functions are for backward compatibility. /// Use getSwingV() and setSwingV() instead. uint8_t getSwing(void) const; void setSwing(const uint8_t pos); From b1e45748563aaa3fe9d1e0ceadc4650db8e016e6 Mon Sep 17 00:00:00 2001 From: PtilopsisLeucotis Date: Wed, 20 Oct 2021 00:54:53 +0300 Subject: [PATCH 15/15] Increase heap size for `IRHaierAC::toString()` --- src/ir_Haier.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ir_Haier.cpp b/src/ir_Haier.cpp index e434062e3..9ec79a72a 100644 --- a/src/ir_Haier.cpp +++ b/src/ir_Haier.cpp @@ -453,7 +453,7 @@ stdAc::state_t IRHaierAC::toCommon(void) const { /// @return A human readable string. String IRHaierAC::toString(void) const { String result = ""; - result.reserve(150); // Reserve some heap for the string to reduce fragging. + result.reserve(170); // Reserve some heap for the string to reduce fragging. uint8_t cmd = _.Command; result += addIntToString(cmd, kCommandStr, false); result += kSpaceLBraceStr;