rtx_evr.h 74 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983
  1. /*
  2. * Copyright (c) 2013-2021 Arm Limited. All rights reserved.
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Licensed under the Apache License, Version 2.0 (the License); you may
  7. * not use this file except in compliance with the License.
  8. * You may obtain a copy of the License at
  9. *
  10. * www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an AS IS BASIS, WITHOUT
  14. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. *
  18. * -----------------------------------------------------------------------------
  19. *
  20. * Project: CMSIS-RTOS RTX
  21. * Title: RTX Event Recorder definitions
  22. *
  23. * -----------------------------------------------------------------------------
  24. */
  25. #ifndef RTX_EVR_H_
  26. #define RTX_EVR_H_
  27. #include "rtx_os.h" // RTX OS definitions
  28. // Initial Thread configuration covered also Thread Flags and Generic Wait
  29. #ifndef OS_EVR_THFLAGS
  30. #define OS_EVR_THFLAGS OS_EVR_THREAD
  31. #endif
  32. #ifndef OS_EVR_WAIT
  33. #define OS_EVR_WAIT OS_EVR_THREAD
  34. #endif
  35. #ifdef _RTE_
  36. #include "RTE_Components.h"
  37. #endif
  38. #ifdef RTE_Compiler_EventRecorder
  39. //lint -emacro((835,845),EventID) [MISRA Note 13]
  40. #include "EventRecorder.h"
  41. #include "EventRecorderConf.h"
  42. #if ((defined(OS_EVR_INIT) && (OS_EVR_INIT != 0)) || (EVENT_TIMESTAMP_SOURCE == 2))
  43. #ifndef EVR_RTX_KERNEL_GET_STATE_DISABLE
  44. #define EVR_RTX_KERNEL_GET_STATE_DISABLE
  45. #endif
  46. #endif
  47. #if (EVENT_TIMESTAMP_SOURCE == 2)
  48. #ifndef EVR_RTX_KERNEL_GET_SYS_TIMER_COUNT_DISABLE
  49. #define EVR_RTX_KERNEL_GET_SYS_TIMER_COUNT_DISABLE
  50. #endif
  51. #ifndef EVR_RTX_KERNEL_GET_SYS_TIMER_FREQ_DISABLE
  52. #define EVR_RTX_KERNEL_GET_SYS_TIMER_FREQ_DISABLE
  53. #endif
  54. #endif
  55. /// RTOS component number
  56. #define EvtRtxMemoryNo (0xF0U)
  57. #define EvtRtxKernelNo (0xF1U)
  58. #define EvtRtxThreadNo (0xF2U)
  59. #define EvtRtxThreadFlagsNo (0xF4U)
  60. #define EvtRtxWaitNo (0xF3U)
  61. #define EvtRtxTimerNo (0xF6U)
  62. #define EvtRtxEventFlagsNo (0xF5U)
  63. #define EvtRtxMutexNo (0xF7U)
  64. #define EvtRtxSemaphoreNo (0xF8U)
  65. #define EvtRtxMemoryPoolNo (0xF9U)
  66. #define EvtRtxMessageQueueNo (0xFAU)
  67. #endif // RTE_Compiler_EventRecorder
  68. /// Extended Status codes
  69. #define osRtxErrorKernelNotReady (-7)
  70. #define osRtxErrorKernelNotRunning (-8)
  71. #define osRtxErrorInvalidControlBlock (-9)
  72. #define osRtxErrorInvalidDataMemory (-10)
  73. #define osRtxErrorInvalidThreadStack (-11)
  74. #define osRtxErrorInvalidPriority (-12)
  75. #define osRtxErrorThreadNotJoinable (-13)
  76. #define osRtxErrorMutexNotOwned (-14)
  77. #define osRtxErrorMutexNotLocked (-15)
  78. #define osRtxErrorMutexLockLimit (-16)
  79. #define osRtxErrorSemaphoreCountLimit (-17)
  80. #define osRtxErrorTZ_InitContext_S (-18)
  81. #define osRtxErrorTZ_AllocContext_S (-19)
  82. #define osRtxErrorTZ_FreeContext_S (-20)
  83. #define osRtxErrorTZ_LoadContext_S (-21)
  84. #define osRtxErrorTZ_SaveContext_S (-22)
  85. // ==== Memory Events ====
  86. /**
  87. \brief Event on memory initialization (Op)
  88. \param[in] mem pointer to memory pool.
  89. \param[in] size size of a memory pool in bytes.
  90. \param[in] result execution status: 1 - success, 0 - failure.
  91. */
  92. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMORY != 0) && !defined(EVR_RTX_MEMORY_INIT_DISABLE))
  93. extern void EvrRtxMemoryInit (void *mem, uint32_t size, uint32_t result);
  94. #else
  95. #define EvrRtxMemoryInit(mem, size, result)
  96. #endif
  97. /**
  98. \brief Event on memory allocate (Op)
  99. \param[in] mem pointer to memory pool.
  100. \param[in] size size of a memory block in bytes.
  101. \param[in] type memory block type: 0 - generic, 1 - control block.
  102. \param[in] block pointer to allocated memory block or NULL in case of no memory is available.
  103. */
  104. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMORY != 0) && !defined(EVR_RTX_MEMORY_ALLOC_DISABLE))
  105. extern void EvrRtxMemoryAlloc (void *mem, uint32_t size, uint32_t type, void *block);
  106. #else
  107. #define EvrRtxMemoryAlloc(mem, size, type, block)
  108. #endif
  109. /**
  110. \brief Event on memory free (Op)
  111. \param[in] mem pointer to memory pool.
  112. \param[in] block memory block to be returned to the memory pool.
  113. \param[in] result execution status: 1 - success, 0 - failure.
  114. */
  115. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMORY != 0) && !defined(EVR_RTX_MEMORY_FREE_DISABLE))
  116. extern void EvrRtxMemoryFree (void *mem, void *block, uint32_t result);
  117. #else
  118. #define EvrRtxMemoryFree(mem, block, result)
  119. #endif
  120. /**
  121. \brief Event on memory block initialization (Op)
  122. \param[in] mp_info memory pool info.
  123. \param[in] block_count maximum number of memory blocks in memory pool.
  124. \param[in] block_size size of a memory block in bytes.
  125. \param[in] block_mem pointer to memory for block storage.
  126. */
  127. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMORY != 0) && !defined(EVR_RTX_MEMORY_BLOCK_INIT_DISABLE))
  128. extern void EvrRtxMemoryBlockInit (osRtxMpInfo_t *mp_info, uint32_t block_count, uint32_t block_size, void *block_mem);
  129. #else
  130. #define EvrRtxMemoryBlockInit(mp_info, block_count, block_size, block_mem)
  131. #endif
  132. /**
  133. \brief Event on memory block alloc (Op)
  134. \param[in] mp_info memory pool info.
  135. \param[in] block address of the allocated memory block or NULL in case of no memory is available.
  136. */
  137. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMORY != 0) && !defined(EVR_RTX_MEMORY_BLOCK_ALLOC_DISABLE))
  138. extern void EvrRtxMemoryBlockAlloc (osRtxMpInfo_t *mp_info, void *block);
  139. #else
  140. #define EvrRtxMemoryBlockAlloc(mp_info, block)
  141. #endif
  142. /**
  143. \brief Event on memory block free (Op)
  144. \param[in] mp_info memory pool info.
  145. \param[in] block address of the allocated memory block to be returned to the memory pool.
  146. \param[in] status extended execution status.
  147. */
  148. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMORY != 0) && !defined(EVR_RTX_MEMORY_BLOCK_FREE_DISABLE))
  149. extern void EvrRtxMemoryBlockFree (osRtxMpInfo_t *mp_info, void *block, int32_t status);
  150. #else
  151. #define EvrRtxMemoryBlockFree(mp_info, block, status)
  152. #endif
  153. // ==== Kernel Events ====
  154. /**
  155. \brief Event on RTOS kernel error (Error)
  156. \param[in] status extended execution status.
  157. */
  158. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_ERROR_DISABLE))
  159. extern void EvrRtxKernelError (int32_t status);
  160. #else
  161. #define EvrRtxKernelError(status)
  162. #endif
  163. /**
  164. \brief Event on RTOS kernel initialize (API)
  165. */
  166. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_INITIALIZE_DISABLE))
  167. extern void EvrRtxKernelInitialize (void);
  168. #else
  169. #define EvrRtxKernelInitialize()
  170. #endif
  171. /**
  172. \brief Event on successful RTOS kernel initialize (Op)
  173. */
  174. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_INITIALIZED_DISABLE))
  175. extern void EvrRtxKernelInitialized (void);
  176. #else
  177. #define EvrRtxKernelInitialized()
  178. #endif
  179. /**
  180. \brief Event on RTOS kernel information retrieve (API)
  181. \param[in] version pointer to buffer for retrieving version information.
  182. \param[in] id_buf pointer to buffer for retrieving kernel identification string.
  183. \param[in] id_size size of buffer for kernel identification string.
  184. */
  185. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_GET_INFO_DISABLE))
  186. extern void EvrRtxKernelGetInfo (osVersion_t *version, char *id_buf, uint32_t id_size);
  187. #else
  188. #define EvrRtxKernelGetInfo(version, id_buf, id_size)
  189. #endif
  190. /**
  191. \brief Event on successful RTOS kernel information retrieve (Op)
  192. \param[in] version pointer to buffer for retrieving version information.
  193. \param[in] id_buf pointer to buffer for retrieving kernel identification string.
  194. \param[in] id_size size of buffer for kernel identification string.
  195. */
  196. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_INFO_RETRIEVED_DISABLE))
  197. extern void EvrRtxKernelInfoRetrieved (const osVersion_t *version, const char *id_buf, uint32_t id_size);
  198. #else
  199. #define EvrRtxKernelInfoRetrieved(version, id_buf, id_size)
  200. #endif
  201. /**
  202. \brief Event on current RTOS Kernel state retrieve (API)
  203. \param[in] state current RTOS Kernel state.
  204. */
  205. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_GET_STATE_DISABLE))
  206. extern void EvrRtxKernelGetState (osKernelState_t state);
  207. #else
  208. #define EvrRtxKernelGetState(state)
  209. #endif
  210. /**
  211. \brief Event on RTOS Kernel scheduler start (API)
  212. */
  213. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_START_DISABLE))
  214. extern void EvrRtxKernelStart (void);
  215. #else
  216. #define EvrRtxKernelStart()
  217. #endif
  218. /**
  219. \brief Event on successful RTOS Kernel scheduler start (Op)
  220. */
  221. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_STARTED_DISABLE))
  222. extern void EvrRtxKernelStarted (void);
  223. #else
  224. #define EvrRtxKernelStarted()
  225. #endif
  226. /**
  227. \brief Event on RTOS Kernel scheduler lock (API)
  228. */
  229. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_LOCK_DISABLE))
  230. extern void EvrRtxKernelLock (void);
  231. #else
  232. #define EvrRtxKernelLock()
  233. #endif
  234. /**
  235. \brief Event on successful RTOS Kernel scheduler lock (Op)
  236. \param[in] lock previous lock state (1 - locked, 0 - not locked).
  237. */
  238. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_LOCKED_DISABLE))
  239. extern void EvrRtxKernelLocked (int32_t lock);
  240. #else
  241. #define EvrRtxKernelLocked(lock)
  242. #endif
  243. /**
  244. \brief Event on RTOS Kernel scheduler unlock (API)
  245. */
  246. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_UNLOCK_DISABLE))
  247. extern void EvrRtxKernelUnlock (void);
  248. #else
  249. #define EvrRtxKernelUnlock()
  250. #endif
  251. /**
  252. \brief Event on successful RTOS Kernel scheduler unlock (Op)
  253. \param[in] lock previous lock state (1 - locked, 0 - not locked).
  254. */
  255. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_UNLOCKED_DISABLE))
  256. extern void EvrRtxKernelUnlocked (int32_t lock);
  257. #else
  258. #define EvrRtxKernelUnlocked(lock)
  259. #endif
  260. /**
  261. \brief Event on RTOS Kernel scheduler lock state restore (API)
  262. \param[in] lock lock state obtained by \ref osKernelLock or \ref osKernelUnlock.
  263. */
  264. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_RESTORE_LOCK_DISABLE))
  265. extern void EvrRtxKernelRestoreLock (int32_t lock);
  266. #else
  267. #define EvrRtxKernelRestoreLock(lock)
  268. #endif
  269. /**
  270. \brief Event on successful RTOS Kernel scheduler lock state restore (Op)
  271. \param[in] lock new lock state (1 - locked, 0 - not locked).
  272. */
  273. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_LOCK_RESTORED_DISABLE))
  274. extern void EvrRtxKernelLockRestored (int32_t lock);
  275. #else
  276. #define EvrRtxKernelLockRestored(lock)
  277. #endif
  278. /**
  279. \brief Event on RTOS Kernel scheduler suspend (API)
  280. */
  281. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_SUSPEND_DISABLE))
  282. extern void EvrRtxKernelSuspend (void);
  283. #else
  284. #define EvrRtxKernelSuspend()
  285. #endif
  286. /**
  287. \brief Event on successful RTOS Kernel scheduler suspend (Op)
  288. \param[in] sleep_ticks time in ticks, for how long the system can sleep or power-down.
  289. */
  290. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_SUSPENDED_DISABLE))
  291. extern void EvrRtxKernelSuspended (uint32_t sleep_ticks);
  292. #else
  293. #define EvrRtxKernelSuspended(sleep_ticks)
  294. #endif
  295. /**
  296. \brief Event on RTOS Kernel scheduler resume (API)
  297. \param[in] sleep_ticks time in ticks, for how long the system was in sleep or power-down mode.
  298. */
  299. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_RESUME_DISABLE))
  300. extern void EvrRtxKernelResume (uint32_t sleep_ticks);
  301. #else
  302. #define EvrRtxKernelResume(sleep_ticks)
  303. #endif
  304. /**
  305. \brief Event on successful RTOS Kernel scheduler resume (Op)
  306. */
  307. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_RESUMED_DISABLE))
  308. extern void EvrRtxKernelResumed (void);
  309. #else
  310. #define EvrRtxKernelResumed()
  311. #endif
  312. /**
  313. \brief Event on RTOS kernel tick count retrieve (API)
  314. \param[in] count RTOS kernel current tick count.
  315. */
  316. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_GET_TICK_COUNT_DISABLE))
  317. extern void EvrRtxKernelGetTickCount (uint32_t count);
  318. #else
  319. #define EvrRtxKernelGetTickCount(count)
  320. #endif
  321. /**
  322. \brief Event on RTOS kernel tick frequency retrieve (API)
  323. \param[in] freq frequency of the kernel tick.
  324. */
  325. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_GET_TICK_FREQ_DISABLE))
  326. extern void EvrRtxKernelGetTickFreq (uint32_t freq);
  327. #else
  328. #define EvrRtxKernelGetTickFreq(freq)
  329. #endif
  330. /**
  331. \brief Event on RTOS kernel system timer count retrieve (API)
  332. \param[in] count RTOS kernel current system timer count as 32-bit value.
  333. */
  334. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_GET_SYS_TIMER_COUNT_DISABLE))
  335. extern void EvrRtxKernelGetSysTimerCount (uint32_t count);
  336. #else
  337. #define EvrRtxKernelGetSysTimerCount(count)
  338. #endif
  339. /**
  340. \brief Event on RTOS kernel system timer frequency retrieve (API)
  341. \param[in] freq frequency of the system timer.
  342. */
  343. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_GET_SYS_TIMER_FREQ_DISABLE))
  344. extern void EvrRtxKernelGetSysTimerFreq (uint32_t freq);
  345. #else
  346. #define EvrRtxKernelGetSysTimerFreq(freq)
  347. #endif
  348. /**
  349. \brief Event on RTOS kernel system error (Error)
  350. \param[in] code error code.
  351. \param[in] object_id object that caused the error.
  352. */
  353. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_KERNEL != 0) && !defined(EVR_RTX_KERNEL_ERROR_NOTIFY_DISABLE))
  354. extern void EvrRtxKernelErrorNotify (uint32_t code, void *object_id);
  355. #else
  356. #define EvrRtxKernelErrorNotify(code, object_id)
  357. #endif
  358. // ==== Thread Events ====
  359. /**
  360. \brief Event on thread error (Error)
  361. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId or NULL when ID is unknown.
  362. \param[in] status extended execution status.
  363. */
  364. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_ERROR_DISABLE))
  365. extern void EvrRtxThreadError (osThreadId_t thread_id, int32_t status);
  366. #else
  367. #define EvrRtxThreadError(thread_id, status)
  368. #endif
  369. /**
  370. \brief Event on thread create and intialize (API)
  371. \param[in] func thread function.
  372. \param[in] argument pointer that is passed to the thread function as start argument.
  373. \param[in] attr thread attributes.
  374. */
  375. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_NEW_DISABLE))
  376. extern void EvrRtxThreadNew (osThreadFunc_t func, void *argument, const osThreadAttr_t *attr);
  377. #else
  378. #define EvrRtxThreadNew(func, argument, attr)
  379. #endif
  380. /**
  381. \brief Event on successful thread create (Op)
  382. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  383. \param[in] thread_addr thread entry address.
  384. \param[in] name pointer to thread object name.
  385. */
  386. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_CREATED_DISABLE))
  387. extern void EvrRtxThreadCreated (osThreadId_t thread_id, uint32_t thread_addr, const char *name);
  388. #else
  389. #define EvrRtxThreadCreated(thread_id, thread_addr, name)
  390. #endif
  391. /**
  392. \brief Event on thread name retrieve (API)
  393. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  394. \param[in] name pointer to thread object name.
  395. */
  396. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_GET_NAME_DISABLE))
  397. extern void EvrRtxThreadGetName (osThreadId_t thread_id, const char *name);
  398. #else
  399. #define EvrRtxThreadGetName(thread_id, name)
  400. #endif
  401. /**
  402. \brief Event on current running thread ID retrieve (API)
  403. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  404. */
  405. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_GET_ID_DISABLE))
  406. extern void EvrRtxThreadGetId (osThreadId_t thread_id);
  407. #else
  408. #define EvrRtxThreadGetId(thread_id)
  409. #endif
  410. /**
  411. \brief Event on thread state retrieve (API)
  412. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  413. \param[in] state current thread state of the specified thread.
  414. */
  415. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_GET_STATE_DISABLE))
  416. extern void EvrRtxThreadGetState (osThreadId_t thread_id, osThreadState_t state);
  417. #else
  418. #define EvrRtxThreadGetState(thread_id, state)
  419. #endif
  420. /**
  421. \brief Event on thread stack size retrieve (API)
  422. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  423. \param[in] stack_size stack size in bytes.
  424. */
  425. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_GET_STACK_SIZE_DISABLE))
  426. extern void EvrRtxThreadGetStackSize (osThreadId_t thread_id, uint32_t stack_size);
  427. #else
  428. #define EvrRtxThreadGetStackSize(thread_id, stack_size)
  429. #endif
  430. /**
  431. \brief Event on available stack space retrieve (API)
  432. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  433. \param[in] stack_space remaining stack space in bytes.
  434. */
  435. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_GET_STACK_SPACE_DISABLE))
  436. extern void EvrRtxThreadGetStackSpace (osThreadId_t thread_id, uint32_t stack_space);
  437. #else
  438. #define EvrRtxThreadGetStackSpace(thread_id, stack_space)
  439. #endif
  440. /**
  441. \brief Event on thread priority set (API)
  442. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  443. \param[in] priority new priority value for the thread function.
  444. */
  445. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_SET_PRIORITY_DISABLE))
  446. extern void EvrRtxThreadSetPriority (osThreadId_t thread_id, osPriority_t priority);
  447. #else
  448. #define EvrRtxThreadSetPriority(thread_id, priority)
  449. #endif
  450. /**
  451. \brief Event on thread priority updated (Op)
  452. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  453. \param[in] priority new priority value for the thread function.
  454. */
  455. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_PRIORITY_UPDATED_DISABLE))
  456. extern void EvrRtxThreadPriorityUpdated (osThreadId_t thread_id, osPriority_t priority);
  457. #else
  458. #define EvrRtxThreadPriorityUpdated(thread_id, priority)
  459. #endif
  460. /**
  461. \brief Event on thread priority retrieve (API)
  462. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  463. \param[in] priority current priority value of the specified thread.
  464. */
  465. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_GET_PRIORITY_DISABLE))
  466. extern void EvrRtxThreadGetPriority (osThreadId_t thread_id, osPriority_t priority);
  467. #else
  468. #define EvrRtxThreadGetPriority(thread_id, priority)
  469. #endif
  470. /**
  471. \brief Event on thread yield (API)
  472. */
  473. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_YIELD_DISABLE))
  474. extern void EvrRtxThreadYield (void);
  475. #else
  476. #define EvrRtxThreadYield()
  477. #endif
  478. /**
  479. \brief Event on thread suspend (API)
  480. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  481. */
  482. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_SUSPEND_DISABLE))
  483. extern void EvrRtxThreadSuspend (osThreadId_t thread_id);
  484. #else
  485. #define EvrRtxThreadSuspend(thread_id)
  486. #endif
  487. /**
  488. \brief Event on successful thread suspend (Op)
  489. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  490. */
  491. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_SUSPENDED_DISABLE))
  492. extern void EvrRtxThreadSuspended (osThreadId_t thread_id);
  493. #else
  494. #define EvrRtxThreadSuspended(thread_id)
  495. #endif
  496. /**
  497. \brief Event on thread resume (API)
  498. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  499. */
  500. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_RESUME_DISABLE))
  501. extern void EvrRtxThreadResume (osThreadId_t thread_id);
  502. #else
  503. #define EvrRtxThreadResume(thread_id)
  504. #endif
  505. /**
  506. \brief Event on successful thread resume (Op)
  507. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  508. */
  509. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_RESUMED_DISABLE))
  510. extern void EvrRtxThreadResumed (osThreadId_t thread_id);
  511. #else
  512. #define EvrRtxThreadResumed(thread_id)
  513. #endif
  514. /**
  515. \brief Event on thread detach (API)
  516. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  517. */
  518. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_DETACH_DISABLE))
  519. extern void EvrRtxThreadDetach (osThreadId_t thread_id);
  520. #else
  521. #define EvrRtxThreadDetach(thread_id)
  522. #endif
  523. /**
  524. \brief Event on successful thread detach (Op)
  525. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  526. */
  527. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_DETACHED_DISABLE))
  528. extern void EvrRtxThreadDetached (osThreadId_t thread_id);
  529. #else
  530. #define EvrRtxThreadDetached(thread_id)
  531. #endif
  532. /**
  533. \brief Event on thread join (API)
  534. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  535. */
  536. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_JOIN_DISABLE))
  537. extern void EvrRtxThreadJoin (osThreadId_t thread_id);
  538. #else
  539. #define EvrRtxThreadJoin(thread_id)
  540. #endif
  541. /**
  542. \brief Event on pending thread join (Op)
  543. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  544. */
  545. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_JOIN_PENDING_DISABLE))
  546. extern void EvrRtxThreadJoinPending (osThreadId_t thread_id);
  547. #else
  548. #define EvrRtxThreadJoinPending(thread_id)
  549. #endif
  550. /**
  551. \brief Event on successful thread join (Op)
  552. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  553. */
  554. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_JOINED_DISABLE))
  555. extern void EvrRtxThreadJoined (osThreadId_t thread_id);
  556. #else
  557. #define EvrRtxThreadJoined(thread_id)
  558. #endif
  559. /**
  560. \brief Event on thread execution block (Detail)
  561. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  562. \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
  563. */
  564. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_BLOCKED_DISABLE))
  565. extern void EvrRtxThreadBlocked (osThreadId_t thread_id, uint32_t timeout);
  566. #else
  567. #define EvrRtxThreadBlocked(thread_id, timeout)
  568. #endif
  569. /**
  570. \brief Event on thread execution unblock (Detail)
  571. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  572. \param[in] ret_val extended execution status of the thread.
  573. */
  574. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_UNBLOCKED_DISABLE))
  575. extern void EvrRtxThreadUnblocked (osThreadId_t thread_id, uint32_t ret_val);
  576. #else
  577. #define EvrRtxThreadUnblocked(thread_id, ret_val)
  578. #endif
  579. /**
  580. \brief Event on running thread pre-emption (Detail)
  581. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  582. */
  583. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_PREEMPTED_DISABLE))
  584. extern void EvrRtxThreadPreempted (osThreadId_t thread_id);
  585. #else
  586. #define EvrRtxThreadPreempted(thread_id)
  587. #endif
  588. /**
  589. \brief Event on running thread switch (Op)
  590. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  591. */
  592. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_SWITCHED_DISABLE))
  593. extern void EvrRtxThreadSwitched (osThreadId_t thread_id);
  594. #else
  595. #define EvrRtxThreadSwitched(thread_id)
  596. #endif
  597. /**
  598. \brief Event on thread exit (API)
  599. */
  600. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_EXIT_DISABLE))
  601. extern void EvrRtxThreadExit (void);
  602. #else
  603. #define EvrRtxThreadExit()
  604. #endif
  605. /**
  606. \brief Event on thread terminate (API)
  607. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  608. */
  609. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_TERMINATE_DISABLE))
  610. extern void EvrRtxThreadTerminate (osThreadId_t thread_id);
  611. #else
  612. #define EvrRtxThreadTerminate(thread_id)
  613. #endif
  614. /**
  615. \brief Event on successful thread terminate (Op)
  616. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  617. */
  618. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_DESTROYED_DISABLE))
  619. extern void EvrRtxThreadDestroyed (osThreadId_t thread_id);
  620. #else
  621. #define EvrRtxThreadDestroyed(thread_id)
  622. #endif
  623. /**
  624. \brief Event on active thread count retrieve (API)
  625. \param[in] count number of active threads.
  626. */
  627. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_GET_COUNT_DISABLE))
  628. extern void EvrRtxThreadGetCount (uint32_t count);
  629. #else
  630. #define EvrRtxThreadGetCount(count)
  631. #endif
  632. /**
  633. \brief Event on active threads enumerate (API)
  634. \param[in] thread_array pointer to array for retrieving thread IDs.
  635. \param[in] array_items maximum number of items in array for retrieving thread IDs.
  636. \param[in] count number of enumerated threads.
  637. */
  638. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THREAD != 0) && !defined(EVR_RTX_THREAD_ENUMERATE_DISABLE))
  639. extern void EvrRtxThreadEnumerate (osThreadId_t *thread_array, uint32_t array_items, uint32_t count);
  640. #else
  641. #define EvrRtxThreadEnumerate(thread_array, array_items, count)
  642. #endif
  643. // ==== Thread Flags Events ====
  644. /**
  645. \brief Event on thread flags error (Error)
  646. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId or NULL when ID is unknown.
  647. \param[in] status extended execution status.
  648. */
  649. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THFLAGS != 0) && !defined(EVR_RTX_THREAD_FLAGS_ERROR_DISABLE))
  650. extern void EvrRtxThreadFlagsError (osThreadId_t thread_id, int32_t status);
  651. #else
  652. #define EvrRtxThreadFlagsError(thread_id, status)
  653. #endif
  654. /**
  655. \brief Event on thread flags set (API)
  656. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  657. \param[in] flags flags of the thread that shall be set.
  658. */
  659. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THFLAGS != 0) && !defined(EVR_RTX_THREAD_FLAGS_SET_DISABLE))
  660. extern void EvrRtxThreadFlagsSet (osThreadId_t thread_id, uint32_t flags);
  661. #else
  662. #define EvrRtxThreadFlagsSet(thread_id, flags)
  663. #endif
  664. /**
  665. \brief Event on successful thread flags set (Op)
  666. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  667. \param[in] thread_flags thread flags after setting.
  668. */
  669. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THFLAGS != 0) && !defined(EVR_RTX_THREAD_FLAGS_SET_DONE_DISABLE))
  670. extern void EvrRtxThreadFlagsSetDone (osThreadId_t thread_id, uint32_t thread_flags);
  671. #else
  672. #define EvrRtxThreadFlagsSetDone(thread_id, thread_flags)
  673. #endif
  674. /**
  675. \brief Event on thread flags clear (API)
  676. \param[in] flags flags of the thread that shall be cleared.
  677. */
  678. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THFLAGS != 0) && !defined(EVR_RTX_THREAD_FLAGS_CLEAR_DISABLE))
  679. extern void EvrRtxThreadFlagsClear (uint32_t flags);
  680. #else
  681. #define EvrRtxThreadFlagsClear(flags)
  682. #endif
  683. /**
  684. \brief Event on successful thread flags clear (Op)
  685. \param[in] thread_flags thread flags before clearing.
  686. */
  687. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THFLAGS != 0) && !defined(EVR_RTX_THREAD_FLAGS_CLEAR_DONE_DISABLE))
  688. extern void EvrRtxThreadFlagsClearDone (uint32_t thread_flags);
  689. #else
  690. #define EvrRtxThreadFlagsClearDone(thread_flags)
  691. #endif
  692. /**
  693. \brief Event on thread flags retrieve (API)
  694. \param[in] thread_flags current thread flags.
  695. */
  696. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THFLAGS != 0) && !defined(EVR_RTX_THREAD_FLAGS_GET_DISABLE))
  697. extern void EvrRtxThreadFlagsGet (uint32_t thread_flags);
  698. #else
  699. #define EvrRtxThreadFlagsGet(thread_flags)
  700. #endif
  701. /**
  702. \brief Event on wait for thread flags (API)
  703. \param[in] flags flags to wait for.
  704. \param[in] options flags options (osFlagsXxxx).
  705. \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
  706. */
  707. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THFLAGS != 0) && !defined(EVR_RTX_THREAD_FLAGS_WAIT_DISABLE))
  708. extern void EvrRtxThreadFlagsWait (uint32_t flags, uint32_t options, uint32_t timeout);
  709. #else
  710. #define EvrRtxThreadFlagsWait(flags, options, timeout)
  711. #endif
  712. /**
  713. \brief Event on pending wait for thread flags (Op)
  714. \param[in] flags flags to wait for.
  715. \param[in] options flags options (osFlagsXxxx).
  716. \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
  717. */
  718. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THFLAGS != 0) && !defined(EVR_RTX_THREAD_FLAGS_WAIT_PENDING_DISABLE))
  719. extern void EvrRtxThreadFlagsWaitPending (uint32_t flags, uint32_t options, uint32_t timeout);
  720. #else
  721. #define EvrRtxThreadFlagsWaitPending(flags, options, timeout)
  722. #endif
  723. /**
  724. \brief Event on wait timeout for thread flags (Op)
  725. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  726. */
  727. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THFLAGS != 0) && !defined(EVR_RTX_THREAD_FLAGS_WAIT_TIMEOUT_DISABLE))
  728. extern void EvrRtxThreadFlagsWaitTimeout (osThreadId_t thread_id);
  729. #else
  730. #define EvrRtxThreadFlagsWaitTimeout(thread_id)
  731. #endif
  732. /**
  733. \brief Event on successful wait for thread flags (Op)
  734. \param[in] flags flags to wait for.
  735. \param[in] options flags options (osFlagsXxxx).
  736. \param[in] thread_flags thread flags before clearing.
  737. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  738. */
  739. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THFLAGS != 0) && !defined(EVR_RTX_THREAD_FLAGS_WAIT_COMPLETED_DISABLE))
  740. extern void EvrRtxThreadFlagsWaitCompleted (uint32_t flags, uint32_t options, uint32_t thread_flags, osThreadId_t thread_id);
  741. #else
  742. #define EvrRtxThreadFlagsWaitCompleted(flags, options, thread_flags, thread_id)
  743. #endif
  744. /**
  745. \brief Event on unsuccessful wait for thread flags (Op)
  746. \param[in] flags flags to wait for.
  747. \param[in] options flags options (osFlagsXxxx).
  748. */
  749. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_THFLAGS != 0) && !defined(EVR_RTX_THREAD_FLAGS_WAIT_NOT_COMPLETED_DISABLE))
  750. extern void EvrRtxThreadFlagsWaitNotCompleted (uint32_t flags, uint32_t options);
  751. #else
  752. #define EvrRtxThreadFlagsWaitNotCompleted(flags, options)
  753. #endif
  754. // ==== Generic Wait Events ====
  755. /**
  756. \brief Event on delay error (Error)
  757. \param[in] status extended execution status.
  758. */
  759. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_WAIT != 0) && !defined(EVR_RTX_DELAY_ERROR_DISABLE))
  760. extern void EvrRtxDelayError (int32_t status);
  761. #else
  762. #define EvrRtxDelayError(status)
  763. #endif
  764. /**
  765. \brief Event on delay for specified time (API)
  766. \param[in] ticks \ref CMSIS_RTOS_TimeOutValue "time ticks" value.
  767. */
  768. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_WAIT != 0) && !defined(EVR_RTX_DELAY_DISABLE))
  769. extern void EvrRtxDelay (uint32_t ticks);
  770. #else
  771. #define EvrRtxDelay(ticks)
  772. #endif
  773. /**
  774. \brief Event on delay until specified time (API)
  775. \param[in] ticks absolute time in ticks.
  776. */
  777. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_WAIT != 0) && !defined(EVR_RTX_DELAY_UNTIL_DISABLE))
  778. extern void EvrRtxDelayUntil (uint32_t ticks);
  779. #else
  780. #define EvrRtxDelayUntil(ticks)
  781. #endif
  782. /**
  783. \brief Event on delay started (Op)
  784. \param[in] ticks \ref CMSIS_RTOS_TimeOutValue "time ticks" value.
  785. */
  786. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_WAIT != 0) && !defined(EVR_RTX_DELAY_STARTED_DISABLE))
  787. extern void EvrRtxDelayStarted (uint32_t ticks);
  788. #else
  789. #define EvrRtxDelayStarted(ticks)
  790. #endif
  791. /**
  792. \brief Event on delay until specified time started (Op)
  793. \param[in] ticks \ref CMSIS_RTOS_TimeOutValue "time ticks" value.
  794. */
  795. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_WAIT != 0) && !defined(EVR_RTX_DELAY_UNTIL_STARTED_DISABLE))
  796. extern void EvrRtxDelayUntilStarted (uint32_t ticks);
  797. #else
  798. #define EvrRtxDelayUntilStarted(ticks)
  799. #endif
  800. /**
  801. \brief Event on delay completed (Op)
  802. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  803. */
  804. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_WAIT != 0) && !defined(EVR_RTX_DELAY_COMPLETED_DISABLE))
  805. extern void EvrRtxDelayCompleted (osThreadId_t thread_id);
  806. #else
  807. #define EvrRtxDelayCompleted(thread_id)
  808. #endif
  809. // ==== Timer Events ====
  810. /**
  811. \brief Event on timer error (Error)
  812. \param[in] timer_id timer ID obtained by \ref osTimerNew or NULL when ID is unknown.
  813. \param[in] status extended execution status.
  814. */
  815. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_TIMER != 0) && !defined(EVR_RTX_TIMER_ERROR_DISABLE))
  816. extern void EvrRtxTimerError (osTimerId_t timer_id, int32_t status);
  817. #else
  818. #define EvrRtxTimerError(timer_id, status)
  819. #endif
  820. /**
  821. \brief Event on timer callback call (Op)
  822. \param[in] func start address of a timer call back function.
  823. \param[in] argument argument to the timer call back function.
  824. */
  825. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_TIMER != 0) && !defined(EVR_RTX_TIMER_CALLBACK_DISABLE))
  826. extern void EvrRtxTimerCallback (osTimerFunc_t func, void *argument);
  827. #else
  828. #define EvrRtxTimerCallback(func, argument)
  829. #endif
  830. /**
  831. \brief Event on timer create and initialize (API)
  832. \param[in] func start address of a timer call back function.
  833. \param[in] type osTimerOnce for one-shot or osTimerPeriodic for periodic behavior.
  834. \param[in] argument argument to the timer call back function.
  835. \param[in] attr timer attributes.
  836. */
  837. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_TIMER != 0) && !defined(EVR_RTX_TIMER_NEW_DISABLE))
  838. extern void EvrRtxTimerNew (osTimerFunc_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr);
  839. #else
  840. #define EvrRtxTimerNew(func, type, argument, attr)
  841. #endif
  842. /**
  843. \brief Event on successful timer create (Op)
  844. \param[in] timer_id timer ID obtained by \ref osTimerNew.
  845. \param[in] name pointer to timer object name.
  846. */
  847. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_TIMER != 0) && !defined(EVR_RTX_TIMER_CREATED_DISABLE))
  848. extern void EvrRtxTimerCreated (osTimerId_t timer_id, const char *name);
  849. #else
  850. #define EvrRtxTimerCreated(timer_id, name)
  851. #endif
  852. /**
  853. \brief Event on timer name retrieve (API)
  854. \param[in] timer_id timer ID obtained by \ref osTimerNew.
  855. \param[in] name pointer to timer object name.
  856. */
  857. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_TIMER != 0) && !defined(EVR_RTX_TIMER_GET_NAME_DISABLE))
  858. extern void EvrRtxTimerGetName (osTimerId_t timer_id, const char *name);
  859. #else
  860. #define EvrRtxTimerGetName(timer_id, name)
  861. #endif
  862. /**
  863. \brief Event on timer start (API)
  864. \param[in] timer_id timer ID obtained by \ref osTimerNew.
  865. \param[in] ticks \ref CMSIS_RTOS_TimeOutValue "time ticks" value of the timer.
  866. */
  867. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_TIMER != 0) && !defined(EVR_RTX_TIMER_START_DISABLE))
  868. extern void EvrRtxTimerStart (osTimerId_t timer_id, uint32_t ticks);
  869. #else
  870. #define EvrRtxTimerStart(timer_id, ticks)
  871. #endif
  872. /**
  873. \brief Event on successful timer start (Op)
  874. \param[in] timer_id timer ID obtained by \ref osTimerNew.
  875. */
  876. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_TIMER != 0) && !defined(EVR_RTX_TIMER_STARTED_DISABLE))
  877. extern void EvrRtxTimerStarted (osTimerId_t timer_id);
  878. #else
  879. #define EvrRtxTimerStarted(timer_id)
  880. #endif
  881. /**
  882. \brief Event on timer stop (API)
  883. \param[in] timer_id timer ID obtained by \ref osTimerNew.
  884. */
  885. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_TIMER != 0) && !defined(EVR_RTX_TIMER_STOP_DISABLE))
  886. extern void EvrRtxTimerStop (osTimerId_t timer_id);
  887. #else
  888. #define EvrRtxTimerStop(timer_id)
  889. #endif
  890. /**
  891. \brief Event on successful timer stop (Op)
  892. \param[in] timer_id timer ID obtained by \ref osTimerNew.
  893. */
  894. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_TIMER != 0) && !defined(EVR_RTX_TIMER_STOPPED_DISABLE))
  895. extern void EvrRtxTimerStopped (osTimerId_t timer_id);
  896. #else
  897. #define EvrRtxTimerStopped(timer_id)
  898. #endif
  899. /**
  900. \brief Event on timer running state check (API)
  901. \param[in] timer_id timer ID obtained by \ref osTimerNew.
  902. \param[in] running running state: 0 not running, 1 running.
  903. */
  904. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_TIMER != 0) && !defined(EVR_RTX_TIMER_IS_RUNNING_DISABLE))
  905. extern void EvrRtxTimerIsRunning (osTimerId_t timer_id, uint32_t running);
  906. #else
  907. #define EvrRtxTimerIsRunning(timer_id, running)
  908. #endif
  909. /**
  910. \brief Event on timer delete (API)
  911. \param[in] timer_id timer ID obtained by \ref osTimerNew.
  912. */
  913. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_TIMER != 0) && !defined(EVR_RTX_TIMER_DELETE_DISABLE))
  914. extern void EvrRtxTimerDelete (osTimerId_t timer_id);
  915. #else
  916. #define EvrRtxTimerDelete(timer_id)
  917. #endif
  918. /**
  919. \brief Event on successful timer delete (Op)
  920. \param[in] timer_id timer ID obtained by \ref osTimerNew.
  921. */
  922. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_TIMER != 0) && !defined(EVR_RTX_TIMER_DESTROYED_DISABLE))
  923. extern void EvrRtxTimerDestroyed (osTimerId_t timer_id);
  924. #else
  925. #define EvrRtxTimerDestroyed(timer_id)
  926. #endif
  927. // ==== Event Flags Events ====
  928. /**
  929. \brief Event on event flags error (Error)
  930. \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew or NULL when ID is unknown.
  931. \param[in] status extended execution status.
  932. */
  933. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_EVFLAGS != 0) && !defined(EVR_RTX_EVENT_FLAGS_ERROR_DISABLE))
  934. extern void EvrRtxEventFlagsError (osEventFlagsId_t ef_id, int32_t status);
  935. #else
  936. #define EvrRtxEventFlagsError(ef_id, status)
  937. #endif
  938. /**
  939. \brief Event on event flags create and initialize (API)
  940. \param[in] attr event flags attributes.
  941. */
  942. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_EVFLAGS != 0) && !defined(EVR_RTX_EVENT_FLAGS_NEW_DISABLE))
  943. extern void EvrRtxEventFlagsNew (const osEventFlagsAttr_t *attr);
  944. #else
  945. #define EvrRtxEventFlagsNew(attr)
  946. #endif
  947. /**
  948. \brief Event on successful event flags create (Op)
  949. \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew.
  950. \param[in] name pointer to event flags object name.
  951. */
  952. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_EVFLAGS != 0) && !defined(EVR_RTX_EVENT_FLAGS_CREATED_DISABLE))
  953. extern void EvrRtxEventFlagsCreated (osEventFlagsId_t ef_id, const char *name);
  954. #else
  955. #define EvrRtxEventFlagsCreated(ef_id, name)
  956. #endif
  957. /**
  958. \brief Event on event flags name retrieve (API)
  959. \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew.
  960. \param[in] name pointer to event flags object name.
  961. */
  962. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_EVFLAGS != 0) && !defined(EVR_RTX_EVENT_FLAGS_GET_NAME_DISABLE))
  963. extern void EvrRtxEventFlagsGetName (osEventFlagsId_t ef_id, const char *name);
  964. #else
  965. #define EvrRtxEventFlagsGetName(ef_id, name)
  966. #endif
  967. /**
  968. \brief Event on event flags set (API)
  969. \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew.
  970. \param[in] flags flags that shall be set.
  971. */
  972. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_EVFLAGS != 0) && !defined(EVR_RTX_EVENT_FLAGS_SET_DISABLE))
  973. extern void EvrRtxEventFlagsSet (osEventFlagsId_t ef_id, uint32_t flags);
  974. #else
  975. #define EvrRtxEventFlagsSet(ef_id, flags)
  976. #endif
  977. /**
  978. \brief Event on successful event flags set (Op)
  979. \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew.
  980. \param[in] event_flags event flags after setting.
  981. */
  982. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_EVFLAGS != 0) && !defined(EVR_RTX_EVENT_FLAGS_SET_DONE_DISABLE))
  983. extern void EvrRtxEventFlagsSetDone (osEventFlagsId_t ef_id, uint32_t event_flags);
  984. #else
  985. #define EvrRtxEventFlagsSetDone(ef_id, event_flags)
  986. #endif
  987. /**
  988. \brief Event on event flags clear (API)
  989. \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew.
  990. \param[in] flags flags that shall be cleared.
  991. */
  992. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_EVFLAGS != 0) && !defined(EVR_RTX_EVENT_FLAGS_CLEAR_DISABLE))
  993. extern void EvrRtxEventFlagsClear (osEventFlagsId_t ef_id, uint32_t flags);
  994. #else
  995. #define EvrRtxEventFlagsClear(ef_id, flags)
  996. #endif
  997. /**
  998. \brief Event on successful event flags clear (Op)
  999. \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew.
  1000. \param[in] event_flags event flags before clearing.
  1001. */
  1002. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_EVFLAGS != 0) && !defined(EVR_RTX_EVENT_FLAGS_CLEAR_DONE_DISABLE))
  1003. extern void EvrRtxEventFlagsClearDone (osEventFlagsId_t ef_id, uint32_t event_flags);
  1004. #else
  1005. #define EvrRtxEventFlagsClearDone(ef_id, event_flags)
  1006. #endif
  1007. /**
  1008. \brief Event on event flags retrieve (API)
  1009. \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew.
  1010. \param[in] event_flags current event flags.
  1011. */
  1012. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_EVFLAGS != 0) && !defined(EVR_RTX_EVENT_FLAGS_GET_DISABLE))
  1013. extern void EvrRtxEventFlagsGet (osEventFlagsId_t ef_id, uint32_t event_flags);
  1014. #else
  1015. #define EvrRtxEventFlagsGet(ef_id, event_flags)
  1016. #endif
  1017. /**
  1018. \brief Event on wait for event flags (API)
  1019. \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew.
  1020. \param[in] flags flags to wait for.
  1021. \param[in] options flags options (osFlagsXxxx).
  1022. \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
  1023. */
  1024. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_EVFLAGS != 0) && !defined(EVR_RTX_EVENT_FLAGS_WAIT_DISABLE))
  1025. extern void EvrRtxEventFlagsWait (osEventFlagsId_t ef_id, uint32_t flags, uint32_t options, uint32_t timeout);
  1026. #else
  1027. #define EvrRtxEventFlagsWait(ef_id, flags, options, timeout)
  1028. #endif
  1029. /**
  1030. \brief Event on pending wait for event flags (Op)
  1031. \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew.
  1032. \param[in] flags flags to wait for.
  1033. \param[in] options flags options (osFlagsXxxx).
  1034. \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
  1035. */
  1036. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_EVFLAGS != 0) && !defined(EVR_RTX_EVENT_FLAGS_WAIT_PENDING_DISABLE))
  1037. extern void EvrRtxEventFlagsWaitPending (osEventFlagsId_t ef_id, uint32_t flags, uint32_t options, uint32_t timeout);
  1038. #else
  1039. #define EvrRtxEventFlagsWaitPending(ef_id, flags, options, timeout)
  1040. #endif
  1041. /**
  1042. \brief Event on wait timeout for event flags (Op)
  1043. \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew.
  1044. */
  1045. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_EVFLAGS != 0) && !defined(EVR_RTX_EVENT_FLAGS_WAIT_TIMEOUT_DISABLE))
  1046. extern void EvrRtxEventFlagsWaitTimeout (osEventFlagsId_t ef_id);
  1047. #else
  1048. #define EvrRtxEventFlagsWaitTimeout(ef_id)
  1049. #endif
  1050. /**
  1051. \brief Event on successful wait for event flags (Op)
  1052. \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew.
  1053. \param[in] flags flags to wait for.
  1054. \param[in] options flags options (osFlagsXxxx).
  1055. \param[in] event_flags event flags before clearing or 0 if specified flags have not been set.
  1056. */
  1057. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_EVFLAGS != 0) && !defined(EVR_RTX_EVENT_FLAGS_WAIT_COMPLETED_DISABLE))
  1058. extern void EvrRtxEventFlagsWaitCompleted (osEventFlagsId_t ef_id, uint32_t flags, uint32_t options, uint32_t event_flags);
  1059. #else
  1060. #define EvrRtxEventFlagsWaitCompleted(ef_id, flags, options, event_flags)
  1061. #endif
  1062. /**
  1063. \brief Event on unsuccessful wait for event flags (Op)
  1064. \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew.
  1065. \param[in] flags flags to wait for.
  1066. \param[in] options flags options (osFlagsXxxx).
  1067. */
  1068. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_EVFLAGS != 0) && !defined(EVR_RTX_EVENT_FLAGS_WAIT_NOT_COMPLETED_DISABLE))
  1069. extern void EvrRtxEventFlagsWaitNotCompleted (osEventFlagsId_t ef_id, uint32_t flags, uint32_t options);
  1070. #else
  1071. #define EvrRtxEventFlagsWaitNotCompleted(ef_id, flags, options)
  1072. #endif
  1073. /**
  1074. \brief Event on event flags delete (API)
  1075. \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew.
  1076. */
  1077. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_EVFLAGS != 0) && !defined(EVR_RTX_EVENT_FLAGS_DELETE_DISABLE))
  1078. extern void EvrRtxEventFlagsDelete (osEventFlagsId_t ef_id);
  1079. #else
  1080. #define EvrRtxEventFlagsDelete(ef_id)
  1081. #endif
  1082. /**
  1083. \brief Event on successful event flags delete (Op)
  1084. \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew.
  1085. */
  1086. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_EVFLAGS != 0) && !defined(EVR_RTX_EVENT_FLAGS_DESTROYED_DISABLE))
  1087. extern void EvrRtxEventFlagsDestroyed (osEventFlagsId_t ef_id);
  1088. #else
  1089. #define EvrRtxEventFlagsDestroyed(ef_id)
  1090. #endif
  1091. // ==== Mutex Events ====
  1092. /**
  1093. \brief Event on mutex error (Error)
  1094. \param[in] mutex_id mutex ID obtained by \ref osMutexNew or NULL when ID is unknown.
  1095. \param[in] status extended execution status.
  1096. */
  1097. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MUTEX != 0) && !defined(EVR_RTX_MUTEX_ERROR_DISABLE))
  1098. extern void EvrRtxMutexError (osMutexId_t mutex_id, int32_t status);
  1099. #else
  1100. #define EvrRtxMutexError(mutex_id, status)
  1101. #endif
  1102. /**
  1103. \brief Event on mutex create and initialize (API)
  1104. \param[in] attr mutex attributes.
  1105. */
  1106. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MUTEX != 0) && !defined(EVR_RTX_MUTEX_NEW_DISABLE))
  1107. extern void EvrRtxMutexNew (const osMutexAttr_t *attr);
  1108. #else
  1109. #define EvrRtxMutexNew(attr)
  1110. #endif
  1111. /**
  1112. \brief Event on successful mutex create (Op)
  1113. \param[in] mutex_id mutex ID obtained by \ref osMutexNew.
  1114. \param[in] name pointer to mutex object name.
  1115. */
  1116. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MUTEX != 0) && !defined(EVR_RTX_MUTEX_CREATED_DISABLE))
  1117. extern void EvrRtxMutexCreated (osMutexId_t mutex_id, const char *name);
  1118. #else
  1119. #define EvrRtxMutexCreated(mutex_id, name)
  1120. #endif
  1121. /**
  1122. \brief Event on mutex name retrieve (API)
  1123. \param[in] mutex_id mutex ID obtained by \ref osMutexNew.
  1124. \param[in] name pointer to mutex object name.
  1125. */
  1126. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MUTEX != 0) && !defined(EVR_RTX_MUTEX_GET_NAME_DISABLE))
  1127. extern void EvrRtxMutexGetName (osMutexId_t mutex_id, const char *name);
  1128. #else
  1129. #define EvrRtxMutexGetName(mutex_id, name)
  1130. #endif
  1131. /**
  1132. \brief Event on mutex acquire (API)
  1133. \param[in] mutex_id mutex ID obtained by \ref osMutexNew.
  1134. \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
  1135. */
  1136. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MUTEX != 0) && !defined(EVR_RTX_MUTEX_ACQUIRE_DISABLE))
  1137. extern void EvrRtxMutexAcquire (osMutexId_t mutex_id, uint32_t timeout);
  1138. #else
  1139. #define EvrRtxMutexAcquire(mutex_id, timeout)
  1140. #endif
  1141. /**
  1142. \brief Event on pending mutex acquire (Op)
  1143. \param[in] mutex_id mutex ID obtained by \ref osMutexNew.
  1144. \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
  1145. */
  1146. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MUTEX != 0) && !defined(EVR_RTX_MUTEX_ACQUIRE_PENDING_DISABLE))
  1147. extern void EvrRtxMutexAcquirePending (osMutexId_t mutex_id, uint32_t timeout);
  1148. #else
  1149. #define EvrRtxMutexAcquirePending(mutex_id, timeout)
  1150. #endif
  1151. /**
  1152. \brief Event on mutex acquire timeout (Op)
  1153. \param[in] mutex_id mutex ID obtained by \ref osMutexNew.
  1154. */
  1155. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MUTEX != 0) && !defined(EVR_RTX_MUTEX_ACQUIRE_TIMEOUT_DISABLE))
  1156. extern void EvrRtxMutexAcquireTimeout (osMutexId_t mutex_id);
  1157. #else
  1158. #define EvrRtxMutexAcquireTimeout(mutex_id)
  1159. #endif
  1160. /**
  1161. \brief Event on successful mutex acquire (Op)
  1162. \param[in] mutex_id mutex ID obtained by \ref osMutexNew.
  1163. \param[in] lock current number of times mutex object is locked.
  1164. */
  1165. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MUTEX != 0) && !defined(EVR_RTX_MUTEX_ACQUIRED_DISABLE))
  1166. extern void EvrRtxMutexAcquired (osMutexId_t mutex_id, uint32_t lock);
  1167. #else
  1168. #define EvrRtxMutexAcquired(mutex_id, lock)
  1169. #endif
  1170. /**
  1171. \brief Event on unsuccessful mutex acquire (Op)
  1172. \param[in] mutex_id mutex ID obtained by \ref osMutexNew.
  1173. */
  1174. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MUTEX != 0) && !defined(EVR_RTX_MUTEX_NOT_ACQUIRED_DISABLE))
  1175. extern void EvrRtxMutexNotAcquired (osMutexId_t mutex_id);
  1176. #else
  1177. #define EvrRtxMutexNotAcquired(mutex_id)
  1178. #endif
  1179. /**
  1180. \brief Event on mutex release (API)
  1181. \param[in] mutex_id mutex ID obtained by \ref osMutexNew.
  1182. */
  1183. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MUTEX != 0) && !defined(EVR_RTX_MUTEX_RELEASE_DISABLE))
  1184. extern void EvrRtxMutexRelease (osMutexId_t mutex_id);
  1185. #else
  1186. #define EvrRtxMutexRelease(mutex_id)
  1187. #endif
  1188. /**
  1189. \brief Event on successful mutex release (Op)
  1190. \param[in] mutex_id mutex ID obtained by \ref osMutexNew.
  1191. \param[in] lock current number of times mutex object is locked.
  1192. */
  1193. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MUTEX != 0) && !defined(EVR_RTX_MUTEX_RELEASED_DISABLE))
  1194. extern void EvrRtxMutexReleased (osMutexId_t mutex_id, uint32_t lock);
  1195. #else
  1196. #define EvrRtxMutexReleased(mutex_id, lock)
  1197. #endif
  1198. /**
  1199. \brief Event on mutex owner retrieve (API)
  1200. \param[in] mutex_id mutex ID obtained by \ref osMutexNew.
  1201. \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId.
  1202. */
  1203. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MUTEX != 0) && !defined(EVR_RTX_MUTEX_GET_OWNER_DISABLE))
  1204. extern void EvrRtxMutexGetOwner (osMutexId_t mutex_id, osThreadId_t thread_id);
  1205. #else
  1206. #define EvrRtxMutexGetOwner(mutex_id, thread_id)
  1207. #endif
  1208. /**
  1209. \brief Event on mutex delete (API)
  1210. \param[in] mutex_id mutex ID obtained by \ref osMutexNew.
  1211. */
  1212. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MUTEX != 0) && !defined(EVR_RTX_MUTEX_DELETE_DISABLE))
  1213. extern void EvrRtxMutexDelete (osMutexId_t mutex_id);
  1214. #else
  1215. #define EvrRtxMutexDelete(mutex_id)
  1216. #endif
  1217. /**
  1218. \brief Event on successful mutex delete (Op)
  1219. \param[in] mutex_id mutex ID obtained by \ref osMutexNew.
  1220. */
  1221. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MUTEX != 0) && !defined(EVR_RTX_MUTEX_DESTROYED_DISABLE))
  1222. extern void EvrRtxMutexDestroyed (osMutexId_t mutex_id);
  1223. #else
  1224. #define EvrRtxMutexDestroyed(mutex_id)
  1225. #endif
  1226. // ==== Semaphore Events ====
  1227. /**
  1228. \brief Event on semaphore error (Error)
  1229. \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew or NULL when ID is unknown.
  1230. \param[in] status extended execution status.
  1231. */
  1232. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_SEMAPHORE != 0) && !defined(EVR_RTX_SEMAPHORE_ERROR_DISABLE))
  1233. extern void EvrRtxSemaphoreError (osSemaphoreId_t semaphore_id, int32_t status);
  1234. #else
  1235. #define EvrRtxSemaphoreError(semaphore_id, status)
  1236. #endif
  1237. /**
  1238. \brief Event on semaphore create and initialize (API)
  1239. \param[in] max_count maximum number of available tokens.
  1240. \param[in] initial_count initial number of available tokens.
  1241. \param[in] attr semaphore attributes.
  1242. */
  1243. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_SEMAPHORE != 0) && !defined(EVR_RTX_SEMAPHORE_NEW_DISABLE))
  1244. extern void EvrRtxSemaphoreNew (uint32_t max_count, uint32_t initial_count, const osSemaphoreAttr_t *attr);
  1245. #else
  1246. #define EvrRtxSemaphoreNew(max_count, initial_count, attr)
  1247. #endif
  1248. /**
  1249. \brief Event on successful semaphore create (Op)
  1250. \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew.
  1251. \param[in] name pointer to semaphore object name.
  1252. */
  1253. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_SEMAPHORE != 0) && !defined(EVR_RTX_SEMAPHORE_CREATED_DISABLE))
  1254. extern void EvrRtxSemaphoreCreated (osSemaphoreId_t semaphore_id, const char *name);
  1255. #else
  1256. #define EvrRtxSemaphoreCreated(semaphore_id, name)
  1257. #endif
  1258. /**
  1259. \brief Event on semaphore name retrieve (API)
  1260. \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew.
  1261. \param[in] name pointer to semaphore object name.
  1262. */
  1263. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_SEMAPHORE != 0) && !defined(EVR_RTX_SEMAPHORE_GET_NAME_DISABLE))
  1264. extern void EvrRtxSemaphoreGetName (osSemaphoreId_t semaphore_id, const char *name);
  1265. #else
  1266. #define EvrRtxSemaphoreGetName(semaphore_id, name)
  1267. #endif
  1268. /**
  1269. \brief Event on semaphore acquire (API)
  1270. \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew.
  1271. \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
  1272. */
  1273. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_SEMAPHORE != 0) && !defined(EVR_RTX_SEMAPHORE_ACQUIRE_DISABLE))
  1274. extern void EvrRtxSemaphoreAcquire (osSemaphoreId_t semaphore_id, uint32_t timeout);
  1275. #else
  1276. #define EvrRtxSemaphoreAcquire(semaphore_id, timeout)
  1277. #endif
  1278. /**
  1279. \brief Event on pending semaphore acquire (Op)
  1280. \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew.
  1281. \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
  1282. */
  1283. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_SEMAPHORE != 0) && !defined(EVR_RTX_SEMAPHORE_ACQUIRE_PENDING_DISABLE))
  1284. extern void EvrRtxSemaphoreAcquirePending (osSemaphoreId_t semaphore_id, uint32_t timeout);
  1285. #else
  1286. #define EvrRtxSemaphoreAcquirePending(semaphore_id, timeout)
  1287. #endif
  1288. /**
  1289. \brief Event on semaphore acquire timeout (Op)
  1290. \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew.
  1291. */
  1292. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_SEMAPHORE != 0) && !defined(EVR_RTX_SEMAPHORE_ACQUIRE_TIMEOUT_DISABLE))
  1293. extern void EvrRtxSemaphoreAcquireTimeout (osSemaphoreId_t semaphore_id);
  1294. #else
  1295. #define EvrRtxSemaphoreAcquireTimeout(semaphore_id)
  1296. #endif
  1297. /**
  1298. \brief Event on successful semaphore acquire (Op)
  1299. \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew.
  1300. \param[in] tokens number of available tokens.
  1301. */
  1302. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_SEMAPHORE != 0) && !defined(EVR_RTX_SEMAPHORE_ACQUIRED_DISABLE))
  1303. extern void EvrRtxSemaphoreAcquired (osSemaphoreId_t semaphore_id, uint32_t tokens);
  1304. #else
  1305. #define EvrRtxSemaphoreAcquired(semaphore_id, tokens)
  1306. #endif
  1307. /**
  1308. \brief Event on unsuccessful semaphore acquire (Op)
  1309. \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew.
  1310. */
  1311. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_SEMAPHORE != 0) && !defined(EVR_RTX_SEMAPHORE_NOT_ACQUIRED_DISABLE))
  1312. extern void EvrRtxSemaphoreNotAcquired (osSemaphoreId_t semaphore_id);
  1313. #else
  1314. #define EvrRtxSemaphoreNotAcquired(semaphore_id)
  1315. #endif
  1316. /**
  1317. \brief Event on semaphore release (API)
  1318. \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew.
  1319. */
  1320. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_SEMAPHORE != 0) && !defined(EVR_RTX_SEMAPHORE_RELEASE_DISABLE))
  1321. extern void EvrRtxSemaphoreRelease (osSemaphoreId_t semaphore_id);
  1322. #else
  1323. #define EvrRtxSemaphoreRelease(semaphore_id)
  1324. #endif
  1325. /**
  1326. \brief Event on successful semaphore release (Op)
  1327. \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew.
  1328. \param[in] tokens number of available tokens.
  1329. */
  1330. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_SEMAPHORE != 0) && !defined(EVR_RTX_SEMAPHORE_RELEASED_DISABLE))
  1331. extern void EvrRtxSemaphoreReleased (osSemaphoreId_t semaphore_id, uint32_t tokens);
  1332. #else
  1333. #define EvrRtxSemaphoreReleased(semaphore_id, tokens)
  1334. #endif
  1335. /**
  1336. \brief Event on semaphore token count retrieval (API)
  1337. \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew.
  1338. \param[in] count current number of available tokens.
  1339. */
  1340. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_SEMAPHORE != 0) && !defined(EVR_RTX_SEMAPHORE_GET_COUNT_DISABLE))
  1341. extern void EvrRtxSemaphoreGetCount (osSemaphoreId_t semaphore_id, uint32_t count);
  1342. #else
  1343. #define EvrRtxSemaphoreGetCount(semaphore_id, count)
  1344. #endif
  1345. /**
  1346. \brief Event on semaphore delete (API)
  1347. \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew.
  1348. */
  1349. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_SEMAPHORE != 0) && !defined(EVR_RTX_SEMAPHORE_DELETE_DISABLE))
  1350. extern void EvrRtxSemaphoreDelete (osSemaphoreId_t semaphore_id);
  1351. #else
  1352. #define EvrRtxSemaphoreDelete(semaphore_id)
  1353. #endif
  1354. /**
  1355. \brief Event on successful semaphore delete (Op)
  1356. \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew.
  1357. */
  1358. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_SEMAPHORE != 0) && !defined(EVR_RTX_SEMAPHORE_DESTROYED_DISABLE))
  1359. extern void EvrRtxSemaphoreDestroyed (osSemaphoreId_t semaphore_id);
  1360. #else
  1361. #define EvrRtxSemaphoreDestroyed(semaphore_id)
  1362. #endif
  1363. // ==== Memory Pool Events ====
  1364. /**
  1365. \brief Event on memory pool error (Error)
  1366. \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew or NULL when ID is unknown.
  1367. \param[in] status extended execution status.
  1368. */
  1369. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMPOOL != 0) && !defined(EVR_RTX_MEMORY_POOL_ERROR_DISABLE))
  1370. extern void EvrRtxMemoryPoolError (osMemoryPoolId_t mp_id, int32_t status);
  1371. #else
  1372. #define EvrRtxMemoryPoolError(mp_id, status)
  1373. #endif
  1374. /**
  1375. \brief Event on memory pool create and initialize (API)
  1376. \param[in] block_count maximum number of memory blocks in memory pool.
  1377. \param[in] block_size memory block size in bytes.
  1378. \param[in] attr memory pool attributes; NULL: default values.
  1379. */
  1380. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMPOOL != 0) && !defined(EVR_RTX_MEMORY_POOL_NEW_DISABLE))
  1381. extern void EvrRtxMemoryPoolNew (uint32_t block_count, uint32_t block_size, const osMemoryPoolAttr_t *attr);
  1382. #else
  1383. #define EvrRtxMemoryPoolNew(block_count, block_size, attr)
  1384. #endif
  1385. /**
  1386. \brief Event on successful memory pool create (Op)
  1387. \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew.
  1388. \param[in] name pointer to memory pool object name.
  1389. */
  1390. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMPOOL != 0) && !defined(EVR_RTX_MEMORY_POOL_CREATED_DISABLE))
  1391. extern void EvrRtxMemoryPoolCreated (osMemoryPoolId_t mp_id, const char *name);
  1392. #else
  1393. #define EvrRtxMemoryPoolCreated(mp_id, name)
  1394. #endif
  1395. /**
  1396. \brief Event on memory pool name retrieve (API)
  1397. \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew.
  1398. \param[in] name pointer to memory pool object name.
  1399. */
  1400. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMPOOL != 0) && !defined(EVR_RTX_MEMORY_POOL_GET_NAME_DISABLE))
  1401. extern void EvrRtxMemoryPoolGetName (osMemoryPoolId_t mp_id, const char *name);
  1402. #else
  1403. #define EvrRtxMemoryPoolGetName(mp_id, name)
  1404. #endif
  1405. /**
  1406. \brief Event on memory pool allocation (API)
  1407. \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew.
  1408. \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
  1409. */
  1410. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMPOOL != 0) && !defined(EVR_RTX_MEMORY_POOL_ALLOC_DISABLE))
  1411. extern void EvrRtxMemoryPoolAlloc (osMemoryPoolId_t mp_id, uint32_t timeout);
  1412. #else
  1413. #define EvrRtxMemoryPoolAlloc(mp_id, timeout)
  1414. #endif
  1415. /**
  1416. \brief Event on pending memory pool allocation (Op)
  1417. \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew.
  1418. \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
  1419. */
  1420. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMPOOL != 0) && !defined(EVR_RTX_MEMORY_POOL_ALLOC_PENDING_DISABLE))
  1421. extern void EvrRtxMemoryPoolAllocPending (osMemoryPoolId_t mp_id, uint32_t timeout);
  1422. #else
  1423. #define EvrRtxMemoryPoolAllocPending(mp_id, timeout)
  1424. #endif
  1425. /**
  1426. \brief Event on memory pool allocation timeout (Op)
  1427. \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew.
  1428. */
  1429. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMPOOL != 0) && !defined(EVR_RTX_MEMORY_POOL_ALLOC_TIMEOUT_DISABLE))
  1430. extern void EvrRtxMemoryPoolAllocTimeout (osMemoryPoolId_t mp_id);
  1431. #else
  1432. #define EvrRtxMemoryPoolAllocTimeout(mp_id)
  1433. #endif
  1434. /**
  1435. \brief Event on successful memory pool allocation (Op)
  1436. \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew.
  1437. \param[in] block address of the allocated memory block.
  1438. */
  1439. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMPOOL != 0) && !defined(EVR_RTX_MEMORY_POOL_ALLOCATED_DISABLE))
  1440. extern void EvrRtxMemoryPoolAllocated (osMemoryPoolId_t mp_id, void *block);
  1441. #else
  1442. #define EvrRtxMemoryPoolAllocated(mp_id, block)
  1443. #endif
  1444. /**
  1445. \brief Event on unsuccessful memory pool allocation (Op)
  1446. \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew.
  1447. */
  1448. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMPOOL != 0) && !defined(EVR_RTX_MEMORY_POOL_ALLOC_FAILED_DISABLE))
  1449. extern void EvrRtxMemoryPoolAllocFailed (osMemoryPoolId_t mp_id);
  1450. #else
  1451. #define EvrRtxMemoryPoolAllocFailed(mp_id)
  1452. #endif
  1453. /**
  1454. \brief Event on memory pool free (API)
  1455. \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew.
  1456. \param[in] block address of the allocated memory block to be returned to the memory pool.
  1457. */
  1458. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMPOOL != 0) && !defined(EVR_RTX_MEMORY_POOL_FREE_DISABLE))
  1459. extern void EvrRtxMemoryPoolFree (osMemoryPoolId_t mp_id, void *block);
  1460. #else
  1461. #define EvrRtxMemoryPoolFree(mp_id, block)
  1462. #endif
  1463. /**
  1464. \brief Event on successful memory pool free (Op)
  1465. \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew.
  1466. \param[in] block address of the allocated memory block to be returned to the memory pool.
  1467. */
  1468. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMPOOL != 0) && !defined(EVR_RTX_MEMORY_POOL_DEALLOCATED_DISABLE))
  1469. extern void EvrRtxMemoryPoolDeallocated (osMemoryPoolId_t mp_id, void *block);
  1470. #else
  1471. #define EvrRtxMemoryPoolDeallocated(mp_id, block)
  1472. #endif
  1473. /**
  1474. \brief Event on unsuccessful memory pool free (Op)
  1475. \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew.
  1476. \param[in] block address of the allocated memory block to be returned to the memory pool.
  1477. */
  1478. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMPOOL != 0) && !defined(EVR_RTX_MEMORY_POOL_FREE_FAILED_DISABLE))
  1479. extern void EvrRtxMemoryPoolFreeFailed (osMemoryPoolId_t mp_id, void *block);
  1480. #else
  1481. #define EvrRtxMemoryPoolFreeFailed(mp_id, block)
  1482. #endif
  1483. /**
  1484. \brief Event on memory pool capacity retrieve (API)
  1485. \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew.
  1486. \param[in] capacity maximum number of memory blocks.
  1487. */
  1488. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMPOOL != 0) && !defined(EVR_RTX_MEMORY_POOL_GET_CAPACITY_DISABLE))
  1489. extern void EvrRtxMemoryPoolGetCapacity (osMemoryPoolId_t mp_id, uint32_t capacity);
  1490. #else
  1491. #define EvrRtxMemoryPoolGetCapacity(mp_id, capacity)
  1492. #endif
  1493. /**
  1494. \brief Event on memory pool block size retrieve (API)
  1495. \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew.
  1496. \param[in] block_size memory block size in bytes.
  1497. */
  1498. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMPOOL != 0) && !defined(EVR_RTX_MEMORY_POOL_GET_BLOCK_SZIE_DISABLE))
  1499. extern void EvrRtxMemoryPoolGetBlockSize (osMemoryPoolId_t mp_id, uint32_t block_size);
  1500. #else
  1501. #define EvrRtxMemoryPoolGetBlockSize(mp_id, block_size)
  1502. #endif
  1503. /**
  1504. \brief Event on used memory pool blocks retrieve (API)
  1505. \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew.
  1506. \param[in] count number of memory blocks used.
  1507. */
  1508. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMPOOL != 0) && !defined(EVR_RTX_MEMORY_POOL_GET_COUNT_DISABLE))
  1509. extern void EvrRtxMemoryPoolGetCount (osMemoryPoolId_t mp_id, uint32_t count);
  1510. #else
  1511. #define EvrRtxMemoryPoolGetCount(mp_id, count)
  1512. #endif
  1513. /**
  1514. \brief Event on available memory pool blocks retrieve (API)
  1515. \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew.
  1516. \param[in] space number of memory blocks available.
  1517. */
  1518. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMPOOL != 0) && !defined(EVR_RTX_MEMORY_POOL_GET_SPACE_DISABLE))
  1519. extern void EvrRtxMemoryPoolGetSpace (osMemoryPoolId_t mp_id, uint32_t space);
  1520. #else
  1521. #define EvrRtxMemoryPoolGetSpace(mp_id, space)
  1522. #endif
  1523. /**
  1524. \brief Event on memory pool delete (API)
  1525. \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew.
  1526. */
  1527. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMPOOL != 0) && !defined(EVR_RTX_MEMORY_POOL_DELETE_DISABLE))
  1528. extern void EvrRtxMemoryPoolDelete (osMemoryPoolId_t mp_id);
  1529. #else
  1530. #define EvrRtxMemoryPoolDelete(mp_id)
  1531. #endif
  1532. /**
  1533. \brief Event on successful memory pool delete (Op)
  1534. \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew.
  1535. */
  1536. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MEMPOOL != 0) && !defined(EVR_RTX_MEMORY_POOL_DESTROYED_DISABLE))
  1537. extern void EvrRtxMemoryPoolDestroyed (osMemoryPoolId_t mp_id);
  1538. #else
  1539. #define EvrRtxMemoryPoolDestroyed(mp_id)
  1540. #endif
  1541. // ==== Message Queue Events ====
  1542. /**
  1543. \brief Event on message queue error (Error)
  1544. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew or NULL when ID is unknown.
  1545. \param[in] status extended execution status.
  1546. */
  1547. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_ERROR_DISABLE))
  1548. extern void EvrRtxMessageQueueError (osMessageQueueId_t mq_id, int32_t status);
  1549. #else
  1550. #define EvrRtxMessageQueueError(mq_id, status)
  1551. #endif
  1552. /**
  1553. \brief Event on message queue create and initialization (API)
  1554. \param[in] msg_count maximum number of messages in queue.
  1555. \param[in] msg_size maximum message size in bytes.
  1556. \param[in] attr message queue attributes; NULL: default values.
  1557. */
  1558. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_NEW_DISABLE))
  1559. extern void EvrRtxMessageQueueNew (uint32_t msg_count, uint32_t msg_size, const osMessageQueueAttr_t *attr);
  1560. #else
  1561. #define EvrRtxMessageQueueNew(msg_count, msg_size, attr)
  1562. #endif
  1563. /**
  1564. \brief Event on successful message queue create (Op)
  1565. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1566. \param[in] name pointer to message queue object name.
  1567. */
  1568. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_CREATED_DISABLE))
  1569. extern void EvrRtxMessageQueueCreated (osMessageQueueId_t mq_id, const char *name);
  1570. #else
  1571. #define EvrRtxMessageQueueCreated(mq_id, name)
  1572. #endif
  1573. /**
  1574. \brief Event on message queue name retrieve(API)
  1575. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1576. \param[in] name pointer to message queue object name.
  1577. */
  1578. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_GET_NAME_DISABLE))
  1579. extern void EvrRtxMessageQueueGetName (osMessageQueueId_t mq_id, const char *name);
  1580. #else
  1581. #define EvrRtxMessageQueueGetName(mq_id, name)
  1582. #endif
  1583. /**
  1584. \brief Event on message put (API)
  1585. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1586. \param[in] msg_ptr pointer to buffer with message to put into a queue.
  1587. \param[in] msg_prio message priority.
  1588. \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
  1589. */
  1590. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_PUT_DISABLE))
  1591. extern void EvrRtxMessageQueuePut (osMessageQueueId_t mq_id, const void *msg_ptr, uint8_t msg_prio, uint32_t timeout);
  1592. #else
  1593. #define EvrRtxMessageQueuePut(mq_id, msg_ptr, msg_prio, timeout)
  1594. #endif
  1595. /**
  1596. \brief Event on pending message put (Op)
  1597. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1598. \param[in] msg_ptr pointer to buffer with message to put into a queue.
  1599. \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
  1600. */
  1601. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_PUT_PENDING_DISABLE))
  1602. extern void EvrRtxMessageQueuePutPending (osMessageQueueId_t mq_id, const void *msg_ptr, uint32_t timeout);
  1603. #else
  1604. #define EvrRtxMessageQueuePutPending(mq_id, msg_ptr, timeout)
  1605. #endif
  1606. /**
  1607. \brief Event on message put timeout (Op)
  1608. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1609. */
  1610. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_PUT_TIMEOUT_DISABLE))
  1611. extern void EvrRtxMessageQueuePutTimeout (osMessageQueueId_t mq_id);
  1612. #else
  1613. #define EvrRtxMessageQueuePutTimeout(mq_id)
  1614. #endif
  1615. /**
  1616. \brief Event on pending message insert (Op)
  1617. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1618. \param[in] msg_ptr pointer to buffer with message to put into a queue.
  1619. */
  1620. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_INSERT_PENDING_DISABLE))
  1621. extern void EvrRtxMessageQueueInsertPending (osMessageQueueId_t mq_id, const void *msg_ptr);
  1622. #else
  1623. #define EvrRtxMessageQueueInsertPending(mq_id, msg_ptr)
  1624. #endif
  1625. /**
  1626. \brief Event on successful message insert (Op)
  1627. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1628. \param[in] msg_ptr pointer to buffer with message to put into a queue.
  1629. */
  1630. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_INSERTED_DISABLE))
  1631. extern void EvrRtxMessageQueueInserted (osMessageQueueId_t mq_id, const void *msg_ptr);
  1632. #else
  1633. #define EvrRtxMessageQueueInserted(mq_id, msg_ptr)
  1634. #endif
  1635. /**
  1636. \brief Event on unsuccessful message insert (Op)
  1637. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1638. \param[in] msg_ptr pointer to buffer with message to put into a queue.
  1639. */
  1640. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_NOT_INSERTED_DISABLE))
  1641. extern void EvrRtxMessageQueueNotInserted (osMessageQueueId_t mq_id, const void *msg_ptr);
  1642. #else
  1643. #define EvrRtxMessageQueueNotInserted(mq_id, msg_ptr)
  1644. #endif
  1645. /**
  1646. \brief Event on message get (API)
  1647. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1648. \param[in] msg_ptr pointer to buffer for message to get from a queue.
  1649. \param[in] msg_prio message priority.
  1650. \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
  1651. */
  1652. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_GET_DISABLE))
  1653. extern void EvrRtxMessageQueueGet (osMessageQueueId_t mq_id, void *msg_ptr, uint8_t *msg_prio, uint32_t timeout);
  1654. #else
  1655. #define EvrRtxMessageQueueGet(mq_id, msg_ptr, msg_prio, timeout)
  1656. #endif
  1657. /**
  1658. \brief Event on pending message get (Op)
  1659. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1660. \param[in] msg_ptr pointer to buffer for message to get from a queue.
  1661. \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
  1662. */
  1663. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_GET_PENDING_DISABLE))
  1664. extern void EvrRtxMessageQueueGetPending (osMessageQueueId_t mq_id, void *msg_ptr, uint32_t timeout);
  1665. #else
  1666. #define EvrRtxMessageQueueGetPending(mq_id, msg_ptr, timeout)
  1667. #endif
  1668. /**
  1669. \brief Event on message get timeout (Op)
  1670. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1671. */
  1672. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_GET_TIMEOUT_DISABLE))
  1673. extern void EvrRtxMessageQueueGetTimeout (osMessageQueueId_t mq_id);
  1674. #else
  1675. #define EvrRtxMessageQueueGetTimeout(mq_id)
  1676. #endif
  1677. /**
  1678. \brief Event on successful message get (Op)
  1679. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1680. \param[in] msg_ptr pointer to buffer for message to get from a queue.
  1681. */
  1682. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_RETRIEVED_DISABLE))
  1683. extern void EvrRtxMessageQueueRetrieved (osMessageQueueId_t mq_id, void *msg_ptr);
  1684. #else
  1685. #define EvrRtxMessageQueueRetrieved(mq_id, msg_ptr)
  1686. #endif
  1687. /**
  1688. \brief Event on unsuccessful message get (Op)
  1689. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1690. \param[in] msg_ptr pointer to buffer for message to get from a queue.
  1691. */
  1692. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_NOT_RETRIEVED_DISABLE))
  1693. extern void EvrRtxMessageQueueNotRetrieved (osMessageQueueId_t mq_id, void *msg_ptr);
  1694. #else
  1695. #define EvrRtxMessageQueueNotRetrieved(mq_id, msg_ptr)
  1696. #endif
  1697. /**
  1698. \brief Event on message queue capacity retrieve (API)
  1699. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1700. \param[in] capacity maximum number of messages.
  1701. */
  1702. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_GET_CAPACITY_DISABLE))
  1703. extern void EvrRtxMessageQueueGetCapacity (osMessageQueueId_t mq_id, uint32_t capacity);
  1704. #else
  1705. #define EvrRtxMessageQueueGetCapacity(mq_id, capacity)
  1706. #endif
  1707. /**
  1708. \brief Event on message queue message size retrieve (API)
  1709. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1710. \param[in] msg_size maximum message size in bytes.
  1711. */
  1712. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_GET_MSG_SIZE_DISABLE))
  1713. extern void EvrRtxMessageQueueGetMsgSize (osMessageQueueId_t mq_id, uint32_t msg_size);
  1714. #else
  1715. #define EvrRtxMessageQueueGetMsgSize(mq_id, msg_size)
  1716. #endif
  1717. /**
  1718. \brief Event on message queue message count retrieve (API)
  1719. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1720. \param[in] count number of queued messages.
  1721. */
  1722. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_GET_COUNT_DISABLE))
  1723. extern void EvrRtxMessageQueueGetCount (osMessageQueueId_t mq_id, uint32_t count);
  1724. #else
  1725. #define EvrRtxMessageQueueGetCount(mq_id, count)
  1726. #endif
  1727. /**
  1728. \brief Event on message queue message slots retrieve (API)
  1729. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1730. \param[in] space number of available slots for messages.
  1731. */
  1732. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_GET_SPACE_DISABLE))
  1733. extern void EvrRtxMessageQueueGetSpace (osMessageQueueId_t mq_id, uint32_t space);
  1734. #else
  1735. #define EvrRtxMessageQueueGetSpace(mq_id, space)
  1736. #endif
  1737. /**
  1738. \brief Event on message queue reset (API)
  1739. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1740. */
  1741. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_RESET_DISABLE))
  1742. extern void EvrRtxMessageQueueReset (osMessageQueueId_t mq_id);
  1743. #else
  1744. #define EvrRtxMessageQueueReset(mq_id)
  1745. #endif
  1746. /**
  1747. \brief Event on successful message queue reset (Op)
  1748. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1749. */
  1750. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_RESET_DONE_DISABLE))
  1751. extern void EvrRtxMessageQueueResetDone (osMessageQueueId_t mq_id);
  1752. #else
  1753. #define EvrRtxMessageQueueResetDone(mq_id)
  1754. #endif
  1755. /**
  1756. \brief Event on message queue delete (API)
  1757. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1758. */
  1759. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_DELETE_DISABLE))
  1760. extern void EvrRtxMessageQueueDelete (osMessageQueueId_t mq_id);
  1761. #else
  1762. #define EvrRtxMessageQueueDelete(mq_id)
  1763. #endif
  1764. /**
  1765. \brief Event on successful message queue delete (Op)
  1766. \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew.
  1767. */
  1768. #if (!defined(EVR_RTX_DISABLE) && (OS_EVR_MSGQUEUE != 0) && !defined(EVR_RTX_MESSAGE_QUEUE_DESTROYED_DISABLE))
  1769. extern void EvrRtxMessageQueueDestroyed (osMessageQueueId_t mq_id);
  1770. #else
  1771. #define EvrRtxMessageQueueDestroyed(mq_id)
  1772. #endif
  1773. #endif // RTX_EVR_H_