mirror of https://github.com/arendst/Tasmota.git
141 lines
5.0 KiB
C++
141 lines
5.0 KiB
C++
|
// Copyright 2017 David Conran
|
||
|
|
||
|
#include "IRac.h"
|
||
|
#include "IRsend.h"
|
||
|
#include "IRsend_test.h"
|
||
|
#include "gtest/gtest.h"
|
||
|
|
||
|
// Housekeeping tests
|
||
|
|
||
|
TEST(TestUtils, Housekeeping) {
|
||
|
ASSERT_EQ("ELITESCREENS", typeToString(decode_type_t::ELITESCREENS));
|
||
|
ASSERT_EQ(decode_type_t::ELITESCREENS, strToDecodeType("ELITESCREENS"));
|
||
|
ASSERT_FALSE(hasACState(decode_type_t::ELITESCREENS));
|
||
|
ASSERT_FALSE(IRac::isProtocolSupported(decode_type_t::ELITESCREENS));
|
||
|
ASSERT_EQ(kEliteScreensBits,
|
||
|
IRsendTest::defaultBits(decode_type_t::ELITESCREENS));
|
||
|
ASSERT_EQ(kEliteScreensDefaultRepeat,
|
||
|
IRsendTest::minRepeats(decode_type_t::ELITESCREENS));
|
||
|
}
|
||
|
|
||
|
// Tests for sendElitescreens().
|
||
|
|
||
|
// Test sending typical data only.
|
||
|
TEST(TestSendElitescreens, SendDataOnly) {
|
||
|
IRsendTest irsend(kGpioUnused);
|
||
|
irsend.begin();
|
||
|
|
||
|
irsend.reset();
|
||
|
irsend.sendElitescreens(0xFEA3387); // STOP command
|
||
|
EXPECT_EQ(
|
||
|
"f38000d50"
|
||
|
"m1214s470m1214s470m1214s470m1214s470"
|
||
|
"m470s1214m470s1214m470s1214m470s1214"
|
||
|
"m470s1214m470s1214m470s1214m1214s470"
|
||
|
"m470s1214m1214s470m470s1214m1214s470"
|
||
|
"m1214s470m1214s470m470s1214m470s1214"
|
||
|
"m1214s470m1214s470m470s1214m470s1214"
|
||
|
"m470s1214m1214s470m1214s470m1214s470"
|
||
|
"m1214s470m470s1214m470s1214m470"
|
||
|
"s30414"
|
||
|
"m1214s470m1214s470m1214s470m1214s470"
|
||
|
"m470s1214m470s1214m470s1214m470s1214"
|
||
|
"m470s1214m470s1214m470s1214m1214s470"
|
||
|
"m470s1214m1214s470m470s1214m1214s470"
|
||
|
"m1214s470m1214s470m470s1214m470s1214"
|
||
|
"m1214s470m1214s470m470s1214m470s1214"
|
||
|
"m470s1214m1214s470m1214s470m1214s470"
|
||
|
"m1214s470m470s1214m470s1214m470"
|
||
|
"s30414",
|
||
|
irsend.outputStr());
|
||
|
}
|
||
|
|
||
|
// Tests for decodeElitescreens().
|
||
|
|
||
|
// Decode a 'real' example
|
||
|
TEST(TestDecodeElitescreens, RealExample) {
|
||
|
IRsendTest irsend(kGpioUnused);
|
||
|
IRrecv irrecv(kGpioUnused);
|
||
|
irsend.begin();
|
||
|
|
||
|
// From https://github.com/crankyoldgit/IRremoteESP8266/issues/1306#issuecomment-715913084
|
||
|
// STOP (111100000010 0xF02)
|
||
|
const uint16_t rawData[127] = {
|
||
|
1278, 456, 1248, 486, 1226, 452, 1252, 454, // 0 0 0 0 0x0
|
||
|
474, 1220, 474, 1222, 480, 1214, 476, 1222, // 1 1 1 1 0xF
|
||
|
472, 1224, 478, 1216, 476, 1220, 1256, 480, // 1 1 1 0 0xE
|
||
|
450, 1216, 1248, 488, 442, 1222, 1252, 486, // 1 0 1 0 0xA
|
||
|
1226, 478, 1224, 482, 448, 1220, 472, 1222, // 0 0 1 1 0x3
|
||
|
1254, 482, 1220, 486, 444, 1222, 480, 1218, // 0 0 1 1 0x3
|
||
|
474, 1220, 1254, 482, 1222, 484, 1218, 488, // 1 0 0 0 0x8
|
||
|
1224, 482, 450, 1218, 474, 1220, 470, // 0 1 1 1 0x7
|
||
|
30482,
|
||
|
1246, 460, 1274, 460, 1220, 456, 1246, 488,
|
||
|
452, 1214, 478, 1218, 474, 1220, 470, 1228,
|
||
|
476, 1220, 472, 1222, 480, 1214, 1248, 486,
|
||
|
476, 1190, 1274, 460, 480, 1186, 1278, 460,
|
||
|
1252, 426, 1276, 456, 474, 1194, 478, 1216,
|
||
|
1280, 456, 1246, 460, 482, 1186, 474, 1224,
|
||
|
478, 1216, 1282, 454, 1248, 458, 1244, 462,
|
||
|
1252, 456, 474, 1192, 480, 1216, 476}; // UNKNOWN 148A4DFF
|
||
|
|
||
|
irsend.reset();
|
||
|
irsend.sendRaw(rawData, 127, 38000);
|
||
|
irsend.makeDecodeResult();
|
||
|
|
||
|
ASSERT_TRUE(irrecv.decode(&irsend.capture));
|
||
|
EXPECT_EQ(ELITESCREENS, irsend.capture.decode_type);
|
||
|
EXPECT_EQ(kEliteScreensBits, irsend.capture.bits);
|
||
|
EXPECT_EQ(0xFEA3387, irsend.capture.value);
|
||
|
EXPECT_EQ(0x0, irsend.capture.address);
|
||
|
EXPECT_EQ(0x0, irsend.capture.command);
|
||
|
EXPECT_FALSE(irsend.capture.repeat);
|
||
|
}
|
||
|
|
||
|
// Decode a Synthetic example
|
||
|
TEST(TestDecodeElitescreens, SyntheticExample) {
|
||
|
IRsendTest irsend(kGpioUnused);
|
||
|
IRrecv irrecv(kGpioUnused);
|
||
|
irsend.begin();
|
||
|
|
||
|
irsend.reset();
|
||
|
irsend.sendElitescreens(0xFEA3387);
|
||
|
irsend.makeDecodeResult();
|
||
|
|
||
|
ASSERT_TRUE(irrecv.decode(&irsend.capture));
|
||
|
EXPECT_EQ(ELITESCREENS, irsend.capture.decode_type);
|
||
|
EXPECT_EQ(kEliteScreensBits, irsend.capture.bits);
|
||
|
EXPECT_EQ(0xFEA3387, irsend.capture.value);
|
||
|
EXPECT_EQ(0x0, irsend.capture.address);
|
||
|
EXPECT_EQ(0x0, irsend.capture.command);
|
||
|
EXPECT_FALSE(irsend.capture.repeat);
|
||
|
}
|
||
|
|
||
|
// Decode a 'real' example with no repeat.
|
||
|
TEST(TestDecodeElitescreens, RealExampleNoRepeat) {
|
||
|
IRsendTest irsend(kGpioUnused);
|
||
|
IRrecv irrecv(kGpioUnused);
|
||
|
irsend.begin();
|
||
|
|
||
|
// From https://github.com/crankyoldgit/IRremoteESP8266/issues/1306#issuecomment-715901468
|
||
|
// UP
|
||
|
const uint16_t rawData[63] = {
|
||
|
1250, 450, 1250, 450, 1250, 500, 1200, 500, 450, 1250, 450, 1200, 500, 1200,
|
||
|
500, 1200, 500, 1200, 500, 1200, 1250, 450, 500, 1200, 450, 1250, 1250, 450,
|
||
|
450, 1250, 1250, 450, 1250, 450, 1250, 450, 500, 1200, 1250, 450, 1250, 450,
|
||
|
1250, 450, 500, 1200, 1250, 450, 1250, 450, 500, 1200, 1250, 450, 500, 1200,
|
||
|
1250, 450, 500, 1200, 500, 1200, 1250}; // Protocol=UNKNOWN Data=0x2D8CB141
|
||
|
|
||
|
irsend.reset();
|
||
|
irsend.sendRaw(rawData, 63, 38000);
|
||
|
irsend.makeDecodeResult();
|
||
|
|
||
|
ASSERT_TRUE(irrecv.decode(&irsend.capture));
|
||
|
EXPECT_EQ(ELITESCREENS, irsend.capture.decode_type);
|
||
|
EXPECT_EQ(kEliteScreensBits, irsend.capture.bits);
|
||
|
EXPECT_EQ(0xFDA2256, irsend.capture.value);
|
||
|
EXPECT_EQ(0x0, irsend.capture.address);
|
||
|
EXPECT_EQ(0x0, irsend.capture.command);
|
||
|
EXPECT_FALSE(irsend.capture.repeat);
|
||
|
}
|