[IR] Update Library

This commit is contained in:
jimmys01
2020-08-01 11:51:53 +03:00
parent c40410fda4
commit 8377a8991d
1165 changed files with 237062 additions and 6633 deletions
+347 -113
View File
@@ -1,8 +1,12 @@
// Copyright 2019 David Conran
#include <string>
#include "ir_Airwell.h"
#include "ir_Amcor.h"
#include "ir_Argo.h"
#include "ir_Carrier.h"
#include "ir_Coolix.h"
#include "ir_Corona.h"
#include "ir_Daikin.h"
#include "ir_Delonghi.h"
#include "ir_Electra.h"
@@ -36,10 +40,33 @@
// Tests for IRac class.
TEST(TestIRac, Airwell) {
IRAirwellAc ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power Toggle: On, Mode: 3 (Auto), Fan: 1 (Medium), Temp: 18C";
ac.begin();
irac.airwell(&ac,
true, // Power
stdAc::opmode_t::kAuto, // Mode
18, // Celsius
stdAc::fanspeed_t::kMedium); // Fan speed
ASSERT_EQ(expected, ac.toString());
ac._irsend.makeDecodeResult();
EXPECT_TRUE(capture.decode(&ac._irsend.capture));
ASSERT_EQ(AIRWELL, ac._irsend.capture.decode_type);
ASSERT_EQ(kAirwellBits, ac._irsend.capture.bits);
ASSERT_EQ(expected, IRAcUtils::resultAcToString(&ac._irsend.capture));
stdAc::state_t r, p;
ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p));
}
TEST(TestIRac, Amcor) {
IRAmcorAc ac(0);
IRac irac(0);
IRrecv capture(0);
IRAmcorAc ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 5 (Auto), Fan: 3 (High), Temp: 19C, Max: Off";
@@ -60,8 +87,8 @@ TEST(TestIRac, Amcor) {
}
TEST(TestIRac, Argo) {
IRArgoAC ac(0);
IRac irac(0);
IRArgoAC ac(kGpioUnused);
IRac irac(kGpioUnused);
ac.begin();
irac.argo(&ac,
@@ -80,10 +107,44 @@ TEST(TestIRac, Argo) {
EXPECT_FALSE(ac.getNight()); // Sleep
}
TEST(TestIRac, Carrier64) {
IRCarrierAc64 ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 1 (Heat), Temp: 21C, Fan: 3 (High), Swing(V): On, "
"Sleep: On, On Timer: Off, Off Timer: Off";
ac.begin();
irac.carrier64(&ac,
true, // Power
stdAc::opmode_t::kHeat, // Mode
21, // Celsius
stdAc::fanspeed_t::kHigh, // Fan speed
stdAc::swingv_t::kAuto, // Veritcal swing
1); // Sleep
EXPECT_TRUE(ac.getPower()); // Power.
EXPECT_EQ(kCarrierAc64Heat, ac.getMode()); // Operating mode.
EXPECT_EQ(21, ac.getTemp()); // Temperature.
EXPECT_EQ(kCarrierAc64FanHigh, ac.getFan()); // Fan Speed
EXPECT_TRUE(ac.getSwingV()); // SwingV
EXPECT_TRUE(ac.getSleep()); // Sleep
ASSERT_EQ(expected, ac.toString());
ac._irsend.makeDecodeResult();
EXPECT_TRUE(capture.decode(&ac._irsend.capture));
ASSERT_EQ(CARRIER_AC64, ac._irsend.capture.decode_type);
ASSERT_EQ(kCarrierAc64Bits, ac._irsend.capture.bits);
ASSERT_EQ(expected, IRAcUtils::resultAcToString(&ac._irsend.capture));
stdAc::state_t r, p;
ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p));
}
TEST(TestIRac, Coolix) {
IRCoolixAC ac(0);
IRac irac(0);
IRrecv capture(0);
IRCoolixAC ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 3 (Heat), Fan: 1 (Max), Temp: 21C, Zone Follow: Off, "
"Sensor Temp: Off";
@@ -141,10 +202,52 @@ TEST(TestIRac, Coolix) {
ac._irsend.outputStr());
}
TEST(TestIRac, Corona) {
IRCoronaAc ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expectedAfterSent[] =
"Power: On, Power Button: On, Mode: 0 (Heat), Temp: 21C, "
"Fan: 3 (High), Swing(V) Toggle: On, Econo: On, "
"On Timer: Off, Off Timer: Off";
char expectedCapture[] =
"Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 21C, "
"Fan: 3 (High), Swing(V) Toggle: On, Econo: On, "
"On Timer: Off, Off Timer: Off";
ac.begin();
// this sends as well
irac.corona(&ac,
true, // Power
stdAc::opmode_t::kHeat, // Mode
21, // Celsius
stdAc::fanspeed_t::kHigh, // Fan speed
stdAc::swingv_t::kAuto, // Veritcal swing
true); // Econo (PowerSave)
EXPECT_TRUE(ac.getPower()); // Power.
EXPECT_TRUE(ac.getPowerButton()); // Power.button
EXPECT_EQ(kCoronaAcModeHeat, ac.getMode()); // Operating mode.
EXPECT_EQ(21, ac.getTemp()); // Temperature.
EXPECT_EQ(kCoronaAcFanHigh, ac.getFan()); // Fan Speed
EXPECT_TRUE(ac.getSwingVToggle()); // SwingV
EXPECT_TRUE(ac.getEcono()); // Econo (PowerSave)
ASSERT_EQ(expectedAfterSent, ac.toString());
ac._irsend.makeDecodeResult();
EXPECT_TRUE(capture.decode(&ac._irsend.capture));
ASSERT_EQ(CORONA_AC, ac._irsend.capture.decode_type);
ASSERT_EQ(kCoronaAcBits, ac._irsend.capture.bits);
ASSERT_EQ(expectedCapture, IRAcUtils::resultAcToString(&ac._irsend.capture));
stdAc::state_t r, p;
ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p));
}
TEST(TestIRac, Daikin) {
IRDaikinESP ac(0);
IRac irac(0);
IRrecv capture(0);
IRDaikinESP ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 3 (Cool), Temp: 19C, Fan: 5 (High), Powerful: Off, "
"Quiet: Off, Sensor: Off, Mould: On, Comfort: Off, "
@@ -175,9 +278,9 @@ TEST(TestIRac, Daikin) {
}
TEST(TestIRac, Daikin128) {
IRDaikin128 ac(0);
IRac irac(0);
IRrecv capture(0);
IRDaikin128 ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power Toggle: On, Mode: 8 (Heat), Temp: 27C, Fan: 9 (Quiet), "
"Powerful: Off, Quiet: On, Swing(V): On, Sleep: On, "
@@ -208,9 +311,9 @@ TEST(TestIRac, Daikin128) {
}
TEST(TestIRac, Daikin152) {
IRDaikin152 ac(0);
IRac irac(0);
IRrecv capture(0);
IRDaikin152 ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 3 (Cool), Temp: 27C, Fan: 3 (Medium), Swing(V): On, "
"Powerful: Off, Quiet: Off, Econo: On, Sensor: Off, Comfort: Off";
@@ -236,9 +339,9 @@ TEST(TestIRac, Daikin152) {
}
TEST(TestIRac, Daikin160) {
IRDaikin160 ac(0);
IRac irac(0);
IRrecv capture(0);
IRDaikin160 ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 2 (Dry), Temp: 23C, Fan: 1 (Low), "
"Swing(V): 3 (Middle)";
@@ -261,9 +364,9 @@ TEST(TestIRac, Daikin160) {
}
TEST(TestIRac, Daikin176) {
IRDaikin176 ac(0);
IRac irac(0);
IRrecv capture(0);
IRDaikin176 ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 7 (Cool), Temp: 26C, Fan: 1 (Low), Swing(H): 5 (Auto)";
@@ -285,9 +388,9 @@ TEST(TestIRac, Daikin176) {
}
TEST(TestIRac, Daikin2) {
IRDaikin2 ac(0);
IRac irac(0);
IRrecv capture(0);
IRDaikin2 ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 3 (Cool), Temp: 19C, Fan: 1 (Low), "
"Swing(V): 14 (Auto), Swing(H): 170 (UNKNOWN), Clock: 00:00, "
@@ -323,9 +426,9 @@ TEST(TestIRac, Daikin2) {
}
TEST(TestIRac, Daikin216) {
IRDaikin216 ac(0);
IRac irac(0);
IRrecv capture(0);
IRDaikin216 ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 4 (Heat), Temp: 31C, Fan: 11 (Quiet), "
"Swing(H): On, Swing(V): On, Quiet: On, Powerful: Off";
@@ -432,9 +535,9 @@ TEST(TestIRac, Electra) {
}
TEST(TestIRac, Fujitsu) {
IRFujitsuAC ac(0);
IRac irac(0);
IRrecv capture(0);
IRFujitsuAC ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
std::string ardb1_expected =
"Model: 2 (ARDB1), Power: On, Mode: 1 (Cool), Temp: 19C, "
"Fan: 2 (Medium), Command: N/A";
@@ -512,9 +615,9 @@ TEST(TestIRac, Fujitsu) {
}
TEST(TestIRac, Goodweather) {
IRGoodweatherAc ac(0);
IRac irac(0);
IRrecv capture(0);
IRGoodweatherAc ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 1 (Cool), Temp: 19C, Fan: 2 (Medium), Turbo: Toggle, "
"Light: Toggle, Sleep: Toggle, Swing: 1 (Slow), Command: 0 (Power)";
@@ -540,9 +643,9 @@ TEST(TestIRac, Goodweather) {
}
TEST(TestIRac, Gree) {
IRGreeAC ac(0);
IRac irac(0);
IRrecv capture(0);
IRGreeAC ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Model: 1 (YAW1F), Power: On, Mode: 1 (Cool), Temp: 71F, "
"Fan: 2 (Medium), Turbo: Off, IFeel: Off, WiFi: Off, XFan: On, "
@@ -573,9 +676,9 @@ TEST(TestIRac, Gree) {
}
TEST(TestIRac, Haier) {
IRHaierAC ac(0);
IRac irac(0);
IRrecv capture(0);
IRHaierAC ac(kGpioUnused);
IRac irac(kGpioUnused);
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, "
@@ -603,9 +706,9 @@ TEST(TestIRac, Haier) {
TEST(TestIRac, HaierYrwo2) {
IRHaierACYRW02 ac(0);
IRac irac(0);
IRrecv capture(0);
IRHaierACYRW02 ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Button: 5 (Power), Mode: 1 (Cool), Temp: 23C, "
"Fan: 2 (Medium), Turbo: 1 (High), Swing: 1 (Highest), Sleep: On, "
@@ -632,9 +735,9 @@ TEST(TestIRac, HaierYrwo2) {
}
TEST(TestIRac, Hitachi) {
IRHitachiAc ac(0);
IRac irac(0);
IRrecv capture(0);
IRHitachiAc ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 2 (Auto), Temp: 22C, Fan: 3 (Medium), "
"Swing(V): Off, Swing(H): On";
@@ -690,16 +793,67 @@ TEST(TestIRac, Hitachi1) {
ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p));
}
TEST(TestIRac, Hitachi344) {
IRHitachiAc344 ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected_swingon[] =
"Power: On, Mode: 6 (Heat), Temp: 25C, Fan: 6 (Max), "
"Button: 129 (Swing(V)), Swing(V): Off, Swing(H): 2 (Right)";
ac.begin();
irac.hitachi344(&ac,
true, // Power
stdAc::opmode_t::kHeat, // Mode
25, // Celsius
stdAc::fanspeed_t::kMax, // Fan speed
stdAc::swingv_t::kAuto, // Swing(V)
stdAc::swingh_t::kRight); // Swing(H)
ASSERT_EQ(expected_swingon, ac.toString());
ac._irsend.makeDecodeResult();
EXPECT_TRUE(capture.decode(&ac._irsend.capture));
ASSERT_EQ(HITACHI_AC344, ac._irsend.capture.decode_type);
ASSERT_EQ(kHitachiAc344Bits, ac._irsend.capture.bits);
ASSERT_EQ(expected_swingon, IRAcUtils::resultAcToString(&ac._irsend.capture));
stdAc::state_t r, p;
ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p));
EXPECT_EQ(decode_type_t::HITACHI_AC344, r.protocol);
EXPECT_TRUE(r.power);
EXPECT_EQ(stdAc::opmode_t::kHeat, r.mode);
EXPECT_EQ(25, r.degrees);
char expected_swingoff[] =
"Power: On, Mode: 6 (Heat), Temp: 25C, Fan: 6 (Max), "
"Button: 19 (Power/Mode), Swing(V): Off, Swing(H): 2 (Right)";
ac._irsend.reset();
irac.hitachi344(&ac,
true, // Power
stdAc::opmode_t::kHeat, // Mode
25, // Celsius
stdAc::fanspeed_t::kMax, // Fan speed
stdAc::swingv_t::kOff, // Swing(V)
stdAc::swingh_t::kRight); // Swing(H)
ASSERT_EQ(expected_swingoff, ac.toString());
ac._irsend.makeDecodeResult();
EXPECT_TRUE(capture.decode(&ac._irsend.capture));
ASSERT_EQ(HITACHI_AC344, ac._irsend.capture.decode_type);
ASSERT_EQ(kHitachiAc344Bits, ac._irsend.capture.bits);
ASSERT_EQ(expected_swingoff,
IRAcUtils::resultAcToString(&ac._irsend.capture));
}
TEST(TestIRac, Hitachi424) {
IRHitachiAc424 ac(0);
IRac irac(0);
IRrecv capture(0);
IRHitachiAc424 ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 6 (Heat), Temp: 25C, Fan: 6 (Max), "
"Swing(V) Toggle: Off, Button: 19 (Power/Mode)";
"Button: 19 (Power/Mode), Swing(V) Toggle: Off";
char expected_swingv[] =
"Power: On, Mode: 3 (Cool), Temp: 26C, Fan: 1 (Min), "
"Swing(V) Toggle: On, Button: 129 (Swing(V))";
"Button: 129 (Swing(V)), Swing(V) Toggle: On";
ac.begin();
irac.hitachi424(&ac,
@@ -736,9 +890,9 @@ TEST(TestIRac, Hitachi424) {
}
TEST(TestIRac, Kelvinator) {
IRKelvinatorAC ac(0);
IRac irac(0);
IRrecv capture(0);
IRKelvinatorAC ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 1 (Cool), Temp: 19C, Fan: 3 (Medium), Turbo: Off, "
"Quiet: Off, XFan: On, Ion: On, Light: On, "
@@ -769,9 +923,9 @@ TEST(TestIRac, Kelvinator) {
}
TEST(TestIRac, LG) {
IRLgAc ac(0);
IRac irac(0);
IRrecv capture(0);
IRLgAc ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Model: 1 (GE6711AR2853M), "
"Power: On, Mode: 1 (Dry), Temp: 27C, Fan: 2 (Medium)";
@@ -795,12 +949,12 @@ TEST(TestIRac, LG) {
}
TEST(TestIRac, Midea) {
IRMideaAC ac(0);
IRac irac(0);
IRrecv capture(0);
IRMideaAC ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 1 (Dry), Celsius: On, Temp: 27C/80F, Fan: 2 (Medium), "
"Sleep: On, Swing(V) Toggle: Off";
"Sleep: On, Swing(V) Toggle: Off, Econo Toggle: Off";
ac.begin();
irac.midea(&ac,
@@ -810,6 +964,7 @@ TEST(TestIRac, Midea) {
27, // Degrees
stdAc::fanspeed_t::kMedium, // Fan speed
stdAc::swingv_t::kOff, // Swing(V)
false, // Econo
8 * 60 + 0); // Sleep time
ASSERT_EQ(expected, ac.toString());
@@ -823,9 +978,9 @@ TEST(TestIRac, Midea) {
}
TEST(TestIRac, Mitsubishi) {
IRMitsubishiAC ac(0);
IRac irac(0);
IRrecv capture(0);
IRMitsubishiAC ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 3 (Cool), Temp: 20C, Fan: 2 (Medium), "
"Swing(V): 0 (Auto), Swing(H): 3 (UNKNOWN), "
@@ -852,9 +1007,9 @@ TEST(TestIRac, Mitsubishi) {
}
TEST(TestIRac, Mitsubishi136) {
IRMitsubishi136 ac(0);
IRac irac(0);
IRrecv capture(0);
IRMitsubishi136 ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 5 (Dry), Temp: 22C, Fan: 3 (High), "
"Swing(V): 3 (Highest), Quiet: Off";
@@ -878,9 +1033,9 @@ TEST(TestIRac, Mitsubishi136) {
}
TEST(TestIRac, MitsubishiHeavy88) {
IRMitsubishiHeavy88Ac ac(0);
IRac irac(0);
IRrecv capture(0);
IRMitsubishiHeavy88Ac ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 1 (Cool), Temp: 21C, Fan: 3 (Med), "
"Swing(V): 4 (Auto), Swing(H): 0 (Off), Turbo: Off, Econo: Off, "
@@ -908,9 +1063,9 @@ TEST(TestIRac, MitsubishiHeavy88) {
}
TEST(TestIRac, MitsubishiHeavy152) {
IRMitsubishiHeavy152Ac ac(0);
IRac irac(0);
IRrecv capture(0);
IRMitsubishiHeavy152Ac ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 1 (Cool), Temp: 20C, Fan: 6 (Econo), "
"Swing(V): 6 (Off), Swing(H): 0 (Auto), Silent: On, Turbo: Off, "
@@ -941,9 +1096,9 @@ TEST(TestIRac, MitsubishiHeavy152) {
}
TEST(TestIRac, Neoclima) {
IRNeoclimaAc ac(0);
IRac irac(0);
IRrecv capture(0);
IRNeoclimaAc ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 1 (Cool), Temp: 20C, Fan: 3 (Low), "
"Swing(V): Off, Swing(H): On, Sleep: On, Turbo: Off, Hold: Off, Ion: On, "
@@ -973,9 +1128,9 @@ TEST(TestIRac, Neoclima) {
}
TEST(TestIRac, Panasonic) {
IRPanasonicAc ac(0);
IRac irac(0);
IRrecv capture(0);
IRPanasonicAc ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected_nke[] =
"Model: 2 (NKE), Power: On, Mode: 4 (Heat), Temp: 28C, Fan: 2 (Medium), "
"Swing(V): 15 (Auto), Swing(H): 6 (Middle), Quiet: On, "
@@ -1031,9 +1186,9 @@ TEST(TestIRac, Panasonic) {
}
TEST(TestIRac, Samsung) {
IRSamsungAc ac(0);
IRac irac(0);
IRrecv capture(0);
IRSamsungAc ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 0 (Auto), Temp: 28C, Fan: 6 (Auto), Swing: On, "
"Beep: On, Clean: On, Quiet: On, Powerful: Off, Breeze: Off, "
@@ -1093,10 +1248,38 @@ TEST(TestIRac, Samsung) {
ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p));
}
TEST(TestIRac, Sanyo) {
IRSanyoAc ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 2 (Cool), Temp: 28C, Fan: 3 (Medium), "
"Swing(V): 7 (Highest), Sleep: On, Beep: On, "
"Sensor: Wall, Sensor Temp: 28C, Off Timer: Off";
ac.begin();
irac.sanyo(&ac,
true, // Power
stdAc::opmode_t::kCool, // Mode
28, // Celsius
stdAc::fanspeed_t::kMedium, // Fan speed
stdAc::swingv_t::kHighest, // Vertical Swing
true, // Beep
17); // Sleep
ASSERT_EQ(expected, ac.toString());
ac._irsend.makeDecodeResult();
EXPECT_TRUE(capture.decode(&ac._irsend.capture));
ASSERT_EQ(SANYO_AC, ac._irsend.capture.decode_type);
ASSERT_EQ(kSanyoAcBits, ac._irsend.capture.bits);
ASSERT_EQ(expected, IRAcUtils::resultAcToString(&ac._irsend.capture));
stdAc::state_t r, p;
ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p));
}
TEST(TestIRac, Sharp) {
IRSharpAc ac(0);
IRac irac(0);
IRrecv capture(0);
IRSharpAc ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 2 (Cool), Temp: 28C, Fan: 3 (Medium), "
"Turbo: Off, Swing(V) Toggle: On, Ion: On, Econo: -, Clean: Off";
@@ -1123,9 +1306,9 @@ TEST(TestIRac, Sharp) {
}
TEST(TestIRac, Tcl112) {
IRTcl112Ac ac(0);
IRac irac(0);
IRrecv capture(0);
IRTcl112Ac ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 3 (Cool), Temp: 20C, Fan: 3 (Medium), Econo: On, "
"Health: On, Light: On, Turbo: Off, Swing(H): On, Swing(V): Off";
@@ -1153,9 +1336,9 @@ TEST(TestIRac, Tcl112) {
}
TEST(TestIRac, Teco) {
IRTecoAc ac(0);
IRac irac(0);
IRrecv capture(0);
IRTecoAc ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 0 (Auto), Temp: 21C, Fan: 2 (Medium), Sleep: On, "
"Swing: On, Light: On, Humid: Off, Save: Off, Timer: Off";
@@ -1180,31 +1363,82 @@ TEST(TestIRac, Teco) {
}
TEST(TestIRac, Toshiba) {
IRToshibaAC ac(0);
IRac irac(0);
IRrecv capture(0);
char expected[] = "Power: On, Mode: 2 (Dry), Temp: 29C, Fan: 2 (UNKNOWN)";
IRToshibaAC ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Temp: 29C, Power: On, Mode: 2 (Dry), Fan: 2 (UNKNOWN), "
"Turbo: Off, Econo: On";
ac.begin();
irac.toshiba(&ac,
true, // Power
stdAc::opmode_t::kDry, // Mode
29, // Celsius
stdAc::fanspeed_t::kLow); // Fan speed
stdAc::fanspeed_t::kLow, // Fan speed
stdAc::swingv_t::kOff, // Vertical Swing
false, // Turbo
true); // Econo
ASSERT_EQ(expected, ac.toString());
ASSERT_EQ(kToshibaACStateLengthLong, ac.getStateLength());
ac._irsend.makeDecodeResult();
EXPECT_TRUE(capture.decode(&ac._irsend.capture));
ASSERT_EQ(TOSHIBA_AC, ac._irsend.capture.decode_type);
ASSERT_EQ(kToshibaACBits, ac._irsend.capture.bits);
ASSERT_EQ(kToshibaACBitsLong, ac._irsend.capture.bits);
ASSERT_EQ(expected, IRAcUtils::resultAcToString(&ac._irsend.capture));
stdAc::state_t r, p;
ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p));
EXPECT_EQ(
"f38000d50"
"m4400s4300"
"m580s1600m580s1600m580s1600m580s1600m580s490m580s490m580s1600m580s490"
"m580s490m580s490m580s490m580s490m580s1600m580s1600m580s490m580s1600"
"m580s490m580s490m580s490m580s490m580s490m580s1600m580s490m580s490"
"m580s1600m580s1600m580s1600m580s1600m580s1600m580s490m580s1600m580s1600"
"m580s490m580s490m580s490m580s490m580s1600m580s490m580s490m580s1600"
"m580s1600m580s1600m580s490m580s490m580s490m580s490m580s490m580s490"
"m580s490m580s1600m580s1600m580s490m580s490m580s490m580s1600m580s490"
"m580s490m580s490m580s490m580s490m580s490m580s490m580s490m580s490"
"m580s490m580s490m580s490m580s490m580s490m580s490m580s1600m580s1600"
"m580s1600m580s490m580s1600m580s490m580s1600m580s490m580s490m580s490"
"m580s7400"
"m4400s4300"
"m580s1600m580s1600m580s1600m580s1600m580s490m580s490m580s1600m580s490"
"m580s490m580s490m580s490m580s490m580s1600m580s1600m580s490m580s1600"
"m580s490m580s490m580s490m580s490m580s490m580s1600m580s490m580s490"
"m580s1600m580s1600m580s1600m580s1600m580s1600m580s490m580s1600m580s1600"
"m580s490m580s490m580s490m580s490m580s1600m580s490m580s490m580s1600"
"m580s1600m580s1600m580s490m580s490m580s490m580s490m580s490m580s490"
"m580s490m580s1600m580s1600m580s490m580s490m580s490m580s1600m580s490"
"m580s490m580s490m580s490m580s490m580s490m580s490m580s490m580s490"
"m580s490m580s490m580s490m580s490m580s490m580s490m580s1600m580s1600"
"m580s1600m580s490m580s1600m580s490m580s1600m580s490m580s490m580s490"
"m580s7400"
"m4400s4300"
"m580s1600m580s1600m580s1600m580s1600m580s490m580s490m580s1600m580s490"
"m580s490m580s490m580s490m580s490m580s1600m580s1600m580s490m580s1600"
"m580s490m580s490m580s490m580s490m580s490m580s490m580s490m580s1600"
"m580s1600m580s1600m580s1600m580s1600m580s1600m580s1600m580s1600m580s490"
"m580s490m580s490m580s1600m580s490m580s490m580s490m580s490m580s1600"
"m580s490m580s490m580s490m580s490m580s490m580s490m580s1600m580s490"
"m580s490m580s490m580s1600m580s490m580s490m580s490m580s1600m580s1600"
"m580s7400"
"m4400s4300"
"m580s1600m580s1600m580s1600m580s1600m580s490m580s490m580s1600m580s490"
"m580s490m580s490m580s490m580s490m580s1600m580s1600m580s490m580s1600"
"m580s490m580s490m580s490m580s490m580s490m580s490m580s490m580s1600"
"m580s1600m580s1600m580s1600m580s1600m580s1600m580s1600m580s1600m580s490"
"m580s490m580s490m580s1600m580s490m580s490m580s490m580s490m580s1600"
"m580s490m580s490m580s490m580s490m580s490m580s490m580s1600m580s490"
"m580s490m580s490m580s1600m580s490m580s490m580s490m580s1600m580s1600"
"m580s7400",
ac._irsend.outputStr());
}
TEST(TestIRac, Trotec) {
IRTrotecESP ac(0);
IRac irac(0);
IRrecv capture(0);
IRTrotecESP ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 1 (Cool), Temp: 18C, Fan: 3 (High), Sleep: On";
@@ -1231,9 +1465,9 @@ TEST(TestIRac, Trotec) {
}
TEST(TestIRac, Vestel) {
IRVestelAc ac(0);
IRac irac(0);
IRrecv capture(0);
IRVestelAc ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Power: On, Mode: 0 (Auto), Temp: 22C, Fan: 5 (Low), Sleep: On, "
"Turbo: Off, Ion: On, Swing: On";
@@ -1322,9 +1556,9 @@ TEST(TestIRac, Vestel) {
TEST(TestIRac, Whirlpool) {
IRWhirlpoolAc ac(0);
IRac irac(0);
IRrecv capture(0);
IRWhirlpoolAc ac(kGpioUnused);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
char expected[] =
"Model: 1 (DG11J13A), Power Toggle: On, Mode: 1 (Auto), Temp: 21C, "
"Fan: 3 (Low), Swing: On, Light: On, Clock: 23:58, On Timer: Off, "
@@ -1625,9 +1859,9 @@ TEST(TestIRac, Issue821) {
next = prev;
next.light = true;
IRac irac(0);
IRrecv capture(0);
IRCoolixAC ac(0);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
IRCoolixAC ac(kGpioUnused);
ac.begin();
result = irac.handleToggles(next, &prev);
@@ -1714,9 +1948,9 @@ TEST(TestIRac, Issue1001) {
desired = prev;
desired.power = false;
IRac irac(0);
IRrecv capture(0);
IRWhirlpoolAc ac(0);
IRac irac(kGpioUnused);
IRrecv capture(kGpioUnused);
IRWhirlpoolAc ac(kGpioUnused);
ac.begin();
ASSERT_TRUE(prev.power);