ir_MWM_test.cpp 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. // Copyright 2017 David Conran
  2. // Copyright 2018 Brett T. Warden
  3. #include "IRrecv.h"
  4. #include "IRrecv_test.h"
  5. #include "IRsend.h"
  6. #include "IRsend_test.h"
  7. #include "gtest/gtest.h"
  8. // MM MM WW WW MM MM
  9. // MMM MMM WW WW MMM MMM
  10. // MM M MM WW W WW MM M MM
  11. // MM MM WWW WWW MM MM
  12. // MM MM WW WW MM MM
  13. // Tests for sendMWM().
  14. // Test sending simplest case data only.
  15. TEST(TestSendMWM, SendDataOnly) {
  16. IRsendTest irsend(4);
  17. irsend.begin();
  18. irsend.reset();
  19. unsigned char test1[] = {0x96, 0x19, 0x10, 0x24, 0x0A,
  20. 0x6B, 0x20, 0x03, 0x82};
  21. /*
  22. ++--+-++--
  23. +-++--+++-
  24. +++++-+++-
  25. +++-++-++-
  26. ++-+-++++-
  27. +--+-+--+-
  28. ++++++-++-
  29. +--++++++-
  30. ++-+++++--
  31. */
  32. irsend.sendMWM(test1, sizeof(test1), 0);
  33. EXPECT_EQ(
  34. "m834s834m417s417m834s834"
  35. "m417s417m834s834m1251s417"
  36. "m2085s417m1251s417"
  37. "m1251s417m834s417m834s417"
  38. "m834s417m417s417m1668s417"
  39. "m417s834m417s417m417s834m417s417"
  40. "m2502s417m834s417"
  41. "m417s834m2502s417"
  42. "m834s417m2085s30834", irsend.outputStr());
  43. irsend.reset();
  44. unsigned char test2[] = {
  45. 0x99, 0x26, 0x66, 0x6E, 0xD1, 0x42, 0x06,
  46. 0x20, 0xD0, 0x32, 0xF0, 0x0B
  47. // +-++--++--
  48. // ++--++-++-
  49. // ++--++--+-
  50. // ++---+--+-
  51. // +-+++-+---
  52. // ++-++++-+-
  53. // ++--+++++-
  54. // ++++++-++-
  55. // +++++-+---
  56. // ++-++--++-
  57. // +++++-----
  58. // +--+-++++-
  59. };
  60. irsend.sendMWM(test2, sizeof(test2), 0);
  61. EXPECT_EQ(
  62. "m417s417m834s834m834s834"
  63. "m834s834m834s417m834s417"
  64. "m834s834m834s834m417s417"
  65. "m834s1251m417s834m417s417"
  66. "m417s417m1251s417m417s1251"
  67. "m834s417m1668s417m417s417"
  68. "m834s834m2085s417"
  69. "m2502s417m834s417"
  70. "m2085s417m417s1251"
  71. "m834s417m834s834m834s417"
  72. "m2085s2085"
  73. "m417s834m417s417m1668s30417", irsend.outputStr());
  74. }
  75. // Tests for decodeMWM().
  76. // Example data
  77. TEST(TestDecodeMWM, RealExamples) {
  78. IRsendTest irsend(0);
  79. IRrecv irrecv(0);
  80. irsend.begin();
  81. irsend.reset();
  82. uint16_t short_code[] = {
  83. 915, 793, 488, 366, 915, 793, 427, 366, 915, 793, 1281, 427,
  84. 2136, 366, 1281, 366, 915, 793, 427, 854, 854, 366, 1281, 854,
  85. 1708, 366, 488, 793, 854, 427, 427, 427, 427, 366, 854, 427,
  86. 2563, 366, 488, 793, 2563, 366, 488, 2075, 427, 34057};
  87. unsigned char short_expected[] = {0x96, 0x19, 0x10, 0x36, 0x0C,
  88. 0x53, 0x02, 0x03, 0xDF};
  89. irsend.sendRaw(short_code, sizeof(short_code) / sizeof(short_code[0]), 38000);
  90. irsend.makeDecodeResult();
  91. ASSERT_TRUE(irrecv.decode(&irsend.capture));
  92. EXPECT_EQ(MWM, irsend.capture.decode_type);
  93. EXPECT_EQ(8 * sizeof(short_expected) / sizeof(short_expected[0]),
  94. irsend.capture.bits);
  95. EXPECT_STATE_EQ(short_expected, irsend.capture.state, irsend.capture.bits);
  96. irsend.reset();
  97. uint16_t long_code[] = {
  98. 427, 427, 854, 854, 854, 793, 915, 793, 854, 366, 915, 366, 854,
  99. 854, 854, 793, 488, 366, 915, 1220, 427, 793, 488, 366, 488, 366,
  100. 1281, 427, 427, 1220, 915, 366, 1708, 366, 488, 366, 854, 854, 2136,
  101. 366, 2563, 366, 854, 427, 2136, 366, 488, 1220, 854, 427, 854, 793,
  102. 915, 366, 2136, 2075, 427, 793, 488, 366, 1708, 30517};
  103. unsigned char long_expected[] = {0x99, 0x26, 0x66, 0x6E, 0xD1, 0x42,
  104. 0x06, 0x20, 0xD0, 0x32, 0xF0, 0x0B};
  105. irsend.sendRaw(long_code, sizeof(long_code) / sizeof(long_code[0]), 38000);
  106. irsend.makeDecodeResult();
  107. ASSERT_TRUE(irrecv.decode(&irsend.capture));
  108. EXPECT_EQ(MWM, irsend.capture.decode_type);
  109. EXPECT_EQ(8 * sizeof(long_expected) / sizeof(long_expected[0]),
  110. irsend.capture.bits);
  111. EXPECT_STATE_EQ(long_expected, irsend.capture.state, irsend.capture.bits);
  112. }
  113. // vim: et:ts=2:sw=2