ir_Lutron_test.cpp 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. // Copyright 2018 David Conran
  2. #include "IRsend.h"
  3. #include "IRsend_test.h"
  4. #include "gtest/gtest.h"
  5. // Tests for sendLutron().
  6. // Test sending typical data only.
  7. TEST(TestSendLutron, SendDataOnly) {
  8. IRsendTest irsend(0);
  9. irsend.begin();
  10. irsend.sendLutron(0);
  11. EXPECT_EQ("m2288s230080", irsend.outputStr());
  12. irsend.sendLutron(0xAAAAAAAAA); // Longest possible sequence. (I think)
  13. EXPECT_EQ(
  14. "m2288s2288m2288s2288m2288s2288m2288s2288m2288s2288m2288s2288m2288s2288"
  15. "m2288s2288m2288s2288m2288s2288m2288s2288m2288s2288m2288s2288m2288s2288"
  16. "m2288s2288m2288s2288m2288s2288m2288s152288",
  17. irsend.outputStr());
  18. irsend.sendLutron(0x7FFFFFFFF);
  19. EXPECT_EQ("m82368s150000", irsend.outputStr());
  20. irsend.sendLutron(0x7F88BD120);
  21. EXPECT_EQ(
  22. "m20592s6864m2288s6864m2288s2288m9152s2288m2288s6864m2288s4576m2288"
  23. "s161440",
  24. irsend.outputStr());
  25. }
  26. // Test sending with repeats.
  27. TEST(TestSendLutron, SendWithRepeats) {
  28. IRsendTest irsend(0);
  29. irsend.begin();
  30. // Send a command with 0 repeats.
  31. irsend.sendLutron(0x7F88BD120, kLutronBits, 0);
  32. EXPECT_EQ(
  33. "m20592s6864m2288s6864m2288s2288m9152s2288m2288s6864m2288s4576m2288"
  34. "s161440",
  35. irsend.outputStr());
  36. // Send a command with 1 repeat.
  37. irsend.sendLutron(0x7F88BD120, kLutronBits, 1);
  38. EXPECT_EQ(
  39. "m20592s6864m2288s6864m2288s2288m9152s2288m2288s6864m2288s4576m2288"
  40. "s161440"
  41. "m20592s6864m2288s6864m2288s2288m9152s2288m2288s6864m2288s4576m2288"
  42. "s161440",
  43. irsend.outputStr());
  44. // Send a command with 3 repeats.
  45. irsend.sendLutron(0x7F88BD120, kLutronBits, 3);
  46. EXPECT_EQ(
  47. "m20592s6864m2288s6864m2288s2288m9152s2288m2288s6864m2288s4576m2288"
  48. "s161440"
  49. "m20592s6864m2288s6864m2288s2288m9152s2288m2288s6864m2288s4576m2288"
  50. "s161440"
  51. "m20592s6864m2288s6864m2288s2288m9152s2288m2288s6864m2288s4576m2288"
  52. "s161440"
  53. "m20592s6864m2288s6864m2288s2288m9152s2288m2288s6864m2288s4576m2288"
  54. "s161440",
  55. irsend.outputStr());
  56. }
  57. // Tests for decodeLutron().
  58. // Decode normal Lutron messages.
  59. TEST(TestDecodeLutron, SyntheticDecode) {
  60. IRsendTest irsend(0);
  61. IRrecv irrecv(0);
  62. irsend.begin();
  63. // Synthesised Normal Lutron messages.
  64. irsend.reset();
  65. irsend.sendLutron(0x7F88BD120);
  66. irsend.makeDecodeResult();
  67. EXPECT_TRUE(irrecv.decode(&irsend.capture));
  68. EXPECT_EQ(LUTRON, irsend.capture.decode_type);
  69. EXPECT_EQ(kLutronBits, irsend.capture.bits);
  70. EXPECT_EQ(0x7F88BD120, irsend.capture.value);
  71. EXPECT_EQ(0x0, irsend.capture.address);
  72. EXPECT_EQ(0x0, irsend.capture.command);
  73. irsend.reset();
  74. irsend.sendLutron(0x0DEADBEEF);
  75. irsend.makeDecodeResult();
  76. EXPECT_TRUE(irrecv.decode(&irsend.capture));
  77. EXPECT_EQ(LUTRON, irsend.capture.decode_type);
  78. EXPECT_EQ(kLutronBits, irsend.capture.bits);
  79. EXPECT_EQ(0x0DEADBEEF, irsend.capture.value);
  80. EXPECT_EQ(0x0, irsend.capture.address);
  81. EXPECT_EQ(0x0, irsend.capture.command);
  82. irsend.reset();
  83. irsend.sendLutron(0x0);
  84. irsend.makeDecodeResult();
  85. EXPECT_TRUE(irrecv.decode(&irsend.capture));
  86. EXPECT_EQ(LUTRON, irsend.capture.decode_type);
  87. EXPECT_EQ(kLutronBits, irsend.capture.bits);
  88. EXPECT_EQ(0x0, irsend.capture.value);
  89. EXPECT_EQ(0x0, irsend.capture.address);
  90. EXPECT_EQ(0x0, irsend.capture.command);
  91. irsend.reset();
  92. irsend.sendLutron(0x7FFFFFFFF);
  93. irsend.makeDecodeResult();
  94. EXPECT_TRUE(irrecv.decode(&irsend.capture));
  95. EXPECT_EQ(LUTRON, irsend.capture.decode_type);
  96. EXPECT_EQ(kLutronBits, irsend.capture.bits);
  97. EXPECT_EQ(0x7FFFFFFFF, irsend.capture.value);
  98. EXPECT_EQ(0x0, irsend.capture.address);
  99. EXPECT_EQ(0x0, irsend.capture.command);
  100. }
  101. // Decode a documented example
  102. TEST(TestDecodeLutron, DocumentedExampleFullOff) {
  103. IRsendTest irsend(0);
  104. IRrecv irrecv(0);
  105. irsend.begin();
  106. // Full Off code.
  107. // Ref: https://github.com/markszabo/IRremoteESP8266/issues/515
  108. uint16_t rawData[14] = {20518, 6839, 2280, 6839, 2280, 2280, 9119,
  109. 2280, 2280, 6839, 2280, 4560, 2280, 11399};
  110. irsend.reset();
  111. irsend.sendRaw(rawData, 14, 40);
  112. irsend.makeDecodeResult();
  113. EXPECT_TRUE(irrecv.decode(&irsend.capture));
  114. EXPECT_EQ(LUTRON, irsend.capture.decode_type);
  115. EXPECT_EQ(kLutronBits, irsend.capture.bits);
  116. EXPECT_EQ(0x7F88BD120, irsend.capture.value);
  117. EXPECT_EQ(0x0, irsend.capture.address);
  118. EXPECT_EQ(0x0, irsend.capture.command);
  119. uint16_t pronto[18] = {0x0000, 0x0069, 0x0007, 0x0000, 0x032a, 0x010e,
  120. 0x005a, 0x010e, 0x005a, 0x005a, 0x0168, 0x005a,
  121. 0x005a, 0x010e, 0x005a, 0x00b4, 0x005a, 0x01c2};
  122. irsend.reset();
  123. irsend.sendPronto(pronto, 18);
  124. irsend.makeDecodeResult();
  125. EXPECT_TRUE(irrecv.decode(&irsend.capture));
  126. EXPECT_EQ(LUTRON, irsend.capture.decode_type);
  127. EXPECT_EQ(kLutronBits, irsend.capture.bits);
  128. EXPECT_EQ(0x7F88BD120, irsend.capture.value);
  129. EXPECT_EQ(0x0, irsend.capture.address);
  130. EXPECT_EQ(0x0, irsend.capture.command);
  131. }