Skip to content

Commit

Permalink
Tcl: Add positions for SwingV
Browse files Browse the repository at this point in the history
* Add/name the correct swingv positions.
* Update Unit Tests.

For #1486
  • Loading branch information
crankyoldgit committed Sep 12, 2021
1 parent 52a37e7 commit 450ab07
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 9 deletions.
26 changes: 21 additions & 5 deletions src/ir_Tcl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,11 @@ bool IRTcl112Ac::getSwingHorizontal(void) const { return _.SwingH; }
void IRTcl112Ac::setSwingVertical(const uint8_t setting) {
switch (setting) {
case kTcl112AcSwingVOff:
case kTcl112AcSwingVHighest:
case kTcl112AcSwingVHigh:
case kTcl112AcSwingVMiddle:
case kTcl112AcSwingVLow:
case kTcl112AcSwingVLowest:
case kTcl112AcSwingVOn:
_.SwingV = setting;
}
Expand Down Expand Up @@ -403,8 +408,13 @@ stdAc::opmode_t IRTcl112Ac::toCommonMode(const uint8_t mode) {
/// @return The native equivalent of the enum.
uint8_t IRTcl112Ac::convertSwingV(const stdAc::swingv_t position) {
switch (position) {
case stdAc::swingv_t::kOff: return kTcl112AcSwingVOff;
default: return kTcl112AcSwingVOn;
case stdAc::swingv_t::kOff: return kTcl112AcSwingVOff;
case stdAc::swingv_t::kHighest: return kTcl112AcSwingVHighest;
case stdAc::swingv_t::kHigh: return kTcl112AcSwingVHigh;
case stdAc::swingv_t::kMiddle: return kTcl112AcSwingVMiddle;
case stdAc::swingv_t::kLow: return kTcl112AcSwingVLow;
case stdAc::swingv_t::kLowest: return kTcl112AcSwingVLowest;
default: return kTcl112AcSwingVOn;
}
}

Expand Down Expand Up @@ -483,10 +493,16 @@ String IRTcl112Ac::toString(void) const {
result += addBoolToString(_.Turbo, kTurboStr);
result += addBoolToString(_.SwingH, kSwingHStr);
result += addSwingVToString(_.SwingV, kTcl112AcSwingVOff,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, // Unused
kTcl112AcSwingVHighest,
kTcl112AcSwingVHigh,
0xFF, // unused
kTcl112AcSwingVMiddle,
0xFF, // unused
kTcl112AcSwingVLow,
kTcl112AcSwingVLowest,
kTcl112AcSwingVOff,
kTcl112AcSwingVOn, // Swing
0xFF, 0xFF); // Unused
0xFF, 0xFF); // Both Unused
result += addBoolToString(getLight(), kLightStr);
result += addLabeledString(
_.OnTimerEnabled ? minsToString(getOnTimer()) : kOffStr,
Expand Down
9 changes: 7 additions & 2 deletions src/ir_Tcl.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,13 @@ const uint8_t kTcl112AcFanNight = kTcl112AcFanMin;
const float kTcl112AcTempMax = 31.0;
const float kTcl112AcTempMin = 16.0;

const uint8_t kTcl112AcSwingVOn = 0b111;
const uint8_t kTcl112AcSwingVOff = 0b000;
const uint8_t kTcl112AcSwingVOff = 0b000;
const uint8_t kTcl112AcSwingVHighest = 0b001;
const uint8_t kTcl112AcSwingVHigh = 0b010;
const uint8_t kTcl112AcSwingVMiddle = 0b011;
const uint8_t kTcl112AcSwingVLow = 0b100;
const uint8_t kTcl112AcSwingVLowest = 0b101;
const uint8_t kTcl112AcSwingVOn = 0b111;
// MsgType
const uint8_t kTcl112AcNormal = 0b01;
const uint8_t kTcl112AcSpecial = 0b10;
Expand Down
10 changes: 10 additions & 0 deletions test/ir_Tcl_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -361,8 +361,18 @@ TEST(TestTcl112AcClass, SwingVertical) {
EXPECT_EQ(kTcl112AcSwingVOff, ac.getSwingVertical());
ac.setSwingVertical(kTcl112AcSwingVOn);
EXPECT_EQ(kTcl112AcSwingVOn, ac.getSwingVertical());
ac.setSwingVertical(kTcl112AcSwingVHigh);
EXPECT_EQ(kTcl112AcSwingVHigh, ac.getSwingVertical());
ac.setSwingVertical(kTcl112AcSwingVOff);
EXPECT_EQ(kTcl112AcSwingVOff, ac.getSwingVertical());
ac.setSwingVertical(0xFF); // Unused value so shouldn't change from previous.
EXPECT_EQ(kTcl112AcSwingVOff, ac.getSwingVertical());

const uint8_t highest[kTcl112AcStateLength] = {
0x23, 0xCB, 0x26, 0x01, 0x00, 0x24, 0x03,
0x0F, 0x08, 0x00, 0x00, 0x00, 0x00, 0x53};
ac.setRaw(highest);
EXPECT_EQ(kTcl112AcSwingVHighest, ac.getSwingVertical());
}

TEST(TestTcl112AcClass, Turbo) {
Expand Down
4 changes: 2 additions & 2 deletions test/ir_Teknopoint_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ TEST(TestDecodeTeknopoint, RealExample) {
EXPECT_EQ(
"Model: 2 (GZ055BE1), Type: 1, Power: On, Mode: 3 (Cool), Temp: 16C, "
"Fan: 0 (Auto), Econo: Off, Health: Off, Turbo: Off, "
"Swing(H): Off, Swing(V): 1 (UNKNOWN), Light: On, "
"Swing(H): Off, Swing(V): 1 (Highest), Light: On, "
"On Timer: Off, Off Timer: Off",
IRAcUtils::resultAcToString(&irsend.capture));
}
Expand All @@ -72,7 +72,7 @@ TEST(TestDecodeTeknopoint, SyntheticExample) {
EXPECT_EQ(
"Model: 2 (GZ055BE1), Type: 1, Power: On, Mode: 3 (Cool), Temp: 16C, "
"Fan: 0 (Auto), Econo: Off, Health: Off, Turbo: Off, "
"Swing(H): Off, Swing(V): 1 (UNKNOWN), Light: On, "
"Swing(H): Off, Swing(V): 1 (Highest), Light: On, "
"On Timer: Off, Off Timer: Off",
IRAcUtils::resultAcToString(&irsend.capture));

Expand Down

0 comments on commit 450ab07

Please sign in to comment.