109 lines
3.2 KiB
C++
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);
|
|
}
|