Tasmota/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Bose_test.cpp
2021-08-30 21:08:41 +02:00

109 lines
3.2 KiB
C++

// Copyright 2021 parsnip42
// Copyright 2021 David Conran
#include "IRac.h"
#include "IRrecv.h"
#include "IRrecv_test.h"
#include "IRsend.h"
#include "IRsend_test.h"
#include "gtest/gtest.h"
TEST(TestUtils, Housekeeping) {
ASSERT_EQ("BOSE", typeToString(decode_type_t::BOSE));
ASSERT_EQ(decode_type_t::BOSE, strToDecodeType("BOSE"));
ASSERT_FALSE(hasACState(decode_type_t::BOSE));
ASSERT_FALSE(IRac::isProtocolSupported(decode_type_t::BOSE));
ASSERT_EQ(kBoseBits, IRsend::defaultBits(decode_type_t::BOSE));
ASSERT_EQ(kNoRepeat, IRsend::minRepeats(decode_type_t::BOSE));
}
// Tests for sendBose().
// Test sending typical data only.
TEST(TestSendBose, SendDataOnly) {
IRsendTest irsend(kGpioUnused);
irsend.begin();
irsend.sendBose(0xCD32);
EXPECT_EQ("f38000d50"
"m1100s1350m555s500m555s1435m555s500m555s500m555s1435m555s1435"
"m555s500m555s500m555s1435m555s500m555s1435m555s1435m555s500"
"m555s500m555s1435m555s1435m555s100000",
irsend.outputStr());
}
// Decode normal Bose messages.
TEST(TestDecodeBose, SyntheticSelfDecode) {
IRsendTest irsend(kGpioUnused);
IRrecv irrecv(kGpioUnused);
irsend.begin();
// Synthesised 16-bit Bose message (TV Speaker Power On).
irsend.reset();
irsend.sendBose(0xCD32);
irsend.makeDecodeResult();
EXPECT_TRUE(irrecv.decode(&irsend.capture));
EXPECT_EQ(BOSE, irsend.capture.decode_type);
EXPECT_EQ(kBoseBits, irsend.capture.bits);
EXPECT_EQ(0xCD32, irsend.capture.value);
EXPECT_EQ(0x0, irsend.capture.address);
EXPECT_EQ(0x0, irsend.capture.command);
}
// Decode normal Bose messages.
TEST(TestDecodeBose, RealMessageDecode1) {
IRsendTest irsend(kGpioUnused);
IRrecv irrecv(kGpioUnused);
irsend.begin();
// Real-life Bose code from an actual capture/decode (TV Speaker Power On).
irsend.reset();
const uint16_t rawData_0[35] = {
942, 1558,
442, 558, 442, 1502, 494, 534, 466, 560, 440, 1530, 468, 1532, 466,
558, 440, 504, 496, 1558, 440, 534, 466, 1556, 442, 1558, 440, 558,
440, 534, 466, 1556, 442, 1558, 440
};
irsend.sendRaw(rawData_0, 35, 38000);
irsend.makeDecodeResult();
EXPECT_TRUE(irrecv.decode(&irsend.capture));
EXPECT_EQ(BOSE, irsend.capture.decode_type);
EXPECT_EQ(kBoseBits, irsend.capture.bits);
EXPECT_EQ(0xCD32, irsend.capture.value);
EXPECT_EQ(0x0, irsend.capture.address);
EXPECT_EQ(0x0, irsend.capture.command);
}
// Decode normal Bose messages.
TEST(TestDecodeBose, RealMessageDecode2) {
IRsendTest irsend(kGpioUnused);
IRrecv irrecv(kGpioUnused);
irsend.begin();
// Real-life Bose code from an actual capture/decode (TV Speaker Mute).
irsend.reset();
const uint16_t rawData_0[35] = {
1024, 1504,
496, 528, 472, 480, 520, 502, 496, 506, 494, 502, 496, 502, 498,
502, 498, 1500, 498, 1502, 496, 1504, 496, 1502, 496, 1504, 494,
1472, 524, 1504, 468, 1556, 442, 532, 468,
};
irsend.sendRaw(rawData_0, 35, 38000);
irsend.makeDecodeResult();
EXPECT_TRUE(irrecv.decode(&irsend.capture));
EXPECT_EQ(BOSE, irsend.capture.decode_type);
EXPECT_EQ(kBoseBits, irsend.capture.bits);
EXPECT_EQ(0x7F80, irsend.capture.value);
EXPECT_EQ(0x0, irsend.capture.address);
EXPECT_EQ(0x0, irsend.capture.command);
}