初始化提交
This commit is contained in:
159
arduino-cli/libraries/IRremoteESP8266/test/ir_Epson_test.cpp
Normal file
159
arduino-cli/libraries/IRremoteESP8266/test/ir_Epson_test.cpp
Normal file
@@ -0,0 +1,159 @@
|
||||
// Copyright 2020 David Conran
|
||||
|
||||
#include "IRac.h"
|
||||
#include "IRrecv.h"
|
||||
#include "IRrecv_test.h"
|
||||
#include "IRsend.h"
|
||||
#include "IRsend_test.h"
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
// Tests for sendEpson().
|
||||
|
||||
// Test sending typical data only.
|
||||
TEST(TestSendEpson, SendDataOnly) {
|
||||
IRsendTest irsend(kGpioUnused);
|
||||
irsend.begin();
|
||||
irsend.sendEpson(0xC1AA09F6);
|
||||
EXPECT_EQ(
|
||||
"f38000d33"
|
||||
"m8960s4480"
|
||||
"m560s1680m560s1680m560s560m560s560m560s560m560s560m560s560m560s1680"
|
||||
"m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
|
||||
"m560s560m560s560m560s560m560s560m560s1680m560s560m560s560m560s1680"
|
||||
"m560s1680m560s1680m560s1680m560s1680m560s560m560s1680m560s1680m560s560"
|
||||
"m560s41440"
|
||||
"m8960s4480"
|
||||
"m560s1680m560s1680m560s560m560s560m560s560m560s560m560s560m560s1680"
|
||||
"m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
|
||||
"m560s560m560s560m560s560m560s560m560s1680m560s560m560s560m560s1680"
|
||||
"m560s1680m560s1680m560s1680m560s1680m560s560m560s1680m560s1680m560s560"
|
||||
"m560s41440"
|
||||
"m8960s4480"
|
||||
"m560s1680m560s1680m560s560m560s560m560s560m560s560m560s560m560s1680"
|
||||
"m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
|
||||
"m560s560m560s560m560s560m560s560m560s1680m560s560m560s560m560s1680"
|
||||
"m560s1680m560s1680m560s1680m560s1680m560s560m560s1680m560s1680m560s560"
|
||||
"m560s41440",
|
||||
irsend.outputStr());
|
||||
}
|
||||
|
||||
// Tests for decodeEpson().
|
||||
|
||||
// Decode normal Epson messages.
|
||||
TEST(TestDecodeEpson, SyntheticSelfDecode) {
|
||||
IRsendTest irsend(kGpioUnused);
|
||||
IRrecv irrecv(kGpioUnused);
|
||||
irsend.begin();
|
||||
|
||||
// Real-life Epson code from an actual capture/decode.
|
||||
irsend.reset();
|
||||
irsend.sendEpson(0xC1AA09F6);
|
||||
irsend.makeDecodeResult();
|
||||
EXPECT_TRUE(irrecv.decode(&irsend.capture));
|
||||
EXPECT_EQ(EPSON, irsend.capture.decode_type);
|
||||
EXPECT_EQ(kEpsonBits, irsend.capture.bits);
|
||||
EXPECT_EQ(0xC1AA09F6, irsend.capture.value);
|
||||
EXPECT_EQ(0x5583, irsend.capture.address);
|
||||
EXPECT_EQ(0x90, irsend.capture.command);
|
||||
EXPECT_TRUE(irsend.capture.repeat);
|
||||
}
|
||||
|
||||
// Decode a real Epson message.
|
||||
TEST(TestDecodeEpson, RealMessageDecode) {
|
||||
IRsendTest irsend(kGpioUnused);
|
||||
IRrecv irrecv(kGpioUnused);
|
||||
irsend.begin();
|
||||
|
||||
// Real-life Epson code from an actual capture/decode.
|
||||
irsend.reset();
|
||||
const uint16_t rawData_0[203] = {
|
||||
8976, 4496, 542, 1690, 542, 1688, 542, 588, 518, 612, 542, 586, 518, 610,
|
||||
518, 610, 542, 1688, 516, 1714, 542, 614, 516, 1688, 542, 612, 516, 1690,
|
||||
540, 614, 514, 1690, 520, 638, 516, 584, 518, 612, 542, 586, 540, 588,
|
||||
542, 1688, 520, 610, 540, 586, 520, 1712, 540, 1692, 542, 1688, 542, 1690,
|
||||
520, 1710, 518, 610, 518, 1712, 518, 1716, 544, 584, 544, 40870,
|
||||
8978, 4496, 542, 1690, 542, 1688, 520, 610, 542, 584, 516, 638, 514, 588,
|
||||
540, 588, 540, 1690, 516, 1716, 516, 614, 542, 1688, 518, 612, 542, 1688,
|
||||
540, 614, 514, 1692, 542, 588, 538, 590, 542, 586, 542, 612, 516, 612,
|
||||
514, 1692, 516, 612, 540, 586, 520, 1712, 518, 1714, 542, 1688, 518, 1716,
|
||||
542, 1688, 516, 614, 542, 1686, 518, 1714, 516, 612, 532, 40882,
|
||||
8976, 4498, 516, 1716, 542, 1690, 540, 614, 516, 614, 516, 614, 514, 588,
|
||||
540, 588, 544, 1688, 522, 1710, 518, 638, 516, 1688, 520, 636, 492, 1714,
|
||||
542, 586, 542, 1690, 542, 588, 542, 584, 542, 612, 516, 612, 514, 614,
|
||||
516, 1690, 542, 586, 542, 586, 540, 1690, 518, 1712, 518, 1716, 518, 1714,
|
||||
542, 1690, 542, 586, 540, 1690, 542, 1690, 542, 588, 540};
|
||||
irsend.sendRaw(rawData_0, 203, 38000);
|
||||
irsend.makeDecodeResult();
|
||||
EXPECT_TRUE(irrecv.decode(&irsend.capture));
|
||||
EXPECT_EQ(EPSON, irsend.capture.decode_type);
|
||||
EXPECT_EQ(kEpsonBits, irsend.capture.bits);
|
||||
EXPECT_EQ(0xC1AA09F6, irsend.capture.value);
|
||||
EXPECT_EQ(0x5583, irsend.capture.address);
|
||||
EXPECT_EQ(0x90, irsend.capture.command);
|
||||
EXPECT_TRUE(irsend.capture.repeat);
|
||||
}
|
||||
|
||||
TEST(TestDecodeEpson, RequiresARepeat) {
|
||||
IRsendTest irsend(kGpioUnused);
|
||||
IRrecv irrecv(kGpioUnused);
|
||||
irsend.begin();
|
||||
|
||||
// Simulate sending only two messages (mesg + repeat)
|
||||
irsend.reset();
|
||||
irsend.sendEpson(0xC1AA09F6, kEpsonBits, 1);
|
||||
irsend.makeDecodeResult();
|
||||
EXPECT_TRUE(irrecv.decode(&irsend.capture));
|
||||
EXPECT_EQ(EPSON, irsend.capture.decode_type);
|
||||
EXPECT_EQ(kEpsonBits, irsend.capture.bits);
|
||||
EXPECT_EQ(0xC1AA09F6, irsend.capture.value);
|
||||
EXPECT_EQ(0x5583, irsend.capture.address);
|
||||
EXPECT_EQ(0x90, irsend.capture.command);
|
||||
EXPECT_TRUE(irsend.capture.repeat);
|
||||
|
||||
// Simulate sending no repeats (just 1 message) which should fail to be
|
||||
// detected as Epson.
|
||||
irsend.reset();
|
||||
irsend.sendEpson(0xC1AA09F6, kEpsonBits, 0);
|
||||
irsend.makeDecodeResult();
|
||||
EXPECT_TRUE(irrecv.decode(&irsend.capture));
|
||||
ASSERT_NE(EPSON, irsend.capture.decode_type);
|
||||
}
|
||||
|
||||
TEST(TestDecodeEpson, DecodeOnlyIfRepeatIsTheSame) {
|
||||
IRsendTest irsend(kGpioUnused);
|
||||
IRrecv irrecv(kGpioUnused);
|
||||
irsend.begin();
|
||||
|
||||
// Simulate sending only two identical messages.
|
||||
// This should succeed.
|
||||
irsend.reset();
|
||||
irsend.sendEpson(0xC1AA09F6, kEpsonBits, 0);
|
||||
irsend.sendEpson(0xC1AA09F6, kEpsonBits, 0);
|
||||
|
||||
irsend.makeDecodeResult();
|
||||
EXPECT_TRUE(irrecv.decode(&irsend.capture));
|
||||
EXPECT_EQ(EPSON, irsend.capture.decode_type);
|
||||
EXPECT_EQ(kEpsonBits, irsend.capture.bits);
|
||||
EXPECT_EQ(0xC1AA09F6, irsend.capture.value);
|
||||
EXPECT_EQ(0x5583, irsend.capture.address);
|
||||
EXPECT_EQ(0x90, irsend.capture.command);
|
||||
EXPECT_TRUE(irsend.capture.repeat);
|
||||
|
||||
// Simulate sending a repeat but with a different code.
|
||||
// This should fail.
|
||||
irsend.reset();
|
||||
irsend.sendEpson(0xC1AA09F6, kEpsonBits, 0); // Valid code.
|
||||
irsend.sendEpson(0x4BB640BF, kEpsonBits, 0); // Valid code but different.
|
||||
irsend.makeDecodeResult();
|
||||
EXPECT_TRUE(irrecv.decode(&irsend.capture));
|
||||
ASSERT_NE(EPSON, irsend.capture.decode_type);
|
||||
}
|
||||
|
||||
TEST(TestUtils, Housekeeping) {
|
||||
ASSERT_EQ("EPSON", typeToString(decode_type_t::EPSON));
|
||||
ASSERT_EQ(decode_type_t::EPSON, strToDecodeType("EPSON"));
|
||||
ASSERT_FALSE(hasACState(decode_type_t::EPSON));
|
||||
ASSERT_FALSE(IRac::isProtocolSupported(decode_type_t::EPSON));
|
||||
ASSERT_EQ(kEpsonBits, IRsendTest::defaultBits(decode_type_t::EPSON));
|
||||
ASSERT_EQ(kEpsonMinRepeat, IRsendTest::minRepeats(decode_type_t::EPSON));
|
||||
}
|
||||
Reference in New Issue
Block a user