ir_Pioneer_test.cpp 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. // Copyright 2018 David Conran
  2. #include "IRsend.h"
  3. #include "IRsend_test.h"
  4. #include "IRutils.h"
  5. #include "gtest/gtest.h"
  6. // Tests for sendPioneer().
  7. // Test sending typical data only.
  8. TEST(TestSendPioneer, SendDataOnly) {
  9. IRsendTest irsend(0);
  10. irsend.begin();
  11. irsend.sendPioneer(0);
  12. EXPECT_EQ(
  13. "m8960s4480"
  14. "m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
  15. "m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
  16. "m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
  17. "m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
  18. "m560s58240"
  19. "m8960s4480"
  20. "m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
  21. "m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
  22. "m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
  23. "m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
  24. "m560s58240",
  25. irsend.outputStr());
  26. irsend.sendPioneer(0x55FF00AAAA00FF55);
  27. EXPECT_EQ(
  28. "m8960s4480"
  29. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680"
  30. "m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680"
  31. "m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
  32. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
  33. "m560s40320"
  34. "m8960s4480"
  35. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
  36. "m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
  37. "m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680"
  38. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680"
  39. "m560s40320",
  40. irsend.outputStr());
  41. }
  42. // Tests for IRutils.
  43. TEST(TestIRUtils, TypeToString) { EXPECT_EQ("PIONEER", typeToString(PIONEER)); }
  44. // Tests for encodePioneer().
  45. TEST(TestEncodePioneer, SimpleEncoding) {
  46. IRsendTest irsend(0);
  47. IRrecv irrecv(0);
  48. // Spotify button (A556+AF20)
  49. // via
  50. // https://www.pioneerelectronics.com/StaticFiles/PUSA/Files/Home%20Custom%20Install/2015%20Pioneer%20&%20Elite%20AVR%20IR%20with%20Hex_1.xls
  51. EXPECT_EQ(0xA55A6A95F50A04FB, irsend.encodePioneer(0xA556, 0xAF20));
  52. // "Source" from
  53. // https://github.com/markszabo/IRremoteESP8266/pull/547#issuecomment-429616582
  54. EXPECT_EQ(0x659A05FAF50AC53A, irsend.encodePioneer(0xA6A0, 0xAFA3));
  55. }
  56. // Tests for decodePioneer().
  57. // Synthesised Normal Pioneer message.
  58. TEST(TestDecodePioneer, SyntheticPioneerDecode) {
  59. IRsendTest irsend(0);
  60. IRrecv irrecv(0);
  61. irsend.begin();
  62. irsend.reset();
  63. irsend.sendPioneer(0x659A05FAF50AC53A);
  64. irsend.makeDecodeResult();
  65. EXPECT_TRUE(irrecv.decode(&irsend.capture));
  66. EXPECT_EQ(PIONEER, irsend.capture.decode_type);
  67. EXPECT_EQ(kPioneerBits, irsend.capture.bits);
  68. EXPECT_EQ(0x659A05FAF50AC53A, irsend.capture.value);
  69. EXPECT_EQ(0xA6A0, irsend.capture.address);
  70. EXPECT_EQ(0xAFA3, irsend.capture.command);
  71. }
  72. // Real long Pioneer message.
  73. TEST(TestDecodePioneer, RealExampleLongDecodeSourceButton) {
  74. IRsendTest irsend(0);
  75. IRrecv irrecv(0);
  76. irsend.begin();
  77. irsend.reset();
  78. // "Source" button.
  79. // https://github.com/markszabo/IRremoteESP8266/pull/547#issuecomment-429616582
  80. uint16_t rawData[135] = {
  81. 8552, 4184, 596, 472, 592, 1524, 594, 1524, 594, 472, 592, 472,
  82. 598, 1520, 596, 472, 594, 1524, 592, 1524, 592, 472, 592, 472,
  83. 596, 1520, 598, 1520, 596, 472, 592, 1524, 592, 472, 592, 476,
  84. 592, 472, 592, 472, 592, 476, 592, 472, 592, 1524, 592, 472,
  85. 598, 1518, 598, 1520, 596, 1520, 596, 1520, 596, 1520, 596, 1520,
  86. 596, 472, 592, 1524, 592, 472, 598, 25282, 8552, 4182, 596, 1520,
  87. 598, 1518, 598, 1520, 596, 1520, 596, 472, 592, 1524, 592, 472,
  88. 598, 1520, 596, 472, 594, 472, 592, 472, 596, 472, 592, 1524,
  89. 592, 472, 592, 1524, 596, 472, 594, 1520, 596, 1520, 598, 472,
  90. 592, 472, 598, 472, 594, 1522, 594, 472, 592, 1524, 594, 472,
  91. 596, 472, 594, 1524, 592, 1524, 592, 1524, 592, 472, 594, 1524,
  92. 598, 472, 592};
  93. irsend.sendRaw(rawData, 135, 38000);
  94. irsend.makeDecodeResult();
  95. EXPECT_TRUE(irrecv.decode(&irsend.capture));
  96. EXPECT_EQ(PIONEER, irsend.capture.decode_type);
  97. EXPECT_EQ(kPioneerBits, irsend.capture.bits);
  98. EXPECT_EQ(0x659A05FAF50AC53A, irsend.capture.value);
  99. EXPECT_EQ(0xA6A0, irsend.capture.address);
  100. EXPECT_EQ(0xAFA3, irsend.capture.command);
  101. }
  102. // Synthetic Pioneer message.
  103. // For:
  104. // https://github.com/markszabo/IRremoteESP8266/pull/547#issuecomment-430800734
  105. TEST(TestDecodePioneer, SyntheticPioneerMessage) {
  106. IRsendTest irsend(0);
  107. IRrecv irrecv(0);
  108. irsend.begin();
  109. irsend.reset();
  110. irsend.sendPioneer(0x659A857AF50A3DC2, 64, 0);
  111. irsend.makeDecodeResult();
  112. EXPECT_TRUE(irrecv.decode(&irsend.capture));
  113. EXPECT_EQ(PIONEER, irsend.capture.decode_type);
  114. EXPECT_EQ(kPioneerBits, irsend.capture.bits);
  115. EXPECT_EQ(0x659A857AF50A3DC2, irsend.capture.value);
  116. EXPECT_EQ(0xA6A1, irsend.capture.address);
  117. EXPECT_EQ(0xAFBC, irsend.capture.command);
  118. irsend.reset();
  119. irsend.sendPioneer(0x659A857AF50A3DC2, 64, 0);
  120. EXPECT_EQ(
  121. "m8960s4480"
  122. "m560s560m560s1680m560s1680m560s560m560s560m560s1680m560s560m560s1680"
  123. "m560s1680m560s560m560s560m560s1680m560s1680m560s560m560s1680m560s560"
  124. "m560s1680m560s560m560s560m560s560m560s560m560s1680m560s560m560s1680"
  125. "m560s560m560s1680m560s1680m560s1680m560s1680m560s560m560s1680m560s560"
  126. "m560s40320"
  127. "m8960s4480"
  128. "m560s1680m560s1680m560s1680m560s1680m560s560m560s1680m560s560m560s1680"
  129. "m560s560m560s560m560s560m560s560m560s1680m560s560m560s1680m560s560"
  130. "m560s560m560s560m560s1680m560s1680m560s1680m560s1680m560s560m560s1680"
  131. "m560s1680m560s1680m560s560m560s560m560s560m560s560m560s1680m560s560"
  132. "m560s40320",
  133. irsend.outputStr());
  134. }