Update IRRemote ESP8266 to 2.6.2 and add ESP32 support
This commit is contained in:
1 parent
2ee18320be
commit
24bcdbc97c
195 files changed
+22963
-4737
No files matched your search
@@ -19,6 +19,7 @@ TEST(TestSendHaierAC, SendDataOnly) {
|
||||
irsend.reset();
|
||||
irsend.sendHaierAC(haier_zero);
|
||||
EXPECT_EQ(
|
||||
"f38000d50"
|
||||
"m3000s3000m3000s4300"
|
||||
"m520s650m520s650m520s650m520s650m520s650m520s650m520s650m520s650"
|
||||
"m520s650m520s650m520s650m520s650m520s650m520s650m520s650m520s650"
|
||||
@@ -37,6 +38,7 @@ TEST(TestSendHaierAC, SendDataOnly) {
|
||||
irsend.reset();
|
||||
irsend.sendHaierAC(haier_test);
|
||||
EXPECT_EQ(
|
||||
"f38000d50"
|
||||
"m3000s3000m3000s4300"
|
||||
"m520s1650m520s650m520s1650m520s650m520s650m520s1650m520s650m520s1650"
|
||||
"m520s650m520s650m520s650m520s650m520s650m520s650m520s650m520s1650"
|
||||
@@ -62,6 +64,7 @@ TEST(TestSendHaierAC, SendWithRepeats) {
|
||||
irsend.reset();
|
||||
irsend.sendHaierAC(haier_test, kHaierACStateLength, 2); // two repeats.
|
||||
EXPECT_EQ(
|
||||
"f38000d50"
|
||||
"m3000s3000m3000s4300"
|
||||
"m520s1650m520s650m520s1650m520s650m520s650m520s1650m520s650m520s1650"
|
||||
"m520s650m520s650m520s650m520s650m520s650m520s650m520s650m520s1650"
|
||||
@@ -374,7 +377,7 @@ TEST(TestHaierACClass, MessageConstuction) {
|
||||
haier.setSleep(true);
|
||||
haier.setCurrTime(615); // 10:15am
|
||||
EXPECT_EQ(
|
||||
"Command: 8 (Sleep), Mode: 3 (HEAT), Temp: 21C, Fan: 3 (MAX), "
|
||||
"Command: 8 (Sleep), Mode: 1 (COOL), Temp: 21C, Fan: 3 (MAX), "
|
||||
"Swing: 3 (Chg), Sleep: On, Health: On, "
|
||||
"Current Time: 10:15, On Timer: Off, Off Timer: Off",
|
||||
haier.toString());
|
||||
@@ -383,7 +386,7 @@ TEST(TestHaierACClass, MessageConstuction) {
|
||||
haier.setCommand(kHaierAcCmdOn);
|
||||
|
||||
EXPECT_EQ(
|
||||
"Command: 1 (On), Mode: 2 (DRY), Temp: 21C, Fan: 2, "
|
||||
"Command: 1 (On), Mode: 1 (COOL), Temp: 21C, Fan: 2, "
|
||||
"Swing: 3 (Chg), Sleep: On, Health: On, "
|
||||
"Current Time: 10:15, On Timer: 13:20, Off Timer: 18:45",
|
||||
haier.toString());
|
||||
@@ -393,18 +396,18 @@ TEST(TestHaierACClass, MessageConstuction) {
|
||||
EXPECT_EQ(
|
||||
"Command: 2 (Mode), Mode: 3 (HEAT), Temp: 21C, Fan: 2, "
|
||||
"Swing: 3 (Chg), Sleep: On, Health: On, "
|
||||
"Current Time: 10:15, On Timer: 13:52, Off Timer: 18:45",
|
||||
"Current Time: 10:15, On Timer: 13:20, Off Timer: 18:45",
|
||||
haier.toString());
|
||||
|
||||
haier.setTemp(25);
|
||||
EXPECT_EQ(
|
||||
"Command: 6 (Temp Up), Mode: 3 (HEAT), Temp: 25C, Fan: 2, "
|
||||
"Swing: 3 (Chg), Sleep: On, Health: On, "
|
||||
"Current Time: 10:15, On Timer: 13:52, Off Timer: 18:45",
|
||||
"Current Time: 10:15, On Timer: 13:20, Off Timer: 18:45",
|
||||
haier.toString());
|
||||
|
||||
uint8_t expectedState[kHaierACStateLength] = {0xA5, 0x96, 0xEA, 0xCF, 0x32,
|
||||
0x2D, 0x0D, 0x74, 0xD4};
|
||||
0xED, 0x6D, 0x54, 0xD4};
|
||||
EXPECT_STATE_EQ(expectedState, haier.getRaw(), kHaierACBits);
|
||||
|
||||
// Check that the checksum is valid.
|
||||
@@ -828,7 +831,7 @@ TEST(TestDecodeHaierAC, RealExample1) {
|
||||
IRHaierAC haier(0);
|
||||
haier.setRaw(irsend.capture.state);
|
||||
EXPECT_EQ(
|
||||
"Command: 1 (On), Mode: 0 (AUTO), Temp: 16C, Fan: 0 (AUTO), "
|
||||
"Command: 1 (On), Mode: 1 (COOL), Temp: 16C, Fan: 0 (AUTO), "
|
||||
"Swing: 0 (Off), Sleep: Off, Health: Off, "
|
||||
"Current Time: 00:01, On Timer: Off, Off Timer: Off",
|
||||
haier.toString());
|
||||
@@ -870,7 +873,7 @@ TEST(TestDecodeHaierAC, RealExample2) {
|
||||
IRHaierAC haier(0);
|
||||
haier.setRaw(irsend.capture.state);
|
||||
EXPECT_EQ(
|
||||
"Command: 6 (Temp Up), Mode: 0 (AUTO), Temp: 22C, Fan: 0 (AUTO), "
|
||||
"Command: 6 (Temp Up), Mode: 1 (COOL), Temp: 22C, Fan: 0 (AUTO), "
|
||||
"Swing: 0 (Off), Sleep: Off, Health: Off, "
|
||||
"Current Time: 00:01, On Timer: Off, Off Timer: Off",
|
||||
haier.toString());
|
||||
@@ -912,7 +915,7 @@ TEST(TestDecodeHaierAC, RealExample3) {
|
||||
IRHaierAC haier(0);
|
||||
haier.setRaw(irsend.capture.state);
|
||||
EXPECT_EQ(
|
||||
"Command: 12 (Health), Mode: 0 (AUTO), Temp: 30C, Fan: 0 (AUTO), "
|
||||
"Command: 12 (Health), Mode: 1 (COOL), Temp: 30C, Fan: 0 (AUTO), "
|
||||
"Swing: 0 (Off), Sleep: Off, Health: On, "
|
||||
"Current Time: 00:09, On Timer: Off, Off Timer: Off",
|
||||
haier.toString());
|
||||
@@ -987,3 +990,154 @@ TEST(TestDecodeHaierAC_YRW02, RealExample) {
|
||||
" Health: On",
|
||||
haier.toString());
|
||||
}
|
||||
|
||||
// Default state of the remote needed to include hidden data.
|
||||
// Ref: https://github.com/markszabo/IRremoteESP8266/issues/668
|
||||
TEST(TestHaierAcIssues, Issue668) {
|
||||
IRHaierAC ac(0);
|
||||
IRHaierAC acText(1);
|
||||
IRrecv irrecv(0);
|
||||
ac.begin();
|
||||
|
||||
// Turn on the AC.
|
||||
ac._irsend.reset();
|
||||
char expected_on[] =
|
||||
"Command: 1 (On), Mode: 1 (COOL), Temp: 25C, Fan: 0 (AUTO), "
|
||||
"Swing: 0 (Off), Sleep: Off, Health: Off, Current Time: 00:00, "
|
||||
"On Timer: Off, Off Timer: Off";
|
||||
// State taken from real capture:
|
||||
// https://github.com/markszabo/IRremoteESP8266/issues/668#issuecomment-483531895
|
||||
uint8_t expected_on_state[9] = {
|
||||
0xA5, 0x91, 0x20, 0x00, 0x0C, 0xC0, 0x20, 0x00, 0x42};
|
||||
ac.setMode(kHaierAcCool);
|
||||
ac.setCommand(kHaierAcCmdOn);
|
||||
EXPECT_EQ(expected_on, ac.toString());
|
||||
ac.send();
|
||||
ac._irsend.makeDecodeResult();
|
||||
ASSERT_TRUE(irrecv.decode(&ac._irsend.capture));
|
||||
ASSERT_EQ(HAIER_AC, ac._irsend.capture.decode_type);
|
||||
EXPECT_EQ(kHaierACBits, ac._irsend.capture.bits);
|
||||
EXPECT_STATE_EQ(expected_on_state,
|
||||
ac._irsend.capture.state, ac._irsend.capture.bits);
|
||||
acText.setRaw(ac._irsend.capture.state);
|
||||
EXPECT_EQ(expected_on, acText.toString());
|
||||
|
||||
// Set the temp to 25C
|
||||
ac._irsend.reset();
|
||||
ac.setTemp(25);
|
||||
EXPECT_EQ(expected_on, ac.toString());
|
||||
ASSERT_EQ(25, ac.getTemp());
|
||||
ac.send();
|
||||
ac._irsend.makeDecodeResult();
|
||||
ASSERT_TRUE(irrecv.decode(&ac._irsend.capture));
|
||||
ASSERT_EQ(HAIER_AC, ac._irsend.capture.decode_type);
|
||||
EXPECT_EQ(kHaierACBits, ac._irsend.capture.bits);
|
||||
EXPECT_STATE_EQ(expected_on_state,
|
||||
ac._irsend.capture.state, ac._irsend.capture.bits);
|
||||
acText.setRaw(ac._irsend.capture.state);
|
||||
EXPECT_EQ(expected_on, acText.toString());
|
||||
|
||||
// Increase the temp by 1.
|
||||
ac._irsend.reset();
|
||||
char expected_temp_plus_one[] =
|
||||
"Command: 6 (Temp Up), Mode: 1 (COOL), Temp: 26C, Fan: 0 (AUTO), "
|
||||
"Swing: 0 (Off), Sleep: Off, Health: Off, Current Time: 00:00, "
|
||||
"On Timer: Off, Off Timer: Off";
|
||||
// State taken from real capture:
|
||||
// https://github.com/markszabo/IRremoteESP8266/issues/668#issuecomment-483531895
|
||||
uint8_t expected_temp_plus_one_state[9] = {
|
||||
0xA5, 0xA6, 0x20, 0x00, 0x0C, 0xC0, 0x20, 0x00, 0x57};
|
||||
ASSERT_EQ(25, ac.getTemp());
|
||||
ac.setTemp(ac.getTemp() + 1);
|
||||
ASSERT_EQ(26, ac.getTemp());
|
||||
EXPECT_EQ(expected_temp_plus_one, ac.toString());
|
||||
ac.send();
|
||||
ac._irsend.makeDecodeResult();
|
||||
ASSERT_TRUE(irrecv.decode(&ac._irsend.capture));
|
||||
ASSERT_EQ(HAIER_AC, ac._irsend.capture.decode_type);
|
||||
EXPECT_EQ(kHaierACBits, ac._irsend.capture.bits);
|
||||
EXPECT_STATE_EQ(expected_temp_plus_one_state,
|
||||
ac._irsend.capture.state, ac._irsend.capture.bits);
|
||||
acText.setRaw(ac._irsend.capture.state);
|
||||
EXPECT_EQ(expected_temp_plus_one, acText.toString());
|
||||
|
||||
// Decrease the temp by 1.
|
||||
ac._irsend.reset();
|
||||
char expected_temp_minus_one[] =
|
||||
"Command: 7 (Temp Down), Mode: 1 (COOL), Temp: 25C, Fan: 0 (AUTO), "
|
||||
"Swing: 0 (Off), Sleep: Off, Health: Off, Current Time: 00:00, "
|
||||
"On Timer: Off, Off Timer: Off";
|
||||
ASSERT_EQ(26, ac.getTemp());
|
||||
ac.setTemp(ac.getTemp() - 1);
|
||||
ASSERT_EQ(25, ac.getTemp());
|
||||
EXPECT_EQ(expected_temp_minus_one, ac.toString());
|
||||
ac.send();
|
||||
ac._irsend.makeDecodeResult();
|
||||
ASSERT_TRUE(irrecv.decode(&ac._irsend.capture));
|
||||
ASSERT_EQ(HAIER_AC, ac._irsend.capture.decode_type);
|
||||
EXPECT_EQ(kHaierACBits, ac._irsend.capture.bits);
|
||||
acText.setRaw(ac._irsend.capture.state);
|
||||
EXPECT_EQ(expected_temp_minus_one, acText.toString());
|
||||
}
|
||||
|
||||
TEST(TestHaierACClass, toCommon) {
|
||||
IRHaierAC ac(0);
|
||||
ac.setCommand(kHaierAcCmdOn);
|
||||
ac.setMode(kHaierAcCool);
|
||||
ac.setTemp(20);
|
||||
ac.setFan(kHaierAcFanHigh);
|
||||
ac.setSwing(kHaierAcSwingChg);
|
||||
ac.setHealth(true);
|
||||
ac.setSleep(true);
|
||||
// Now test it.
|
||||
ASSERT_EQ(decode_type_t::HAIER_AC, ac.toCommon().protocol);
|
||||
ASSERT_EQ(-1, ac.toCommon().model);
|
||||
ASSERT_TRUE(ac.toCommon().power);
|
||||
ASSERT_TRUE(ac.toCommon().celsius);
|
||||
ASSERT_EQ(20, ac.toCommon().degrees);
|
||||
ASSERT_TRUE(ac.toCommon().filter);
|
||||
ASSERT_EQ(stdAc::opmode_t::kCool, ac.toCommon().mode);
|
||||
ASSERT_EQ(stdAc::fanspeed_t::kMax, ac.toCommon().fanspeed);
|
||||
ASSERT_EQ(stdAc::swingv_t::kAuto, ac.toCommon().swingv);
|
||||
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);
|
||||
ASSERT_FALSE(ac.toCommon().econo);
|
||||
ASSERT_FALSE(ac.toCommon().clean);
|
||||
ASSERT_FALSE(ac.toCommon().beep);
|
||||
ASSERT_EQ(-1, ac.toCommon().clock);
|
||||
}
|
||||
|
||||
TEST(TestHaierACYRW02Class, toCommon) {
|
||||
IRHaierACYRW02 ac(0);
|
||||
ac.setPower(true);
|
||||
ac.setMode(kHaierAcYrw02Cool);
|
||||
ac.setTemp(20);
|
||||
ac.setFan(kHaierAcYrw02FanHigh);
|
||||
ac.setSwing(kHaierAcYrw02SwingTop);
|
||||
ac.setHealth(true);
|
||||
ac.setSleep(true);
|
||||
// Now test it.
|
||||
ASSERT_EQ(decode_type_t::HAIER_AC_YRW02, ac.toCommon().protocol);
|
||||
ASSERT_EQ(-1, ac.toCommon().model);
|
||||
ASSERT_TRUE(ac.toCommon().power);
|
||||
ASSERT_TRUE(ac.toCommon().celsius);
|
||||
ASSERT_EQ(20, ac.toCommon().degrees);
|
||||
ASSERT_TRUE(ac.toCommon().filter);
|
||||
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(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);
|
||||
ASSERT_FALSE(ac.toCommon().econo);
|
||||
ASSERT_FALSE(ac.toCommon().clean);
|
||||
ASSERT_FALSE(ac.toCommon().beep);
|
||||
ASSERT_EQ(-1, ac.toCommon().clock);
|
||||
}
|
||||
Reference in new issue
Block a user