Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. /*! \file internalTrice64.h
  2. \author thomas.hoehenleitner [at] seerose.net
  3. *******************************************************************************/
  4. #if TRICE_DEFAULT_PARAMETER_BIT_WIDTH == 64
  5. // #define TRICE_0 TRICE64_0 //!< Default parameter bit width for 0 parameter count TRICE is 64.
  6. #define TRICE_1 TRICE64_1 //!< Default parameter bit width for 1 parameter count TRICE is 64.
  7. #define TRICE_2 TRICE64_2 //!< Default parameter bit width for 2 parameter count TRICE is 64.
  8. #define TRICE_3 TRICE64_3 //!< Default parameter bit width for 3 parameter count TRICE is 64.
  9. #define TRICE_4 TRICE64_4 //!< Default parameter bit width for 4 parameter count TRICE is 64.
  10. #define TRICE_5 TRICE64_5 //!< Default parameter bit width for 5 parameter count TRICE is 64.
  11. #define TRICE_6 TRICE64_6 //!< Default parameter bit width for 6 parameter count TRICE is 64.
  12. #define TRICE_7 TRICE64_7 //!< Default parameter bit width for 7 parameter count TRICE is 64.
  13. #define TRICE_8 TRICE64_8 //!< Default parameter bit width for 8 parameter count TRICE is 64.
  14. #define TRICE_9 TRICE64_9 //!< Default parameter bit width for 9 parameter count TRICE is 64.
  15. #define TRICE_10 TRICE64_10 //!< Default parameter bit width for 10 parameter count TRICE is 64.
  16. #define TRICE_11 TRICE64_11 //!< Default parameter bit width for 11 parameter count TRICE is 64.
  17. #define TRICE_12 TRICE64_12 //!< Default parameter bit width for 12 parameter count TRICE is 64.
  18. // #define trice_0 trice64_0 //!< Default parameter bit width for 1 parameter count trice is 64.
  19. #define trice_1 trice64_1 //!< Default parameter bit width for 1 parameter count trice is 64.
  20. #define trice_2 trice64_2 //!< Default parameter bit width for 2 parameter count trice is 64.
  21. #define trice_3 trice64_3 //!< Default parameter bit width for 3 parameter count trice is 64.
  22. #define trice_4 trice64_4 //!< Default parameter bit width for 4 parameter count trice is 64.
  23. #define trice_5 trice64_5 //!< Default parameter bit width for 5 parameter count trice is 64.
  24. #define trice_6 trice64_6 //!< Default parameter bit width for 6 parameter count trice is 64.
  25. #define trice_7 trice64_7 //!< Default parameter bit width for 7 parameter count trice is 64.
  26. #define trice_8 trice64_8 //!< Default parameter bit width for 8 parameter count trice is 64.
  27. #define trice_9 trice64_9 //!< Default parameter bit width for 9 parameter count trice is 64.
  28. #define trice_10 trice64_10 //!< Default parameter bit width for 10 parameter count trice is 64.
  29. #define trice_11 trice64_11 //!< Default parameter bit width for 11 parameter count trice is 64.
  30. #define trice_12 trice64_12 //!< Default parameter bit width for 12 parameter count trice is 64.
  31. // #define Trice_0 Trice64_0 //!< Default parameter bit width for 0 parameter count Trice is 64.
  32. #define Trice_1 Trice64_1 //!< Default parameter bit width for 1 parameter count Trice is 64.
  33. #define Trice_2 Trice64_2 //!< Default parameter bit width for 2 parameter count Trice is 64.
  34. #define Trice_3 Trice64_3 //!< Default parameter bit width for 3 parameter count Trice is 64.
  35. #define Trice_4 Trice64_4 //!< Default parameter bit width for 4 parameter count Trice is 64.
  36. #define Trice_5 Trice64_5 //!< Default parameter bit width for 5 parameter count Trice is 64.
  37. #define Trice_6 Trice64_6 //!< Default parameter bit width for 6 parameter count Trice is 64.
  38. #define Trice_7 Trice64_7 //!< Default parameter bit width for 7 parameter count Trice is 64.
  39. #define Trice_8 Trice64_8 //!< Default parameter bit width for 8 parameter count Trice is 64.
  40. #define Trice_9 Trice64_9 //!< Default parameter bit width for 9 parameter count Trice is 64.
  41. #define Trice_10 Trice64_10 //!< Default parameter bit width for 10 parameter count Trice is 64.
  42. #define Trice_11 Trice64_11 //!< Default parameter bit width for 11 parameter count Trice is 64.
  43. #define Trice_12 Trice64_12 //!< Default parameter bit width for 12 parameter count Trice is 64.
  44. // #define TRice_0 TRice64_0 //!< Default parameter bit width for 0 parameter count TRice is 64.
  45. #define TRice_1 TRice64_1 //!< Default parameter bit width for 1 parameter count TRice is 64.
  46. #define TRice_2 TRice64_2 //!< Default parameter bit width for 2 parameter count TRice is 64.
  47. #define TRice_3 TRice64_3 //!< Default parameter bit width for 3 parameter count TRice is 64.
  48. #define TRice_4 TRice64_4 //!< Default parameter bit width for 4 parameter count TRice is 64.
  49. #define TRice_5 TRice64_5 //!< Default parameter bit width for 5 parameter count TRice is 64.
  50. #define TRice_6 TRice64_6 //!< Default parameter bit width for 6 parameter count TRice is 64.
  51. #define TRice_7 TRice64_7 //!< Default parameter bit width for 7 parameter count TRice is 64.
  52. #define TRice_8 TRice64_8 //!< Default parameter bit width for 8 parameter count TRice is 64.
  53. #define TRice_9 TRice64_9 //!< Default parameter bit width for 9 parameter count TRice is 64.
  54. #define TRice_10 TRice64_10 //!< Default parameter bit width for 10 parameter count TRice is 64.
  55. #define TRice_11 TRice64_11 //!< Default parameter bit width for 11 parameter count TRice is 64.
  56. #define TRice_12 TRice64_12 //!< Default parameter bit width for 12 parameter count TRice is 64.
  57. #endif // #if TRICE_DEFAULT_PARAMETER_BIT_WIDTH == 64
  58. #define TRICE64(tid, fmt, ...) TRICE_CONCAT2(TRICE64_, TRICE_COUNT_ARGUMENTS(__VA_ARGS__))(tid, fmt, ##__VA_ARGS__)
  59. //! TRICE64_B expects inside pFmt only one format specifier, which is used n times by using pFmt n times.
  60. //! It is usable for showing n 64-bit values.
  61. #define TRICE64_B(id, pFmt, buf, n) \
  62. do { \
  63. TRICE_N(id, pFmt, buf, 8 * n); \
  64. } while (0)
  65. //! TRICE64_F expects inside pFmt just a string which is assumed to be a remote function name.
  66. //! The trice tool displays the pFmt string followed by n times (64-bit value i).
  67. //! The idea behind is to generate an id - function pointer referece list from the generated til.json file to
  68. //! compile it into a remote device and execute the inside pFmt named function remotely.
  69. //! Look for "TRICE64_F example" inside triceCheck.c.
  70. #define TRICE64_F TRICE64_B
  71. #define TRICE_PUT64_1(v0) TRICE_PUT64(v0);
  72. #define TRICE_PUT64_2(v0, v1) \
  73. TRICE_PUT64(v0); \
  74. TRICE_PUT64(v1);
  75. #define TRICE_PUT64_3(v0, v1, v2) \
  76. TRICE_PUT64(v0); \
  77. TRICE_PUT64(v1); \
  78. TRICE_PUT64(v2);
  79. #define TRICE_PUT64_4(v0, v1, v2, v3) \
  80. TRICE_PUT64(v0); \
  81. TRICE_PUT64(v1); \
  82. TRICE_PUT64(v2); \
  83. TRICE_PUT64(v3);
  84. #define TRICE_PUT64_5(v0, v1, v2, v3, v4) \
  85. TRICE_PUT64(v0); \
  86. TRICE_PUT64(v1); \
  87. TRICE_PUT64(v2); \
  88. TRICE_PUT64(v3); \
  89. TRICE_PUT64(v4);
  90. #define TRICE_PUT64_6(v0, v1, v2, v3, v4, v5) \
  91. TRICE_PUT64(v0); \
  92. TRICE_PUT64(v1); \
  93. TRICE_PUT64(v2); \
  94. TRICE_PUT64(v3); \
  95. TRICE_PUT64(v4); \
  96. TRICE_PUT64(v5);
  97. #define TRICE_PUT64_7(v0, v1, v2, v3, v4, v5, v6) \
  98. TRICE_PUT64(v0); \
  99. TRICE_PUT64(v1); \
  100. TRICE_PUT64(v2); \
  101. TRICE_PUT64(v3); \
  102. TRICE_PUT64(v4); \
  103. TRICE_PUT64(v5); \
  104. TRICE_PUT64(v6);
  105. #define TRICE_PUT64_8(v0, v1, v2, v3, v4, v5, v6, v7) \
  106. TRICE_PUT64(v0); \
  107. TRICE_PUT64(v1); \
  108. TRICE_PUT64(v2); \
  109. TRICE_PUT64(v3); \
  110. TRICE_PUT64(v4); \
  111. TRICE_PUT64(v5); \
  112. TRICE_PUT64(v6); \
  113. TRICE_PUT64(v7);
  114. #define TRICE_PUT64_9(v0, v1, v2, v3, v4, v5, v6, v7, v8) \
  115. TRICE_PUT64(v0); \
  116. TRICE_PUT64(v1); \
  117. TRICE_PUT64(v2); \
  118. TRICE_PUT64(v3); \
  119. TRICE_PUT64(v4); \
  120. TRICE_PUT64(v5); \
  121. TRICE_PUT64(v6); \
  122. TRICE_PUT64(v7); \
  123. TRICE_PUT64(v8);
  124. #define TRICE_PUT64_10(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) \
  125. TRICE_PUT64(v0); \
  126. TRICE_PUT64(v1); \
  127. TRICE_PUT64(v2); \
  128. TRICE_PUT64(v3); \
  129. TRICE_PUT64(v4); \
  130. TRICE_PUT64(v5); \
  131. TRICE_PUT64(v6); \
  132. TRICE_PUT64(v7); \
  133. TRICE_PUT64(v8); \
  134. TRICE_PUT64(v9);
  135. #define TRICE_PUT64_11(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) \
  136. TRICE_PUT64(v0); \
  137. TRICE_PUT64(v1); \
  138. TRICE_PUT64(v2); \
  139. TRICE_PUT64(v3); \
  140. TRICE_PUT64(v4); \
  141. TRICE_PUT64(v5); \
  142. TRICE_PUT64(v6); \
  143. TRICE_PUT64(v7); \
  144. TRICE_PUT64(v8); \
  145. TRICE_PUT64(v9); \
  146. TRICE_PUT64(v10);
  147. #define TRICE_PUT64_12(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) \
  148. TRICE_PUT64(v0); \
  149. TRICE_PUT64(v1); \
  150. TRICE_PUT64(v2); \
  151. TRICE_PUT64(v3); \
  152. TRICE_PUT64(v4); \
  153. TRICE_PUT64(v5); \
  154. TRICE_PUT64(v6); \
  155. TRICE_PUT64(v7); \
  156. TRICE_PUT64(v8); \
  157. TRICE_PUT64(v9); \
  158. TRICE_PUT64(v10); \
  159. TRICE_PUT64(v11);
  160. // The following `TRICE` macro definitions uses the C preprocess to concatenate the code behind the sub-macros.
  161. // The sequence `tid` in this context is executable code `id(n)`, `Id(n)` or `ID(n)` defined in trice.h.
  162. // This works only with tid=`id(n)`, `Id(n)`, `ID(n)`.
  163. //! TRICE64_0 writes trice data as fast as possible in a buffer.
  164. //! \param tid is a 16 bit Trice id in upper 2 bytes of a 32 bit value
  165. #define TRICE64_0(tid, pFmt) \
  166. TRICE_ENTER tid; \
  167. TRICE_CNTC(0); \
  168. TRICE_LEAVE
  169. //! TRICE64_1 writes trice data as fast as possible in a buffer.
  170. //! \param tid is a 16 bit Trice id in upper 2 bytes of a 32 bit value
  171. //! \param v0 a 64 bit value
  172. #define TRICE64_1(tid, pFmt, v0) \
  173. TRICE_ENTER tid; \
  174. TRICE_CNTC(8); \
  175. TRICE_PUT64_1(v0) \
  176. TRICE_LEAVE
  177. //! TRICE64_2 writes trice data as fast as possible in a buffer.
  178. //! \param tid is a 16 bit Trice id in upper 2 bytes of a 32 bit value
  179. //! \param v0 - v1 are 64 bit values
  180. #define TRICE64_2(id, pFmt, v0, v1) \
  181. TRICE_ENTER id; \
  182. TRICE_CNTC(16); \
  183. TRICE_PUT64_2(v0, v1); \
  184. TRICE_LEAVE
  185. //! TRICE64_3 writes trice data as fast as possible in a buffer.
  186. //! \param tid is a 16 bit Trice id in upper 2 bytes of a 32 bit value
  187. //! \param v0 - v2 are 64 bit values
  188. #define TRICE64_3(id, pFmt, v0, v1, v2) \
  189. TRICE_ENTER id; \
  190. TRICE_CNTC(24); \
  191. TRICE_PUT64_3(v0, v1, v2); \
  192. TRICE_LEAVE
  193. //! TRICE64_4 writes trice data as fast as possible in a buffer.
  194. //! \param tid is a 16 bit Trice id in upper 2 bytes of a 32 bit value
  195. //! \param v0 - v3 are 64 bit values
  196. #define TRICE64_4(id, pFmt, v0, v1, v2, v3) \
  197. TRICE_ENTER id; \
  198. TRICE_CNTC(32); \
  199. TRICE_PUT64_4(v0, v1, v2, v3); \
  200. TRICE_LEAVE
  201. //! TRICE64_5 writes trice data as fast as possible in a buffer.
  202. //! \param tid is a 16 bit Trice id in upper 2 bytes of a 32 bit value
  203. //! \param v0 - v4 are 64 bit values
  204. #define TRICE64_5(id, pFmt, v0, v1, v2, v3, v4) \
  205. TRICE_ENTER id; \
  206. TRICE_CNTC(40); \
  207. TRICE_PUT64_5(v0, v1, v2, v3, v4); \
  208. TRICE_LEAVE
  209. //! TRICE64_6 writes trice data as fast as possible in a buffer.
  210. //! \param tid is a 16 bit Trice id in upper 2 bytes of a 32 bit value
  211. //! \param v0 - v5 are 64 bit values
  212. #define TRICE64_6(id, pFmt, v0, v1, v2, v3, v4, v5) \
  213. TRICE_ENTER id; \
  214. TRICE_CNTC(48); \
  215. TRICE_PUT64_6(v0, v1, v2, v3, v4, v5); \
  216. TRICE_LEAVE
  217. //! TRICE64_8 writes trice data as fast as possible in a buffer.
  218. //! \param tid is a 16 bit Trice id in upper 2 bytes of a 32 bit value
  219. //! \param v0 - v6 are 64 bit values
  220. #define TRICE64_7(id, pFmt, v0, v1, v2, v3, v4, v5, v6) \
  221. TRICE_ENTER id; \
  222. TRICE_CNTC(56); \
  223. TRICE_PUT64_7(v0, v1, v2, v3, v4, v5, v6); \
  224. TRICE_LEAVE
  225. //! TRICE64_8 writes trice data as fast as possible in a buffer.
  226. //! \param tid is a 16 bit Trice id in upper 2 bytes of a 32 bit value
  227. //! \param v0 - v7 are 64 bit values
  228. #define TRICE64_8(id, pFmt, v0, v1, v2, v3, v4, v5, v6, v7) \
  229. TRICE_ENTER id; \
  230. TRICE_CNTC(64); \
  231. TRICE_PUT64_8(v0, v1, v2, v3, v4, v5, v6, v7); \
  232. TRICE_LEAVE
  233. //! TRICE64_8 writes trice data as fast as possible in a buffer.
  234. //! \param tid is a 16 bit Trice id in upper 2 bytes of a 32 bit value
  235. //! \param v0 - v7 are 64 bit values
  236. #define TRICE64_9(id, pFmt, v0, v1, v2, v3, v4, v5, v6, v7, v8) \
  237. TRICE_ENTER id; \
  238. TRICE_CNTC(72); \
  239. TRICE_PUT64_9(v0, v1, v2, v3, v4, v5, v6, v7, v8); \
  240. TRICE_LEAVE
  241. //! TRICE64_8 writes trice data as fast as possible in a buffer.
  242. //! \param tid is a 16 bit Trice id in upper 2 bytes of a 32 bit value
  243. //! \param v0 - v7 are 64 bit values
  244. #define TRICE64_10(id, pFmt, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) \
  245. TRICE_ENTER id; \
  246. TRICE_CNTC(80); \
  247. TRICE_PUT64_10(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9); \
  248. TRICE_LEAVE
  249. //! TRICE64_8 writes trice data as fast as possible in a buffer.
  250. //! \param tid is a 16 bit Trice id in upper 2 bytes of a 32 bit value
  251. //! \param v0 - v7 are 64 bit values
  252. #define TRICE64_11(id, pFmt, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) \
  253. TRICE_ENTER id; \
  254. TRICE_CNTC(88); \
  255. TRICE_PUT64_11(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10); \
  256. TRICE_LEAVE
  257. //! TRICE64_12 writes trice data as fast as possible in a buffer.
  258. //! \param tid is a 16 bit Trice id in upper 2 bytes of a 32 bit value
  259. //! \param v0 - v11 are 64 bit values
  260. #define TRICE64_12(id, pFmt, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) \
  261. TRICE_ENTER id; \
  262. TRICE_CNTC(96); \
  263. TRICE_PUT64_12(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) \
  264. TRICE_LEAVE