ir_Carrier_test.cpp 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. // Copyright 2018 David Conran
  2. #include "IRrecv.h"
  3. #include "IRsend.h"
  4. #include "IRsend_test.h"
  5. #include "gtest/gtest.h"
  6. // Tests for sendCarrierAC()
  7. // Test sending typical data only.
  8. TEST(TestSendCarrierAC, SendDataOnly) {
  9. IRsendTest irsend(0);
  10. irsend.begin();
  11. irsend.reset();
  12. irsend.sendCarrierAC(0x0);
  13. EXPECT_EQ(
  14. "m8532s4228"
  15. "m628s532m628s532m628s532m628s532m628s532m628s532m628s532m628s532"
  16. "m628s532m628s532m628s532m628s532m628s532m628s532m628s532m628s532"
  17. "m628s532m628s532m628s532m628s532m628s532m628s532m628s532m628s532"
  18. "m628s532m628s532m628s532m628s532m628s532m628s532m628s532m628s532"
  19. "m628s20000"
  20. "m8532s4228"
  21. "m628s1320m628s1320m628s1320m628s1320m628s1320m628s1320m628s1320m628s1320"
  22. "m628s1320m628s1320m628s1320m628s1320m628s1320m628s1320m628s1320m628s1320"
  23. "m628s1320m628s1320m628s1320m628s1320m628s1320m628s1320m628s1320m628s1320"
  24. "m628s1320m628s1320m628s1320m628s1320m628s1320m628s1320m628s1320m628s1320"
  25. "m628s20000"
  26. "m8532s4228"
  27. "m628s532m628s532m628s532m628s532m628s532m628s532m628s532m628s532"
  28. "m628s532m628s532m628s532m628s532m628s532m628s532m628s532m628s532"
  29. "m628s532m628s532m628s532m628s532m628s532m628s532m628s532m628s532"
  30. "m628s532m628s532m628s532m628s532m628s532m628s532m628s532m628s532"
  31. "m628s20000",
  32. irsend.outputStr());
  33. irsend.reset();
  34. irsend.sendCarrierAC(0x12345678);
  35. EXPECT_EQ(
  36. "m8532s4228"
  37. "m628s532m628s532m628s532m628s1320m628s532m628s532m628s1320m628s532"
  38. "m628s532m628s532m628s1320m628s1320m628s532m628s1320m628s532m628s532"
  39. "m628s532m628s1320m628s532m628s1320m628s532m628s1320m628s1320m628s532"
  40. "m628s532m628s1320m628s1320m628s1320m628s1320m628s532m628s532m628s532"
  41. "m628s20000"
  42. "m8532s4228"
  43. "m628s1320m628s1320m628s1320m628s532m628s1320m628s1320m628s532m628s1320"
  44. "m628s1320m628s1320m628s532m628s532m628s1320m628s532m628s1320m628s1320"
  45. "m628s1320m628s532m628s1320m628s532m628s1320m628s532m628s532m628s1320"
  46. "m628s1320m628s532m628s532m628s532m628s532m628s1320m628s1320m628s1320"
  47. "m628s20000"
  48. "m8532s4228"
  49. "m628s532m628s532m628s532m628s1320m628s532m628s532m628s1320m628s532"
  50. "m628s532m628s532m628s1320m628s1320m628s532m628s1320m628s532m628s532"
  51. "m628s532m628s1320m628s532m628s1320m628s532m628s1320m628s1320m628s532"
  52. "m628s532m628s1320m628s1320m628s1320m628s1320m628s532m628s532m628s532"
  53. "m628s20000",
  54. irsend.outputStr());
  55. irsend.reset();
  56. irsend.sendCarrierAC(0x4CCA541D);
  57. EXPECT_EQ(
  58. "m8532s4228"
  59. "m628s532m628s1320m628s532m628s532m628s1320m628s1320m628s532m628s532"
  60. "m628s1320m628s1320m628s532m628s532m628s1320m628s532m628s1320m628s532"
  61. "m628s532m628s1320m628s532m628s1320m628s532m628s1320m628s532m628s532"
  62. "m628s532m628s532m628s532m628s1320m628s1320m628s1320m628s532m628s1320"
  63. "m628s20000"
  64. "m8532s4228"
  65. "m628s1320m628s532m628s1320m628s1320m628s532m628s532m628s1320m628s1320"
  66. "m628s532m628s532m628s1320m628s1320m628s532m628s1320m628s532m628s1320"
  67. "m628s1320m628s532m628s1320m628s532m628s1320m628s532m628s1320m628s1320"
  68. "m628s1320m628s1320m628s1320m628s532m628s532m628s532m628s1320m628s532"
  69. "m628s20000"
  70. "m8532s4228"
  71. "m628s532m628s1320m628s532m628s532m628s1320m628s1320m628s532m628s532"
  72. "m628s1320m628s1320m628s532m628s532m628s1320m628s532m628s1320m628s532"
  73. "m628s532m628s1320m628s532m628s1320m628s532m628s1320m628s532m628s532"
  74. "m628s532m628s532m628s532m628s1320m628s1320m628s1320m628s532m628s1320"
  75. "m628s20000",
  76. irsend.outputStr());
  77. }
  78. // Test sending typical data only.
  79. TEST(TestSendCarrierAC, SendWithRepeats) {
  80. IRsendTest irsend(0);
  81. irsend.begin();
  82. irsend.reset();
  83. irsend.sendCarrierAC(0x12345678, kCarrierAcBits, 2); // two repeats.
  84. EXPECT_EQ(
  85. "m8532s4228"
  86. "m628s532m628s532m628s532m628s1320m628s532m628s532m628s1320m628s532"
  87. "m628s532m628s532m628s1320m628s1320m628s532m628s1320m628s532m628s532"
  88. "m628s532m628s1320m628s532m628s1320m628s532m628s1320m628s1320m628s532"
  89. "m628s532m628s1320m628s1320m628s1320m628s1320m628s532m628s532m628s532"
  90. "m628s20000"
  91. "m8532s4228"
  92. "m628s1320m628s1320m628s1320m628s532m628s1320m628s1320m628s532m628s1320"
  93. "m628s1320m628s1320m628s532m628s532m628s1320m628s532m628s1320m628s1320"
  94. "m628s1320m628s532m628s1320m628s532m628s1320m628s532m628s532m628s1320"
  95. "m628s1320m628s532m628s532m628s532m628s532m628s1320m628s1320m628s1320"
  96. "m628s20000"
  97. "m8532s4228"
  98. "m628s532m628s532m628s532m628s1320m628s532m628s532m628s1320m628s532"
  99. "m628s532m628s532m628s1320m628s1320m628s532m628s1320m628s532m628s532"
  100. "m628s532m628s1320m628s532m628s1320m628s532m628s1320m628s1320m628s532"
  101. "m628s532m628s1320m628s1320m628s1320m628s1320m628s532m628s532m628s532"
  102. "m628s20000"
  103. "m8532s4228"
  104. "m628s532m628s532m628s532m628s1320m628s532m628s532m628s1320m628s532"
  105. "m628s532m628s532m628s1320m628s1320m628s532m628s1320m628s532m628s532"
  106. "m628s532m628s1320m628s532m628s1320m628s532m628s1320m628s1320m628s532"
  107. "m628s532m628s1320m628s1320m628s1320m628s1320m628s532m628s532m628s532"
  108. "m628s20000"
  109. "m8532s4228"
  110. "m628s1320m628s1320m628s1320m628s532m628s1320m628s1320m628s532m628s1320"
  111. "m628s1320m628s1320m628s532m628s532m628s1320m628s532m628s1320m628s1320"
  112. "m628s1320m628s532m628s1320m628s532m628s1320m628s532m628s532m628s1320"
  113. "m628s1320m628s532m628s532m628s532m628s532m628s1320m628s1320m628s1320"
  114. "m628s20000"
  115. "m8532s4228"
  116. "m628s532m628s532m628s532m628s1320m628s532m628s532m628s1320m628s532"
  117. "m628s532m628s532m628s1320m628s1320m628s532m628s1320m628s532m628s532"
  118. "m628s532m628s1320m628s532m628s1320m628s532m628s1320m628s1320m628s532"
  119. "m628s532m628s1320m628s1320m628s1320m628s1320m628s532m628s532m628s532"
  120. "m628s20000"
  121. "m8532s4228"
  122. "m628s532m628s532m628s532m628s1320m628s532m628s532m628s1320m628s532"
  123. "m628s532m628s532m628s1320m628s1320m628s532m628s1320m628s532m628s532"
  124. "m628s532m628s1320m628s532m628s1320m628s532m628s1320m628s1320m628s532"
  125. "m628s532m628s1320m628s1320m628s1320m628s1320m628s532m628s532m628s532"
  126. "m628s20000"
  127. "m8532s4228"
  128. "m628s1320m628s1320m628s1320m628s532m628s1320m628s1320m628s532m628s1320"
  129. "m628s1320m628s1320m628s532m628s532m628s1320m628s532m628s1320m628s1320"
  130. "m628s1320m628s532m628s1320m628s532m628s1320m628s532m628s532m628s1320"
  131. "m628s1320m628s532m628s532m628s532m628s532m628s1320m628s1320m628s1320"
  132. "m628s20000"
  133. "m8532s4228"
  134. "m628s532m628s532m628s532m628s1320m628s532m628s532m628s1320m628s532"
  135. "m628s532m628s532m628s1320m628s1320m628s532m628s1320m628s532m628s532"
  136. "m628s532m628s1320m628s532m628s1320m628s532m628s1320m628s1320m628s532"
  137. "m628s532m628s1320m628s1320m628s1320m628s1320m628s532m628s532m628s532"
  138. "m628s20000",
  139. irsend.outputStr());
  140. }
  141. // Tests for decodeCarrierAC().
  142. // Decode normal "synthetic" messages.
  143. TEST(TestDecodeCarrierAC, NormalDecodeWithStrict) {
  144. IRsendTest irsend(0);
  145. IRrecv irrecv(0);
  146. irsend.begin();
  147. irsend.reset();
  148. irsend.sendCarrierAC(0x0);
  149. irsend.makeDecodeResult();
  150. ASSERT_TRUE(irrecv.decodeCarrierAC(&irsend.capture, kCarrierAcBits, true));
  151. EXPECT_EQ(CARRIER_AC, irsend.capture.decode_type);
  152. EXPECT_EQ(kCarrierAcBits, irsend.capture.bits);
  153. EXPECT_EQ(0x0, irsend.capture.value);
  154. EXPECT_EQ(0x0, irsend.capture.address);
  155. EXPECT_EQ(0x0, irsend.capture.command);
  156. EXPECT_FALSE(irsend.capture.repeat);
  157. irsend.reset();
  158. irsend.sendCarrierAC(0xB335ABE2);
  159. irsend.makeDecodeResult();
  160. ASSERT_TRUE(irrecv.decodeCarrierAC(&irsend.capture, kCarrierAcBits, true));
  161. EXPECT_EQ(CARRIER_AC, irsend.capture.decode_type);
  162. EXPECT_EQ(kCarrierAcBits, irsend.capture.bits);
  163. EXPECT_EQ(0xB335ABE2, irsend.capture.value);
  164. EXPECT_EQ(0xB335, irsend.capture.address);
  165. EXPECT_EQ(0xABE2, irsend.capture.command);
  166. EXPECT_FALSE(irsend.capture.repeat);
  167. // Do the last one again, & use the full decoder, not just protocol specific.
  168. irsend.reset();
  169. irsend.sendCarrierAC(0xB335ABE2);
  170. irsend.makeDecodeResult();
  171. ASSERT_TRUE(irrecv.decode(&irsend.capture));
  172. EXPECT_EQ(CARRIER_AC, irsend.capture.decode_type);
  173. EXPECT_EQ(kCarrierAcBits, irsend.capture.bits);
  174. EXPECT_EQ(0xB335ABE2, irsend.capture.value);
  175. }
  176. // Decode a "real" example message.
  177. TEST(TestDecodeCarrierAC, RealExamples) {
  178. IRsendTest irsend(0);
  179. IRrecv irrecv(0);
  180. irsend.begin();
  181. irsend.reset();
  182. // Data from Issue #385 captured by gnkarn
  183. uint16_t rawData[203] = {
  184. 8532, 4216, 628, 1312, 628, 528, 628, 1312, 628, 1312, 628, 528,
  185. 628, 524, 628, 1316, 624, 1316, 628, 524, 628, 528, 628, 1312,
  186. 628, 1316, 624, 528, 628, 1312, 628, 528, 628, 1312, 628, 1312,
  187. 628, 528, 628, 1316, 624, 528, 628, 1312, 628, 528, 628, 1312,
  188. 628, 1316, 624, 1316, 628, 1312, 628, 1316, 628, 524, 628, 528,
  189. 628, 528, 624, 1316, 628, 528, 628, 20064, 8504, 4228, 628, 528,
  190. 628, 1312, 628, 528, 628, 528, 628, 1312, 628, 1316, 624, 532,
  191. 624, 528, 628, 1316, 628, 1312, 628, 528, 628, 528, 628, 1312,
  192. 628, 528, 628, 1316, 628, 528, 624, 528, 628, 1316, 628, 528,
  193. 628, 1316, 624, 528, 628, 1316, 628, 528, 624, 532, 624, 528,
  194. 628, 528, 628, 528, 628, 1316, 624, 1316, 628, 1316, 628, 528,
  195. 624, 1316, 628, 20076, 8528, 4212, 624, 1316, 628, 528, 628, 1316,
  196. 628, 1316, 624, 528, 628, 528, 628, 1316, 628, 1316, 628, 528,
  197. 624, 532, 624, 1316, 628, 1316, 628, 528, 628, 1316, 624, 528,
  198. 628, 1316, 628, 1316, 628, 528, 628, 1316, 624, 532, 624, 1316,
  199. 628, 532, 624, 1316, 628, 1316, 624, 1320, 624, 1316, 628, 1316,
  200. 628, 528, 628, 528, 628, 528, 628, 1316, 624, 532, 624};
  201. irsend.sendRaw(rawData, 203, 38000);
  202. irsend.makeDecodeResult();
  203. ASSERT_TRUE(irrecv.decode(&irsend.capture));
  204. EXPECT_EQ(CARRIER_AC, irsend.capture.decode_type);
  205. EXPECT_EQ(kCarrierAcBits, irsend.capture.bits);
  206. EXPECT_EQ(0xB335ABE2, irsend.capture.value);
  207. EXPECT_EQ(0xB335, irsend.capture.address);
  208. EXPECT_EQ(0xABE2, irsend.capture.command);
  209. EXPECT_FALSE(irsend.capture.repeat);
  210. }