@@ -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