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
@@ -1,5 +1,6 @@
|
||||
// Copyright 2017, 2018, 2019 David Conran
|
||||
|
||||
#include <string>
|
||||
#include "ir_Samsung.h"
|
||||
#include "IRrecv.h"
|
||||
#include "IRrecv_test.h"
|
||||
@@ -24,6 +25,7 @@ TEST(TestSendSamsung, SendDataOnly) {
|
||||
irsend.reset();
|
||||
irsend.sendSAMSUNG(0xE0E09966); // Samsung TV Power On.
|
||||
EXPECT_EQ(
|
||||
"f38000d33"
|
||||
"m4480s4480"
|
||||
"m560s1680m560s1680m560s1680m560s560m560s560m560s560m560s560"
|
||||
"m560s560m560s1680m560s1680m560s1680m560s560m560s560m560s560"
|
||||
@@ -43,6 +45,7 @@ TEST(TestSendSamsung, SendWithRepeats) {
|
||||
irsend.reset();
|
||||
irsend.sendSAMSUNG(0xE0E09966, kSamsungBits, 1); // 1 repeat.
|
||||
EXPECT_EQ(
|
||||
"f38000d33"
|
||||
"m4480s4480"
|
||||
"m560s1680m560s1680m560s1680m560s560m560s560m560s560m560s560"
|
||||
"m560s560m560s1680m560s1680m560s1680m560s560m560s560m560s560"
|
||||
@@ -58,6 +61,7 @@ TEST(TestSendSamsung, SendWithRepeats) {
|
||||
irsend.outputStr());
|
||||
irsend.sendSAMSUNG(0xE0E09966, kSamsungBits, 2); // 2 repeats.
|
||||
EXPECT_EQ(
|
||||
"f38000d33"
|
||||
"m4480s4480"
|
||||
"m560s1680m560s1680m560s1680m560s560m560s560m560s560m560s560"
|
||||
"m560s560m560s1680m560s1680m560s1680m560s560m560s560m560s560"
|
||||
@@ -305,6 +309,7 @@ TEST(TestSendSamsungAC, SendDataOnly) {
|
||||
0x01, 0x02, 0xAF, 0x71, 0x00, 0x15, 0xF0};
|
||||
irsend.sendSamsungAC(data);
|
||||
EXPECT_EQ(
|
||||
"f38000d50"
|
||||
"m690s17844"
|
||||
"m3086s8864"
|
||||
"m586s436m586s1432m586s436m586s436m586s436m586s436m586s436m586s436"
|
||||
@@ -338,6 +343,7 @@ TEST(TestSendSamsungAC, SendExtendedData) {
|
||||
0x01, 0x02, 0xFF, 0x71, 0x80, 0x11, 0xC0};
|
||||
irsend.sendSamsungAC(data, kSamsungAcExtendedStateLength);
|
||||
EXPECT_EQ(
|
||||
"f38000d50"
|
||||
"m690s17844"
|
||||
"m3086s8864"
|
||||
"m586s436m586s1432m586s436m586s436m586s436m586s436m586s436m586s436"
|
||||
@@ -494,15 +500,87 @@ TEST(TestIRSamsungAcClass, SetAndGetFan) {
|
||||
}
|
||||
|
||||
TEST(TestIRSamsungAcClass, SetAndGetQuiet) {
|
||||
IRSamsungAc samsung(0);
|
||||
samsung.setQuiet(false);
|
||||
EXPECT_FALSE(samsung.getQuiet());
|
||||
samsung.setFan(kSamsungAcFanHigh);
|
||||
samsung.setQuiet(true);
|
||||
EXPECT_TRUE(samsung.getQuiet());
|
||||
EXPECT_EQ(kSamsungAcFanAuto, samsung.getFan());
|
||||
samsung.setQuiet(false);
|
||||
EXPECT_FALSE(samsung.getQuiet());
|
||||
IRSamsungAc ac(0);
|
||||
ac.setQuiet(false);
|
||||
EXPECT_FALSE(ac.getQuiet());
|
||||
ac.setFan(kSamsungAcFanHigh);
|
||||
ac.setQuiet(true);
|
||||
EXPECT_TRUE(ac.getQuiet());
|
||||
EXPECT_EQ(kSamsungAcFanAuto, ac.getFan());
|
||||
ac.setQuiet(false);
|
||||
EXPECT_FALSE(ac.getQuiet());
|
||||
|
||||
// Actual quiet on & off states from:
|
||||
// https://github.com/markszabo/IRremoteESP8266/issues/734#issuecomment-500071419
|
||||
uint8_t on[14] = {
|
||||
0x02, 0x82, 0x0F, 0x00, 0x00, 0x20, 0xF0,
|
||||
0x01, 0xF2, 0xFE, 0x71, 0x00, 0x11, 0xF0};
|
||||
ac.setRaw(on, 14);
|
||||
EXPECT_TRUE(ac.getQuiet());
|
||||
EXPECT_EQ(kSamsungAcFanAuto, ac.getFan());
|
||||
uint8_t off[14] = {
|
||||
0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0,
|
||||
0x01, 0xF2, 0xFE, 0x71, 0x00, 0x11, 0xF0};
|
||||
ac.setRaw(off, 14);
|
||||
EXPECT_FALSE(ac.getQuiet());
|
||||
}
|
||||
|
||||
|
||||
TEST(TestIRSamsungAcClass, SetAndGetPowerful) {
|
||||
IRSamsungAc ac(0);
|
||||
ac.setFan(kSamsungAcFanMed);
|
||||
ac.setPowerful(false);
|
||||
EXPECT_FALSE(ac.getPowerful());
|
||||
EXPECT_EQ(kSamsungAcFanMed, ac.getFan());
|
||||
ac.setPowerful(true);
|
||||
EXPECT_TRUE(ac.getPowerful());
|
||||
EXPECT_EQ(kSamsungAcFanTurbo, ac.getFan());
|
||||
ac.setPowerful(false);
|
||||
EXPECT_FALSE(ac.getPowerful());
|
||||
EXPECT_EQ(kSamsungAcFanAuto, ac.getFan());
|
||||
|
||||
// Actual powerful on & off states from:
|
||||
// https://github.com/markszabo/IRremoteESP8266/issues/734#issuecomment-500120270
|
||||
uint8_t on[kSamsungAcStateLength] = {
|
||||
0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0,
|
||||
0x01, 0xA2, 0xFE, 0x77, 0x00, 0x1F, 0xF0};
|
||||
ac.setRaw(on, kSamsungAcStateLength);
|
||||
EXPECT_TRUE(ac.getPowerful());
|
||||
EXPECT_EQ(kSamsungAcFanTurbo, ac.getFan());
|
||||
EXPECT_EQ(
|
||||
"Power: On, Mode: 1 (COOL), Temp: 16C, Fan: 7 (TURBO), Swing: Off, "
|
||||
"Beep: Off, Clean: Off, Quiet: Off, Powerful: On", ac.toString());
|
||||
|
||||
uint8_t off[kSamsungAcStateLength] = {
|
||||
0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0,
|
||||
0x01, 0xF2, 0xFE, 0x71, 0x00, 0x11, 0xF0};
|
||||
ac.setRaw(off, kSamsungAcStateLength);
|
||||
EXPECT_FALSE(ac.getPowerful());
|
||||
EXPECT_NE(kSamsungAcFanTurbo, ac.getFan());
|
||||
EXPECT_EQ(
|
||||
"Power: On, Mode: 1 (COOL), Temp: 16C, Fan: 0 (AUTO), Swing: Off, "
|
||||
"Beep: Off, Clean: Off, Quiet: Off, Powerful: Off", ac.toString());
|
||||
}
|
||||
|
||||
TEST(TestIRSamsungAcClass, QuietAndPowerfulAreMutuallyExclusive) {
|
||||
IRSamsungAc ac(0);
|
||||
ac.setQuiet(false);
|
||||
ac.setPowerful(false);
|
||||
EXPECT_FALSE(ac.getQuiet());
|
||||
EXPECT_FALSE(ac.getPowerful());
|
||||
EXPECT_NE(kSamsungAcFanTurbo, ac.getFan());
|
||||
ac.setQuiet(true);
|
||||
EXPECT_TRUE(ac.getQuiet());
|
||||
EXPECT_FALSE(ac.getPowerful());
|
||||
EXPECT_EQ(kSamsungAcFanAuto, ac.getFan());
|
||||
ac.setPowerful(true);
|
||||
EXPECT_FALSE(ac.getQuiet());
|
||||
EXPECT_TRUE(ac.getPowerful());
|
||||
EXPECT_EQ(kSamsungAcFanTurbo, ac.getFan());
|
||||
ac.setQuiet(true);
|
||||
EXPECT_TRUE(ac.getQuiet());
|
||||
EXPECT_FALSE(ac.getPowerful());
|
||||
EXPECT_NE(kSamsungAcFanTurbo, ac.getFan());
|
||||
}
|
||||
|
||||
TEST(TestIRSamsungAcClass, ChecksumCalculation) {
|
||||
@@ -546,7 +624,7 @@ TEST(TestIRSamsungAcClass, HumanReadable) {
|
||||
IRSamsungAc samsung(0);
|
||||
EXPECT_EQ(
|
||||
"Power: On, Mode: 1 (COOL), Temp: 16C, Fan: 2 (LOW), Swing: On, "
|
||||
"Beep: Off, Clean: Off, Quiet: Off",
|
||||
"Beep: Off, Clean: Off, Quiet: Off, Powerful: Off",
|
||||
samsung.toString());
|
||||
samsung.setTemp(kSamsungAcMaxTemp);
|
||||
samsung.setMode(kSamsungAcHeat);
|
||||
@@ -557,12 +635,18 @@ TEST(TestIRSamsungAcClass, HumanReadable) {
|
||||
samsung.setClean(true);
|
||||
EXPECT_EQ(
|
||||
"Power: Off, Mode: 4 (HEAT), Temp: 30C, Fan: 5 (HIGH), Swing: Off, "
|
||||
"Beep: On, Clean: On, Quiet: Off",
|
||||
"Beep: On, Clean: On, Quiet: Off, Powerful: Off",
|
||||
samsung.toString());
|
||||
samsung.setQuiet(true);
|
||||
EXPECT_EQ(
|
||||
"Power: Off, Mode: 4 (HEAT), Temp: 30C, Fan: 0 (AUTO), Swing: Off, "
|
||||
"Beep: On, Clean: On, Quiet: On",
|
||||
"Beep: On, Clean: On, Quiet: On, Powerful: Off",
|
||||
samsung.toString());
|
||||
samsung.setQuiet(false);
|
||||
samsung.setPowerful(true);
|
||||
EXPECT_EQ(
|
||||
"Power: Off, Mode: 4 (HEAT), Temp: 30C, Fan: 7 (TURBO), Swing: Off, "
|
||||
"Beep: On, Clean: On, Quiet: Off, Powerful: On",
|
||||
samsung.toString());
|
||||
}
|
||||
|
||||
@@ -666,7 +750,7 @@ TEST(TestDecodeSamsungAC, DecodeRealExample) {
|
||||
samsung.setRaw(irsend.capture.state);
|
||||
EXPECT_EQ(
|
||||
"Power: On, Mode: 1 (COOL), Temp: 16C, Fan: 2 (LOW), Swing: On, "
|
||||
"Beep: Off, Clean: Off, Quiet: Off",
|
||||
"Beep: Off, Clean: Off, Quiet: Off, Powerful: Off",
|
||||
samsung.toString());
|
||||
}
|
||||
|
||||
@@ -715,7 +799,7 @@ TEST(TestDecodeSamsungAC, DecodeRealExample2) {
|
||||
samsung.setRaw(irsend.capture.state);
|
||||
EXPECT_EQ(
|
||||
"Power: On, Mode: 1 (COOL), Temp: 24C, Fan: 0 (AUTO), Swing: Off, "
|
||||
"Beep: Off, Clean: Off, Quiet: Off",
|
||||
"Beep: Off, Clean: Off, Quiet: Off, Powerful: Off",
|
||||
samsung.toString());
|
||||
}
|
||||
|
||||
@@ -774,7 +858,7 @@ TEST(TestDecodeSamsungAC, DecodePowerOnSample) {
|
||||
samsung.setRaw(irsend.capture.state, kSamsungAcExtendedStateLength);
|
||||
EXPECT_EQ(
|
||||
"Power: On, Mode: 1 (COOL), Temp: 24C, Fan: 0 (AUTO), Swing: Off, "
|
||||
"Beep: Off, Clean: Off, Quiet: Off",
|
||||
"Beep: Off, Clean: Off, Quiet: Off, Powerful: Off",
|
||||
samsung.toString());
|
||||
}
|
||||
|
||||
@@ -834,7 +918,7 @@ TEST(TestDecodeSamsungAC, DecodePowerOffSample) {
|
||||
samsung.setRaw(irsend.capture.state, kSamsungAcExtendedStateLength);
|
||||
EXPECT_EQ(
|
||||
"Power: Off, Mode: 1 (COOL), Temp: 24C, Fan: 0 (AUTO), Swing: Off, "
|
||||
"Beep: Off, Clean: Off, Quiet: Off",
|
||||
"Beep: Off, Clean: Off, Quiet: Off, Powerful: Off",
|
||||
samsung.toString());
|
||||
}
|
||||
|
||||
@@ -881,7 +965,7 @@ TEST(TestDecodeSamsungAC, DecodeHeatSample) {
|
||||
samsung.setRaw(irsend.capture.state);
|
||||
EXPECT_EQ(
|
||||
"Power: On, Mode: 4 (HEAT), Temp: 17C, Fan: 0 (AUTO), Swing: On, "
|
||||
"Beep: Off, Clean: Off, Quiet: Off",
|
||||
"Beep: Off, Clean: Off, Quiet: Off, Powerful: Off",
|
||||
samsung.toString());
|
||||
}
|
||||
|
||||
@@ -928,7 +1012,7 @@ TEST(TestDecodeSamsungAC, DecodeCoolSample) {
|
||||
samsung.setRaw(irsend.capture.state);
|
||||
EXPECT_EQ(
|
||||
"Power: On, Mode: 1 (COOL), Temp: 20C, Fan: 0 (AUTO), Swing: Off, "
|
||||
"Beep: Off, Clean: Off, Quiet: Off",
|
||||
"Beep: Off, Clean: Off, Quiet: Off, Powerful: Off",
|
||||
samsung.toString());
|
||||
}
|
||||
|
||||
@@ -986,7 +1070,7 @@ TEST(TestDecodeSamsungAC, Issue604DecodeExtended) {
|
||||
samsung.setRaw(irsend.capture.state, irsend.capture.bits / 8);
|
||||
EXPECT_EQ(
|
||||
"Power: Off, Mode: 4 (HEAT), Temp: 30C, Fan: 0 (AUTO), Swing: Off, "
|
||||
"Beep: Off, Clean: Off, Quiet: Off",
|
||||
"Beep: Off, Clean: Off, Quiet: Off, Powerful: Off",
|
||||
samsung.toString());
|
||||
}
|
||||
|
||||
@@ -997,6 +1081,7 @@ TEST(TestSendSamsung36, SendDataOnly) {
|
||||
irsend.reset();
|
||||
irsend.sendSamsung36(0);
|
||||
EXPECT_EQ(
|
||||
"f38000d50"
|
||||
"m4480s4480"
|
||||
"m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
|
||||
"m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
|
||||
@@ -1008,6 +1093,7 @@ TEST(TestSendSamsung36, SendDataOnly) {
|
||||
irsend.outputStr());
|
||||
irsend.sendSamsung36(0x400E00FF);
|
||||
EXPECT_EQ(
|
||||
"f38000d50"
|
||||
"m4480s4480"
|
||||
"m560s560m560s560m560s560m560s560m560s560m560s1680m560s560m560s560"
|
||||
"m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
|
||||
@@ -1034,6 +1120,7 @@ TEST(TestSendSamsung36, SendWithRepeats) {
|
||||
irsend.reset();
|
||||
irsend.sendSamsung36(0x400E00FF, kSamsung36Bits, 1); // 1 repeat.
|
||||
EXPECT_EQ(
|
||||
"f38000d50"
|
||||
"m4480s4480"
|
||||
"m560s560m560s560m560s560m560s560m560s560m560s1680m560s560m560s560"
|
||||
"m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
|
||||
@@ -1053,6 +1140,7 @@ TEST(TestSendSamsung36, SendWithRepeats) {
|
||||
irsend.outputStr());
|
||||
irsend.sendSamsung36(0x400E00FF, kSamsung36Bits, 2); // 2 repeats.
|
||||
EXPECT_EQ(
|
||||
"f38000d50"
|
||||
"m4480s4480"
|
||||
"m560s560m560s560m560s560m560s560m560s560m560s1680m560s560m560s560"
|
||||
"m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
|
||||
@@ -1119,3 +1207,239 @@ TEST(TestDecodeSamsung36, SyntheticExample) {
|
||||
EXPECT_EQ(0xE00FF, irsend.capture.command);
|
||||
EXPECT_EQ(0x400, irsend.capture.address);
|
||||
}
|
||||
|
||||
// https://github.com/markszabo/IRremoteESP8266/issues/604
|
||||
TEST(TestIRSamsungAcClass, Issue604SendPowerHack) {
|
||||
IRSamsungAc ac(0);
|
||||
ac.begin();
|
||||
|
||||
std::string freqduty = "f38000d50";
|
||||
|
||||
std::string poweron =
|
||||
"m690s17844"
|
||||
"m3086s8864"
|
||||
"m586s436m586s1432m586s436m586s436m586s436m586s436m586s436m586s436"
|
||||
"m586s436m586s1432m586s436m586s436m586s1432m586s436m586s436m586s1432"
|
||||
"m586s1432m586s1432m586s1432m586s1432m586s436m586s436m586s436m586s436"
|
||||
"m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436"
|
||||
"m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436"
|
||||
"m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436"
|
||||
"m586s436m586s436m586s436m586s436m586s1432m586s1432m586s1432m586s1432"
|
||||
"m586s2886"
|
||||
"m3086s8864"
|
||||
"m586s1432m586s436m586s436m586s436m586s436m586s436m586s436m586s436"
|
||||
"m586s436m586s1432m586s436m586s436m586s1432m586s436m586s1432m586s1432"
|
||||
"m586s1432m586s1432m586s1432m586s1432m586s436m586s436m586s436m586s436"
|
||||
"m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436"
|
||||
"m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436"
|
||||
"m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436"
|
||||
"m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436"
|
||||
"m586s2886"
|
||||
"m3086s8864"
|
||||
"m586s1432m586s436m586s436m586s436m586s436m586s436m586s436m586s436"
|
||||
"m586s436m586s1432m586s436m586s436m586s436m586s1432m586s1432m586s1432"
|
||||
"m586s436m586s1432m586s1432m586s1432m586s1432m586s1432m586s1432m586s1432"
|
||||
"m586s1432m586s436m586s436m586s436m586s1432m586s1432m586s1432m586s436"
|
||||
"m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s1432"
|
||||
"m586s1432m586s436m586s436m586s436m586s1432m586s436m586s436m586s436"
|
||||
"m586s436m586s436m586s436m586s436m586s1432m586s1432m586s1432m586s1432"
|
||||
"m586s100000";
|
||||
std::string settings =
|
||||
"m690s17844"
|
||||
"m3086s8864"
|
||||
"m586s436m586s1432m586s436m586s436m586s436m586s436m586s436m586s436"
|
||||
"m586s436m586s1432m586s436m586s436m586s1432m586s436m586s436m586s1432"
|
||||
"m586s1432m586s1432m586s1432m586s1432m586s436m586s436m586s436m586s436"
|
||||
"m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436"
|
||||
"m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436"
|
||||
"m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436"
|
||||
"m586s436m586s436m586s436m586s436m586s1432m586s1432m586s1432m586s1432"
|
||||
"m586s2886"
|
||||
"m3086s8864"
|
||||
"m586s1432m586s436m586s436m586s436m586s436m586s436m586s436m586s436"
|
||||
"m586s436m586s1432m586s436m586s436m586s1432m586s436m586s1432m586s1432"
|
||||
"m586s436m586s1432m586s1432m586s1432m586s436m586s1432m586s436m586s1432"
|
||||
"m586s1432m586s436m586s436m586s436m586s1432m586s1432m586s1432m586s436"
|
||||
"m586s436m586s436m586s436m586s436m586s1432m586s1432m586s1432m586s436"
|
||||
"m586s1432m586s436m586s436m586s1432m586s1432m586s436m586s436m586s436"
|
||||
"m586s436m586s436m586s436m586s436m586s1432m586s1432m586s1432m586s1432"
|
||||
"m586s100000";
|
||||
std::string text = "Power: On, Mode: 1 (COOL), Temp: 23C, Fan: 4 (MED), "
|
||||
"Swing: On, Beep: Off, Clean: Off, Quiet: Off, "
|
||||
"Powerful: Off";
|
||||
// Don't do a setPower()/on()/off() as that will trigger the special message.
|
||||
// So it should only be the normal "settings" message.
|
||||
ac.setTemp(23);
|
||||
ac.setMode(kSamsungAcCool);
|
||||
ac.setFan(kSamsungAcFanMed);
|
||||
ac.send();
|
||||
EXPECT_EQ(text, ac.toString());
|
||||
EXPECT_EQ(freqduty + settings, ac._irsend.outputStr());
|
||||
ac._irsend.reset();
|
||||
// Now trigger a special power message by using a power method.
|
||||
ac.on();
|
||||
ac.send(); // This should result in two messages. 1 x extended + 1 x normal.
|
||||
EXPECT_EQ(text, ac.toString());
|
||||
EXPECT_EQ(freqduty + poweron + settings, ac._irsend.outputStr());
|
||||
ac._irsend.reset();
|
||||
// Subsequent sending should be just the "settings" message.
|
||||
ac.send();
|
||||
EXPECT_EQ(text, ac.toString());
|
||||
EXPECT_EQ(freqduty + settings, ac._irsend.outputStr());
|
||||
ac._irsend.reset();
|
||||
// Now trigger a special power message by using a power method (again).
|
||||
ac.setPower(true);
|
||||
ac.send(); // This should result in two messages. 1 x extended + 1 x normal.
|
||||
EXPECT_EQ(text, ac.toString());
|
||||
EXPECT_EQ(freqduty + poweron + settings, ac._irsend.outputStr());
|
||||
}
|
||||
|
||||
TEST(TestIRSamsungAcClass, toCommon) {
|
||||
IRSamsungAc ac(0);
|
||||
ac.setPower(true);
|
||||
ac.setMode(kSamsungAcCool);
|
||||
ac.setTemp(20);
|
||||
ac.setFan(kSamsungAcFanAuto);
|
||||
ac.setSwing(true);
|
||||
ac.setBeep(true);
|
||||
ac.setClean(true);
|
||||
ac.setQuiet(true);
|
||||
// Now test it.
|
||||
ASSERT_EQ(decode_type_t::SAMSUNG_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_EQ(stdAc::opmode_t::kCool, ac.toCommon().mode);
|
||||
ASSERT_EQ(stdAc::fanspeed_t::kAuto, ac.toCommon().fanspeed);
|
||||
ASSERT_EQ(stdAc::swingv_t::kAuto, ac.toCommon().swingv);
|
||||
ASSERT_FALSE(ac.toCommon().turbo);
|
||||
ASSERT_TRUE(ac.toCommon().quiet);
|
||||
ASSERT_TRUE(ac.toCommon().clean);
|
||||
ASSERT_TRUE(ac.toCommon().beep);
|
||||
// Unsupported.
|
||||
ASSERT_EQ(stdAc::swingh_t::kOff, ac.toCommon().swingh);
|
||||
ASSERT_FALSE(ac.toCommon().econo);
|
||||
ASSERT_FALSE(ac.toCommon().light);
|
||||
ASSERT_FALSE(ac.toCommon().filter);
|
||||
ASSERT_EQ(-1, ac.toCommon().sleep);
|
||||
ASSERT_EQ(-1, ac.toCommon().clock);
|
||||
}
|
||||
|
||||
TEST(TestDecodeSamsungAC, Issue734QuietSetting) {
|
||||
IRsendTest irsend(0);
|
||||
IRrecv irrecv(0);
|
||||
irsend.begin();
|
||||
|
||||
irsend.reset();
|
||||
// QUIET MODE ON data from:
|
||||
// https://github.com/markszabo/IRremoteESP8266/issues/734#issuecomment-499791618
|
||||
uint16_t quietOn[233] = {
|
||||
624, 17360, 3076, 8902, 520, 476, 520, 1472, 520, 476, 520, 474, 520, 476,
|
||||
520, 476, 520, 474, 522, 476, 520, 478, 518, 1476, 516, 500, 494, 502,
|
||||
548, 448, 546, 450, 544, 452, 522, 1468, 520, 1474, 520, 1472, 520, 1472,
|
||||
520, 1472, 520, 476, 520, 476, 518, 478, 516, 480, 516, 500, 496, 500,
|
||||
494, 502, 550, 446, 546, 450, 544, 452, 524, 472, 522, 474, 518, 476, 520,
|
||||
476, 520, 474, 522, 474, 520, 474, 520, 476, 520, 474, 520, 476, 518, 478,
|
||||
518, 480, 516, 480, 516, 502, 494, 502, 548, 1444, 524, 472, 522, 472,
|
||||
520, 474, 518, 478, 518, 476, 520, 476, 520, 1472, 520, 1470, 520, 1472,
|
||||
520, 1474, 516, 2980, 2998, 8980, 498, 1498, 548, 448, 526, 470, 544, 452,
|
||||
524, 472, 520, 474, 520, 476, 520, 476, 520, 476, 520, 1472, 520, 474,
|
||||
520, 476, 520, 1474, 518, 1476, 516, 1496, 496, 1498, 548, 446, 546, 1446,
|
||||
524, 1468, 518, 1474, 520, 1472, 520, 1472, 520, 1472, 520, 1474, 518,
|
||||
1476, 518, 480, 516, 500, 496, 528, 520, 1446, 544, 1446, 524, 1470, 518,
|
||||
476, 520, 476, 520, 474, 520, 476, 520, 474, 520, 476, 520, 474, 520, 476,
|
||||
520, 476, 518, 1476, 516, 482, 514, 502, 548, 448, 548, 1442, 544, 452,
|
||||
522, 474, 518, 476, 518, 476, 520, 476, 520, 474, 520, 476, 520, 1472,
|
||||
520, 1470, 522, 1474, 518, 1476, 536};
|
||||
|
||||
uint8_t expectedState[kSamsungAcStateLength] = {
|
||||
0x02, 0x82, 0x0F, 0x00, 0x00, 0x20, 0xF0,
|
||||
0x01, 0xF2, 0xFE, 0x71, 0x00, 0x11, 0xF0};
|
||||
|
||||
irsend.sendRaw(quietOn, 233, 38000);
|
||||
irsend.makeDecodeResult();
|
||||
ASSERT_TRUE(irrecv.decode(&irsend.capture));
|
||||
ASSERT_EQ(SAMSUNG_AC, irsend.capture.decode_type);
|
||||
EXPECT_EQ(kSamsungAcBits, irsend.capture.bits);
|
||||
EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits);
|
||||
|
||||
IRSamsungAc ac(0);
|
||||
ac.setRaw(irsend.capture.state, irsend.capture.bits / 8);
|
||||
EXPECT_EQ(
|
||||
"Power: On, Mode: 1 (COOL), Temp: 16C, Fan: 0 (AUTO), Swing: Off, "
|
||||
"Beep: Off, Clean: Off, Quiet: On, Powerful: Off",
|
||||
ac.toString());
|
||||
|
||||
// Make sure the ac class state is in something wildly different first.
|
||||
ac.stateReset();
|
||||
ac.setPower(false);
|
||||
ac.setMode(kSamsungAcAuto);
|
||||
ac.setTemp(30);
|
||||
ac.setSwing(true);
|
||||
ac.setBeep(true);
|
||||
ac.setClean(true);
|
||||
ac.setQuiet(false);
|
||||
// See if we can build the state from scratch.
|
||||
ac.setPower(true);
|
||||
ac.setMode(kSamsungAcCool);
|
||||
ac.setTemp(16);
|
||||
ac.setSwing(false);
|
||||
ac.setBeep(false);
|
||||
ac.setClean(false);
|
||||
ac.setQuiet(true);
|
||||
EXPECT_EQ(
|
||||
"Power: On, Mode: 1 (COOL), Temp: 16C, Fan: 0 (AUTO), Swing: Off, "
|
||||
"Beep: Off, Clean: Off, Quiet: On, Powerful: Off",
|
||||
ac.toString());
|
||||
// Check it matches the known good/expected state.
|
||||
EXPECT_STATE_EQ(expectedState, ac.getRaw(), kSamsungAcBits);
|
||||
}
|
||||
|
||||
TEST(TestDecodeSamsungAC, Issue734PowerfulOff) {
|
||||
IRsendTest irsend(0);
|
||||
IRrecv irrecv(0);
|
||||
irsend.begin();
|
||||
|
||||
irsend.reset();
|
||||
// 1st Powerful off data from:
|
||||
// https://github.com/markszabo/IRremoteESP8266/issues/734#issuecomment-500114580
|
||||
uint16_t powerfulOff[233] = {
|
||||
652, 17336, 3078, 8910, 562, 456, 546, 1448, 550, 446, 552, 444, 552, 444,
|
||||
550, 446, 550, 446, 552, 446, 550, 446, 552, 1440, 550, 446, 550, 446,
|
||||
550, 1470, 478, 518, 502, 492, 536, 1458, 542, 1450, 552, 1440, 552, 1442,
|
||||
552, 1442, 550, 446, 550, 446, 550, 446, 552, 444, 550, 446, 550, 446,
|
||||
550, 472, 524, 472, 480, 516, 510, 488, 538, 458, 542, 452, 548, 448, 550,
|
||||
446, 550, 446, 550, 444, 552, 444, 552, 444, 552, 444, 552, 444, 552, 444,
|
||||
552, 444, 550, 446, 550, 446, 550, 472, 524, 472, 482, 514, 510, 486, 536,
|
||||
460, 542, 454, 546, 450, 550, 446, 552, 1442, 552, 1442, 550, 1442, 552,
|
||||
1440, 508, 2994, 3030, 8932, 552, 1638, 450, // <= (was 356)
|
||||
// Above hack due to poor data.
|
||||
470, 526, 470, 506, 492, 510,
|
||||
486, 542, 454, 544, 450, 550, 446, 554, 444, 550, 1442, 550, 444, 550,
|
||||
446, 550, 1442, 552, 1440, 550, 1442, 550, 1470, 524, 470, 480, 1512, 512,
|
||||
1480, 546, 1448, 550, 1442, 552, 1442, 552, 1442, 550, 1440, 552, 1440,
|
||||
552, 446, 550, 444, 552, 444, 550, 1468, 484, 1510, 512, 1482, 544, 452,
|
||||
550, 446, 552, 442, 554, 444, 552, 444, 554, 442, 554, 442, 552, 444, 554,
|
||||
442, 554, 1440, 552, 444, 554, 442, 554, 468, 528, 1466, 508, 488, 512,
|
||||
484, 544, 450, 550, 446, 554, 442, 556, 442, 554, 442, 554, 1438, 554,
|
||||
1438, 554, 1438, 554, 1438, 562}; // UNKNOWN 7B551B62};
|
||||
|
||||
uint8_t expectedState[kSamsungAcStateLength] = {
|
||||
0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0,
|
||||
0x01, 0xF2, 0xFE, 0x71, 0x00, 0x11, 0xF0};
|
||||
|
||||
irsend.sendRaw(powerfulOff, 233, 38000);
|
||||
irsend.makeDecodeResult();
|
||||
ASSERT_TRUE(irrecv.decodeSamsungAC(&irsend.capture));
|
||||
ASSERT_EQ(SAMSUNG_AC, irsend.capture.decode_type);
|
||||
EXPECT_EQ(kSamsungAcBits, irsend.capture.bits);
|
||||
EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits);
|
||||
|
||||
IRSamsungAc ac(0);
|
||||
ac.setRaw(irsend.capture.state, irsend.capture.bits / 8);
|
||||
EXPECT_EQ(
|
||||
"Power: On, Mode: 1 (COOL), Temp: 16C, Fan: 0 (AUTO), Swing: Off, "
|
||||
"Beep: Off, Clean: Off, Quiet: Off, Powerful: Off",
|
||||
ac.toString());
|
||||
}
|
||||
Reference in new issue
Block a user