rtx_evr.h 78 KB

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