Skip to content

Commit 934336f

Browse files
committed
Confirm we can reproduce TurnOnFujitsuAC.ino via IRac/IRMQTTServer.
For #1701
1 parent c64fa1d commit 934336f

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed

test/ir_Fujitsu_test.cpp

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1271,3 +1271,93 @@ TEST(TestIRFujitsuACClass, ARREW4EShortCodes) {
12711271
ASSERT_EQ(kFujitsuAcStateLengthShort, ac.getStateLength());
12721272
EXPECT_STATE_EQ(stepvert, ac.getRaw(), kFujitsuAcStateLengthShort * 8);
12731273
}
1274+
1275+
// https://github.com/crankyoldgit/IRremoteESP8266/discussions/1701#discussioncomment-1910164
1276+
TEST(TestIRFujitsuACClass, Discussion1701) {
1277+
IRFujitsuAC ac(kGpioUnused);
1278+
IRrecv irrecv(kGpioUnused);
1279+
IRac irac(kGpioUnused);
1280+
1281+
const String expected_raw_output =
1282+
"f38000d50"
1283+
"m3324s1574"
1284+
"m448s390m448s390m448s1182m448s390m448s1182m448s390m448s390m448s390"
1285+
"m448s1182m448s1182m448s390m448s390m448s390m448s1182m448s1182m448s390"
1286+
"m448s390m448s390m448s390m448s390m448s390m448s390m448s390m448s390"
1287+
"m448s390m448s390m448s390m448s390m448s1182m448s390m448s390m448s390"
1288+
"m448s390m448s390m448s390m448s390m448s1182m448s390m448s390m448s390"
1289+
"m448s390m448s1182m448s1182m448s1182m448s1182m448s1182m448s1182m448s1182"
1290+
"m448s1182m448s390m448s390m448s1182m448s390m448s390m448s390m448s390"
1291+
"m448s1182m448s390m448s390m448s390m448s1182m448s1182m448s390m448s390"
1292+
"m448s1182m448s390m448s390m448s390m448s390m448s390m448s390m448s1182"
1293+
"m448s1182m448s390m448s390m448s390m448s390m448s390m448s390m448s390"
1294+
"m448s1182m448s390m448s390m448s390m448s390m448s390m448s390m448s390"
1295+
"m448s390m448s390m448s390m448s390m448s390m448s390m448s390m448s390"
1296+
"m448s390m448s390m448s390m448s390m448s390m448s390m448s390m448s390"
1297+
"m448s390m448s390m448s390m448s390m448s390m448s390m448s390m448s390"
1298+
"m448s390m448s390m448s390m448s390m448s390m448s390m448s390m448s390"
1299+
"m448s390m448s390m448s1182m448s1182m448s390m448s390m448s1182m448s390"
1300+
"m448s8100";
1301+
const String expected_arrew4e_str =
1302+
"Model: 6 (ARREW4E), Id: 0, Power: On, Mode: 1 (Cool), Temp: 24C, "
1303+
"Fan: 1 (High), 10C Heat: Off, Swing: 0 (Off), Command: N/A, "
1304+
"Outside Quiet: Off, Timer: Off";
1305+
const uint8_t expected_arrew4e_state[kFujitsuAcStateLength] =
1306+
{0x14, 0x63, 0x00, 0x10, 0x10, 0xFE, 0x09, 0x31,
1307+
0x81, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4C};
1308+
1309+
// Method used in `TurnOnFujitsuAC`
1310+
ac.begin();
1311+
ac.setModel(ARREW4E);
1312+
ac.setSwing(kFujitsuAcSwingOff);
1313+
ac.setMode(kFujitsuAcModeCool);
1314+
ac.setFanSpeed(kFujitsuAcFanHigh);
1315+
ac.setTemp(24); // 24C
1316+
ac.setCmd(kFujitsuAcCmdTurnOn);
1317+
ASSERT_EQ(expected_arrew4e_str, ac.toString());
1318+
ac.send();
1319+
ac._irsend.makeDecodeResult();
1320+
// 260 = 16 (bytes) * 8 (bits) * 2 (per bit) + kHeader (2) + kFooter (2)
1321+
EXPECT_EQ(1 + 260, ac._irsend.capture.rawlen);
1322+
EXPECT_TRUE(irrecv.decode(&ac._irsend.capture));
1323+
ASSERT_EQ(FUJITSU_AC, ac._irsend.capture.decode_type);
1324+
ASSERT_EQ(kFujitsuAcStateLength * 8, ac._irsend.capture.bits);
1325+
EXPECT_EQ(expected_arrew4e_str,
1326+
IRAcUtils::resultAcToString(&ac._irsend.capture));
1327+
EXPECT_STATE_EQ(expected_arrew4e_state, ac._irsend.capture.state,
1328+
ac._irsend.capture.bits);
1329+
EXPECT_EQ(expected_raw_output, ac._irsend.outputStr());
1330+
1331+
// Now try to reproduce it via the IRac class.
1332+
ac._irsend.reset();
1333+
ac.stateReset();
1334+
ASSERT_NE(expected_arrew4e_str, ac.toString());
1335+
1336+
irac.fujitsu(&ac,
1337+
ARREW4E, // Model
1338+
true, // Power
1339+
stdAc::opmode_t::kCool, // Mode
1340+
true, // Celsius
1341+
24, // Degrees
1342+
stdAc::fanspeed_t::kHigh, // Fan speed
1343+
stdAc::swingv_t::kOff, // Vertical swing
1344+
stdAc::swingh_t::kOff, // Horizontal swing
1345+
false, // Quiet
1346+
false, // Turbo (Powerful)
1347+
false, // Econo
1348+
false, // Filter
1349+
false); // Clean
1350+
ASSERT_EQ(expected_arrew4e_str, ac.toString());
1351+
ac._irsend.makeDecodeResult();
1352+
// 260 = 16 (bytes) * 8 (bits) * 2 (per bit) + kHeader (2) + kFooter (2)
1353+
EXPECT_EQ(1 + 260, ac._irsend.capture.rawlen);
1354+
EXPECT_TRUE(irrecv.decode(&ac._irsend.capture));
1355+
ASSERT_EQ(FUJITSU_AC, ac._irsend.capture.decode_type);
1356+
ASSERT_EQ(kFujitsuAcStateLength * 8, ac._irsend.capture.bits);
1357+
EXPECT_EQ(expected_arrew4e_str,
1358+
IRAcUtils::resultAcToString(&ac._irsend.capture));
1359+
EXPECT_STATE_EQ(expected_arrew4e_state, ac._irsend.capture.state,
1360+
ac._irsend.capture.bits);
1361+
EXPECT_EQ(expected_raw_output, ac._irsend.outputStr());
1362+
// Success.
1363+
}

0 commit comments

Comments
 (0)