mirror of
https://github.com/crankyoldgit/IRremoteESP8266.git
synced 2026-01-12 00:05:10 +08:00
The protocol is known to almost every detail, checksum is calculated properly. Some basic tests have been added. Setting the sleep timer, scheduled power on, scheduled power off do not work since there are some flags within byte 12 which is not correctly populated ATM. Co-authored-by: David Conran <crankyoldgit@users.noreply.github.com>
97 lines
3.5 KiB
C++
97 lines
3.5 KiB
C++
// Copyright 2023 Daniele Gobbetti
|
|
|
|
#include "ir_York.h"
|
|
#include "IRac.h"
|
|
#include "IRrecv.h"
|
|
#include "IRrecv_test.h"
|
|
#include "IRsend.h"
|
|
#include "IRsend_test.h"
|
|
#include "gtest/gtest.h"
|
|
|
|
|
|
// General housekeeping
|
|
TEST(TestYork, Housekeeping) {
|
|
ASSERT_EQ("YORK", typeToString(decode_type_t::YORK));
|
|
ASSERT_EQ(typeToString(decode_type_t::YORK), "YORK");
|
|
ASSERT_TRUE(hasACState(YORK));
|
|
ASSERT_TRUE(IRac::isProtocolSupported(decode_type_t::YORK));
|
|
ASSERT_EQ(kYorkBits, IRsend::defaultBits(decode_type_t::YORK));
|
|
}
|
|
|
|
// Tests for sendYork().
|
|
// Test sending typical data only.
|
|
TEST(TestSendYork, SendDataOnly) {
|
|
IRsendTest irsend(0);
|
|
irsend.begin();
|
|
uint8_t data[kYorkStateLength] = {
|
|
0x08, 0x10, 0x07, 0x02, 0x40, 0x08,
|
|
0x03, 0x18, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00,
|
|
0xEC, 0xF5, 0xF2};
|
|
irsend.reset();
|
|
irsend.sendYork(data);
|
|
EXPECT_EQ(
|
|
"f38000d50"
|
|
"m4887s2267m612s579m612s579m612s579m612s1778m612s579m612s579m612s579"
|
|
"m612s579m612s579m612s579m612s579m612s579m612s1778m612s579m612s579"
|
|
"m612s579m612s1778m612s1778m612s1778m612s579m612s579m612s579m612s579"
|
|
"m612s579m612s579m612s1778m612s579m612s579m612s579m612s579m612s579m612s579"
|
|
"m612s579m612s579m612s579m612s579m612s579m612s579m612s1778m612s579m612s579"
|
|
"m612s579m612s579m612s1778m612s579m612s579m612s579m612s579m612s1778"
|
|
"m612s1778m612s579m612s579m612s579m612s579m612s579m612s579m612s579m612s579"
|
|
"m612s579m612s1778m612s1778m612s579m612s579m612s579m612s1778m612s579"
|
|
"m612s579m612s579m612s579m612s579m612s579m612s579m612s579m612s579m612s579"
|
|
"m612s579m612s579m612s1778m612s1778m612s579m612s579m612s579m612s579"
|
|
"m612s579m612s579m612s579m612s579m612s579m612s579m612s579m612s579m612s579"
|
|
"m612s579m612s579m612s579m612s579m612s579m612s579m612s579m612s579m612s579"
|
|
"m612s579m612s579m612s579m612s579m612s579m612s579m612s579m612s579m612s579"
|
|
"m612s579m612s579m612s579m612s579m612s1778m612s1778m612s579m612s1778"
|
|
"m612s1778m612s1778m612s1778m612s579m612s1778m612s579m612s1778m612s1778"
|
|
"m612s1778m612s1778m612s579m612s1778m612s579m612s579m612s1778m612s1778"
|
|
"m612s1778m612s1778m612s100000",
|
|
irsend.outputStr());
|
|
|
|
irsend.reset();
|
|
}
|
|
|
|
// Decode normal York messages.
|
|
TEST(TestDecodeYork, SyntheticDecode) {
|
|
IRsendTest irsend(0);
|
|
IRrecv irrecv(0);
|
|
irsend.begin();
|
|
|
|
// Synthesised Normal York message.
|
|
irsend.reset();
|
|
uint8_t kYorkKnownGoodState[kYorkStateLength] = {
|
|
0x08, 0x10, 0x07, 0x02, 0x40, 0x08,
|
|
0x03, 0x18, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00,
|
|
0xEC, 0xF5, 0xF2};
|
|
irsend.sendYork(kYorkKnownGoodState);
|
|
irsend.makeDecodeResult();
|
|
EXPECT_TRUE(irrecv.decode(&irsend.capture));
|
|
EXPECT_EQ(YORK, irsend.capture.decode_type);
|
|
EXPECT_EQ(kYorkBits, irsend.capture.bits);
|
|
EXPECT_STATE_EQ(kYorkKnownGoodState, irsend.capture.state,
|
|
irsend.capture.bits);
|
|
EXPECT_EQ(
|
|
"Power: On, Mode: 1 (Heat), Fan: 8 (Auto), Temp: 24C, Swing(V): Off"
|
|
", On Timer: 00:00, Off Timer: 00:00",
|
|
IRAcUtils::resultAcToString(&irsend.capture));
|
|
stdAc::state_t r, p;
|
|
ASSERT_TRUE(IRAcUtils::decodeToState(&irsend.capture, &r, &p));
|
|
}
|
|
|
|
// test checksum calculation
|
|
TEST(TestYorkClass, SetAndGetTemp) {
|
|
IRYorkAc ac(kGpioUnused);
|
|
EXPECT_NE(23, ac.getTemp()); // default state is 24 deegrees Celsius
|
|
ac.setTemp(23);
|
|
EXPECT_EQ(23, ac.getTemp());
|
|
|
|
uint8_t expectedState[kYorkStateLength] = {
|
|
0x08, 0x10, 0x07, 0x02, 0x40, 0x08,
|
|
0x03, 0x18, 0x01, 0x5C, 0x00, 0x00, 0x00, 0x00,
|
|
0xEC, 0xA5, 0xF7};
|
|
|
|
EXPECT_STATE_EQ(expectedState, ac.getRaw(), kYorkBits);
|
|
}
|