mirror of
https://github.com/letscontrolit/ESPEasy.git
synced 2026-09-12 17:45:49 +00:00
- Disable some (more) IR protocols to make 1M build fit - Add IDF 5.x compatibility
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);
|
|
}
|