ir_Electra_test.cpp 4.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. // Copyright 2018 David Conran
  2. #include "IRrecv.h"
  3. #include "IRrecv_test.h"
  4. #include "IRsend.h"
  5. #include "IRsend_test.h"
  6. #include "gtest/gtest.h"
  7. // Tests for sendElectraAC().
  8. // Test sending typical data only.
  9. TEST(TestSendElectraAC, SendDataOnly) {
  10. IRsendTest irsend(0);
  11. irsend.begin();
  12. uint8_t data[kElectraAcStateLength] = {0xC3, 0xE1, 0x6F, 0x14, 0x06,
  13. 0x00, 0x04, 0x00, 0x00, 0x04,
  14. 0x00, 0xA0, 0xB0};
  15. irsend.sendElectraAC(data);
  16. EXPECT_EQ(
  17. "m9166s4470"
  18. "m646s1647m646s1647m646s547m646s547m646s547m646s547m646s1647m646s1647"
  19. "m646s1647m646s1647m646s1647m646s547m646s547m646s547m646s547m646s1647"
  20. "m646s547m646s1647m646s1647m646s547m646s1647m646s1647m646s1647m646s1647"
  21. "m646s547m646s547m646s547m646s1647m646s547m646s1647m646s547m646s547"
  22. "m646s547m646s547m646s547m646s547m646s547m646s1647m646s1647m646s547"
  23. "m646s547m646s547m646s547m646s547m646s547m646s547m646s547m646s547"
  24. "m646s547m646s547m646s547m646s547m646s547m646s1647m646s547m646s547"
  25. "m646s547m646s547m646s547m646s547m646s547m646s547m646s547m646s547"
  26. "m646s547m646s547m646s547m646s547m646s547m646s547m646s547m646s547"
  27. "m646s547m646s547m646s547m646s547m646s547m646s1647m646s547m646s547"
  28. "m646s547m646s547m646s547m646s547m646s547m646s547m646s547m646s547"
  29. "m646s1647m646s547m646s1647m646s547m646s547m646s547m646s547m646s547"
  30. "m646s1647m646s547m646s1647m646s1647m646s547m646s547m646s547m646s547"
  31. "m646s100000",
  32. irsend.outputStr());
  33. }
  34. // Tests for decodeElectraAC().
  35. // Decode normal ElectraAC messages.
  36. TEST(TestDecodeElectraAC, SyntheticDecode) {
  37. IRsendTest irsend(0);
  38. IRrecv irrecv(0);
  39. irsend.begin();
  40. // Synthesised Normal ElectraAC message.
  41. irsend.reset();
  42. uint8_t expectedState[kElectraAcStateLength] = {0xC3, 0xE1, 0x6F, 0x14, 0x06,
  43. 0x00, 0x04, 0x00, 0x00, 0x04,
  44. 0x00, 0xA0, 0xB0};
  45. irsend.sendElectraAC(expectedState);
  46. irsend.makeDecodeResult();
  47. EXPECT_TRUE(irrecv.decode(&irsend.capture));
  48. EXPECT_EQ(ELECTRA_AC, irsend.capture.decode_type);
  49. EXPECT_EQ(kElectraAcBits, irsend.capture.bits);
  50. EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits);
  51. }
  52. // Decode a recorded example
  53. TEST(TestDecodeElectraAC, RealExampleDecode) {
  54. IRsendTest irsend(0);
  55. IRrecv irrecv(0);
  56. irsend.begin();
  57. // Real ElectraAC message.
  58. // Ref: https://github.com/markszabo/IRremoteESP8266/issues/527
  59. uint16_t rawData[211] = {
  60. 9166, 4470, 642, 1632, 642, 1632, 668, 534, 666, 534, 668, 534,
  61. 614, 536, 640, 1636, 640, 1646, 694, 1662, 612, 1628, 642, 1666,
  62. 664, 532, 668, 534, 666, 534, 666, 532, 666, 1644, 642, 532,
  63. 640, 1634, 668, 1632, 642, 538, 666, 1660, 610, 1666, 664, 1632,
  64. 642, 1672, 610, 536, 666, 534, 694, 532, 666, 1636, 614, 538,
  65. 666, 1632, 642, 536, 666, 544, 692, 534, 640, 558, 640, 534,
  66. 640, 540, 666, 534, 638, 1666, 638, 1636, 640, 550, 666, 534,
  67. 640, 540, 666, 534, 640, 540, 666, 536, 638, 540, 666, 536,
  68. 638, 550, 664, 536, 638, 540, 664, 536, 638, 540, 666, 534,
  69. 638, 1640, 664, 536, 692, 546, 664, 536, 664, 536, 664, 536,
  70. 664, 546, 612, 532, 636, 538, 664, 536, 664, 546, 612, 538,
  71. 638, 538, 638, 538, 664, 536, 690, 538, 662, 538, 664, 538,
  72. 662, 548, 664, 536, 662, 538, 662, 562, 638, 564, 636, 564,
  73. 636, 1668, 582, 556, 652, 572, 612, 568, 636, 564, 610, 570,
  74. 636, 556, 616, 550, 656, 566, 610, 570, 632, 578, 608, 1640,
  75. 662, 562, 642, 1686, 582, 570, 634, 566, 604, 576, 636, 566,
  76. 610, 578, 634, 1664, 584, 590, 660, 1636, 610, 1642, 664, 590,
  77. 610, 590, 636, 566, 634, 568, 686}; // UNKNOWN 9AD8CDB5
  78. uint8_t expectedState[kElectraAcStateLength] = {0xC3, 0xE1, 0x6F, 0x14, 0x06,
  79. 0x00, 0x04, 0x00, 0x00, 0x04,
  80. 0x00, 0xA0, 0xB0};
  81. irsend.reset();
  82. irsend.sendRaw(rawData, 211, 38000);
  83. irsend.makeDecodeResult();
  84. ASSERT_TRUE(irrecv.decode(&irsend.capture));
  85. ASSERT_EQ(ELECTRA_AC, irsend.capture.decode_type);
  86. EXPECT_EQ(kElectraAcBits, irsend.capture.bits);
  87. EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits);
  88. }