FreeRTOS.h 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546
  1. /*
  2. FreeRTOS V7.3.0 - Copyright (C) 2012 Real Time Engineers Ltd.
  3. FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
  4. http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
  5. ***************************************************************************
  6. * *
  7. * FreeRTOS tutorial books are available in pdf and paperback. *
  8. * Complete, revised, and edited pdf reference manuals are also *
  9. * available. *
  10. * *
  11. * Purchasing FreeRTOS documentation will not only help you, by *
  12. * ensuring you get running as quickly as possible and with an *
  13. * in-depth knowledge of how to use FreeRTOS, it will also help *
  14. * the FreeRTOS project to continue with its mission of providing *
  15. * professional grade, cross platform, de facto standard solutions *
  16. * for microcontrollers - completely free of charge! *
  17. * *
  18. * >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
  19. * *
  20. * Thank you for using FreeRTOS, and thank you for your support! *
  21. * *
  22. ***************************************************************************
  23. This file is part of the FreeRTOS distribution.
  24. FreeRTOS is free software; you can redistribute it and/or modify it under
  25. the terms of the GNU General Public License (version 2) as published by the
  26. Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
  27. >>>NOTE<<< The modification to the GPL is included to allow you to
  28. distribute a combined work that includes FreeRTOS without being obliged to
  29. provide the source code for proprietary components outside of the FreeRTOS
  30. kernel. FreeRTOS is distributed in the hope that it will be useful, but
  31. WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  32. or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  33. more details. You should have received a copy of the GNU General Public
  34. License and the FreeRTOS license exception along with FreeRTOS; if not it
  35. can be viewed here: http://www.freertos.org/a00114.html and also obtained
  36. by writing to Richard Barry, contact details for whom are available on the
  37. FreeRTOS WEB site.
  38. 1 tab == 4 spaces!
  39. ***************************************************************************
  40. * *
  41. * Having a problem? Start by reading the FAQ "My application does *
  42. * not run, what could be wrong?" *
  43. * *
  44. * http://www.FreeRTOS.org/FAQHelp.html *
  45. * *
  46. ***************************************************************************
  47. http://www.FreeRTOS.org - Documentation, training, latest versions, license
  48. and contact details.
  49. http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
  50. including FreeRTOS+Trace - an indispensable productivity tool.
  51. Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
  52. the code with commercial support, indemnification, and middleware, under
  53. the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
  54. provide a safety engineered and independently SIL3 certified version under
  55. the SafeRTOS brand: http://www.SafeRTOS.com.
  56. */
  57. #ifndef INC_FREERTOS_H
  58. #define INC_FREERTOS_H
  59. /*
  60. * Include the generic headers required for the FreeRTOS port being used.
  61. */
  62. #include <stddef.h>
  63. /* Basic FreeRTOS definitions. */
  64. #include "projdefs.h"
  65. /* Application specific configuration options. */
  66. #include "FreeRTOSConfig.h"
  67. /* configUSE_PORT_OPTIMISED_TASK_SELECTION must be defined before portable.h
  68. is included as it is used by the port layer. */
  69. #ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION
  70. #define configUSE_PORT_OPTIMISED_TASK_SELECTION 0
  71. #endif
  72. /* Definitions specific to the port being used. */
  73. #include "portable.h"
  74. /* Defines the prototype to which the application task hook function must
  75. conform. */
  76. typedef portBASE_TYPE (*pdTASK_HOOK_CODE)( void * );
  77. /*
  78. * Check all the required application specific macros have been defined.
  79. * These macros are application specific and (as downloaded) are defined
  80. * within FreeRTOSConfig.h.
  81. */
  82. #ifndef configUSE_PREEMPTION
  83. #error Missing definition: configUSE_PREEMPTION should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
  84. #endif
  85. #ifndef configUSE_IDLE_HOOK
  86. #error Missing definition: configUSE_IDLE_HOOK should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
  87. #endif
  88. #ifndef configUSE_TICK_HOOK
  89. #error Missing definition: configUSE_TICK_HOOK should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
  90. #endif
  91. #ifndef configUSE_CO_ROUTINES
  92. #error Missing definition: configUSE_CO_ROUTINES should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
  93. #endif
  94. #ifndef INCLUDE_vTaskPrioritySet
  95. #error Missing definition: INCLUDE_vTaskPrioritySet should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
  96. #endif
  97. #ifndef INCLUDE_uxTaskPriorityGet
  98. #error Missing definition: INCLUDE_uxTaskPriorityGet should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
  99. #endif
  100. #ifndef INCLUDE_vTaskDelete
  101. #error Missing definition: INCLUDE_vTaskDelete should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
  102. #endif
  103. #ifndef INCLUDE_vTaskSuspend
  104. #error Missing definition: INCLUDE_vTaskSuspend should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
  105. #endif
  106. #ifndef INCLUDE_vTaskDelayUntil
  107. #error Missing definition: INCLUDE_vTaskDelayUntil should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
  108. #endif
  109. #ifndef INCLUDE_vTaskDelay
  110. #error Missing definition: INCLUDE_vTaskDelay should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
  111. #endif
  112. #ifndef configUSE_16_BIT_TICKS
  113. #error Missing definition: configUSE_16_BIT_TICKS should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
  114. #endif
  115. #ifndef INCLUDE_xTaskGetIdleTaskHandle
  116. #define INCLUDE_xTaskGetIdleTaskHandle 0
  117. #endif
  118. #ifndef INCLUDE_xTimerGetTimerDaemonTaskHandle
  119. #define INCLUDE_xTimerGetTimerDaemonTaskHandle 0
  120. #endif
  121. #ifndef INCLUDE_xQueueGetMutexHolder
  122. #define INCLUDE_xQueueGetMutexHolder 0
  123. #endif
  124. #ifndef INCLUDE_pcTaskGetTaskName
  125. #define INCLUDE_pcTaskGetTaskName 0
  126. #endif
  127. #ifndef configUSE_APPLICATION_TASK_TAG
  128. #define configUSE_APPLICATION_TASK_TAG 0
  129. #endif
  130. #ifndef INCLUDE_uxTaskGetStackHighWaterMark
  131. #define INCLUDE_uxTaskGetStackHighWaterMark 0
  132. #endif
  133. #ifndef INCLUDE_eTaskStateGet
  134. #define INCLUDE_eTaskStateGet 0
  135. #endif
  136. #ifndef configUSE_RECURSIVE_MUTEXES
  137. #define configUSE_RECURSIVE_MUTEXES 0
  138. #endif
  139. #ifndef configUSE_MUTEXES
  140. #define configUSE_MUTEXES 0
  141. #endif
  142. #ifndef configUSE_TIMERS
  143. #define configUSE_TIMERS 0
  144. #endif
  145. #ifndef configUSE_COUNTING_SEMAPHORES
  146. #define configUSE_COUNTING_SEMAPHORES 0
  147. #endif
  148. #ifndef configUSE_ALTERNATIVE_API
  149. #define configUSE_ALTERNATIVE_API 0
  150. #endif
  151. #ifndef portCRITICAL_NESTING_IN_TCB
  152. #define portCRITICAL_NESTING_IN_TCB 0
  153. #endif
  154. #ifndef configMAX_TASK_NAME_LEN
  155. #define configMAX_TASK_NAME_LEN 16
  156. #endif
  157. #ifndef configIDLE_SHOULD_YIELD
  158. #define configIDLE_SHOULD_YIELD 1
  159. #endif
  160. #if configMAX_TASK_NAME_LEN < 1
  161. #error configMAX_TASK_NAME_LEN must be set to a minimum of 1 in FreeRTOSConfig.h
  162. #endif
  163. #ifndef INCLUDE_xTaskResumeFromISR
  164. #define INCLUDE_xTaskResumeFromISR 1
  165. #endif
  166. #ifndef configASSERT
  167. #define configASSERT( x )
  168. #endif
  169. #ifndef portALIGNMENT_ASSERT_pxCurrentTCB
  170. #define portALIGNMENT_ASSERT_pxCurrentTCB configASSERT
  171. #endif
  172. /* The timers module relies on xTaskGetSchedulerState(). */
  173. #if configUSE_TIMERS == 1
  174. #ifndef configTIMER_TASK_PRIORITY
  175. #error If configUSE_TIMERS is set to 1 then configTIMER_TASK_PRIORITY must also be defined.
  176. #endif /* configTIMER_TASK_PRIORITY */
  177. #ifndef configTIMER_QUEUE_LENGTH
  178. #error If configUSE_TIMERS is set to 1 then configTIMER_QUEUE_LENGTH must also be defined.
  179. #endif /* configTIMER_QUEUE_LENGTH */
  180. #ifndef configTIMER_TASK_STACK_DEPTH
  181. #error If configUSE_TIMERS is set to 1 then configTIMER_TASK_STACK_DEPTH must also be defined.
  182. #endif /* configTIMER_TASK_STACK_DEPTH */
  183. #endif /* configUSE_TIMERS */
  184. #ifndef INCLUDE_xTaskGetSchedulerState
  185. #define INCLUDE_xTaskGetSchedulerState 0
  186. #endif
  187. #ifndef INCLUDE_xTaskGetCurrentTaskHandle
  188. #define INCLUDE_xTaskGetCurrentTaskHandle 0
  189. #endif
  190. #ifndef portSET_INTERRUPT_MASK_FROM_ISR
  191. #define portSET_INTERRUPT_MASK_FROM_ISR() 0
  192. #endif
  193. #ifndef portCLEAR_INTERRUPT_MASK_FROM_ISR
  194. #define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedStatusValue ) ( void ) uxSavedStatusValue
  195. #endif
  196. #ifndef portCLEAN_UP_TCB
  197. #define portCLEAN_UP_TCB( pxTCB ) ( void ) pxTCB
  198. #endif
  199. #ifndef portSETUP_TCB
  200. #define portSETUP_TCB( pxTCB ) ( void ) pxTCB
  201. #endif
  202. #ifndef configQUEUE_REGISTRY_SIZE
  203. #define configQUEUE_REGISTRY_SIZE 0U
  204. #endif
  205. #if ( configQUEUE_REGISTRY_SIZE < 1 )
  206. #define vQueueAddToRegistry( xQueue, pcName )
  207. #define vQueueUnregisterQueue( xQueue )
  208. #endif
  209. #ifndef portPOINTER_SIZE_TYPE
  210. #define portPOINTER_SIZE_TYPE unsigned long
  211. #endif
  212. /* Remove any unused trace macros. */
  213. #ifndef traceSTART
  214. /* Used to perform any necessary initialisation - for example, open a file
  215. into which trace is to be written. */
  216. #define traceSTART()
  217. #endif
  218. #ifndef traceEND
  219. /* Use to close a trace, for example close a file into which trace has been
  220. written. */
  221. #define traceEND()
  222. #endif
  223. #ifndef traceTASK_SWITCHED_IN
  224. /* Called after a task has been selected to run. pxCurrentTCB holds a pointer
  225. to the task control block of the selected task. */
  226. #define traceTASK_SWITCHED_IN()
  227. #endif
  228. #ifndef traceTASK_SWITCHED_OUT
  229. /* Called before a task has been selected to run. pxCurrentTCB holds a pointer
  230. to the task control block of the task being switched out. */
  231. #define traceTASK_SWITCHED_OUT()
  232. #endif
  233. #ifndef traceTASK_PRIORITY_INHERIT
  234. /* Called when a task attempts to take a mutex that is already held by a
  235. lower priority task. pxTCBOfMutexHolder is a pointer to the TCB of the task
  236. that holds the mutex. uxInheritedPriority is the priority the mutex holder
  237. will inherit (the priority of the task that is attempting to obtain the
  238. muted. */
  239. #define traceTASK_PRIORITY_INHERIT( pxTCBOfMutexHolder, uxInheritedPriority )
  240. #endif
  241. #ifndef traceTASK_PRIORITY_DISINHERIT
  242. /* Called when a task releases a mutex, the holding of which had resulted in
  243. the task inheriting the priority of a higher priority task.
  244. pxTCBOfMutexHolder is a pointer to the TCB of the task that is releasing the
  245. mutex. uxOriginalPriority is the task's configured (base) priority. */
  246. #define traceTASK_PRIORITY_DISINHERIT( pxTCBOfMutexHolder, uxOriginalPriority )
  247. #endif
  248. #ifndef traceBLOCKING_ON_QUEUE_RECEIVE
  249. /* Task is about to block because it cannot read from a
  250. queue/mutex/semaphore. pxQueue is a pointer to the queue/mutex/semaphore
  251. upon which the read was attempted. pxCurrentTCB points to the TCB of the
  252. task that attempted the read. */
  253. #define traceBLOCKING_ON_QUEUE_RECEIVE( pxQueue )
  254. #endif
  255. #ifndef traceBLOCKING_ON_QUEUE_SEND
  256. /* Task is about to block because it cannot write to a
  257. queue/mutex/semaphore. pxQueue is a pointer to the queue/mutex/semaphore
  258. upon which the write was attempted. pxCurrentTCB points to the TCB of the
  259. task that attempted the write. */
  260. #define traceBLOCKING_ON_QUEUE_SEND( pxQueue )
  261. #endif
  262. #ifndef configCHECK_FOR_STACK_OVERFLOW
  263. #define configCHECK_FOR_STACK_OVERFLOW 0
  264. #endif
  265. /* The following event macros are embedded in the kernel API calls. */
  266. #ifndef traceMOVED_TASK_TO_READY_STATE
  267. #define traceMOVED_TASK_TO_READY_STATE( pxTCB )
  268. #endif
  269. #ifndef traceQUEUE_CREATE
  270. #define traceQUEUE_CREATE( pxNewQueue )
  271. #endif
  272. #ifndef traceQUEUE_CREATE_FAILED
  273. #define traceQUEUE_CREATE_FAILED( ucQueueType )
  274. #endif
  275. #ifndef traceCREATE_MUTEX
  276. #define traceCREATE_MUTEX( pxNewQueue )
  277. #endif
  278. #ifndef traceCREATE_MUTEX_FAILED
  279. #define traceCREATE_MUTEX_FAILED()
  280. #endif
  281. #ifndef traceGIVE_MUTEX_RECURSIVE
  282. #define traceGIVE_MUTEX_RECURSIVE( pxMutex )
  283. #endif
  284. #ifndef traceGIVE_MUTEX_RECURSIVE_FAILED
  285. #define traceGIVE_MUTEX_RECURSIVE_FAILED( pxMutex )
  286. #endif
  287. #ifndef traceTAKE_MUTEX_RECURSIVE
  288. #define traceTAKE_MUTEX_RECURSIVE( pxMutex )
  289. #endif
  290. #ifndef traceTAKE_MUTEX_RECURSIVE_FAILED
  291. #define traceTAKE_MUTEX_RECURSIVE_FAILED( pxMutex )
  292. #endif
  293. #ifndef traceCREATE_COUNTING_SEMAPHORE
  294. #define traceCREATE_COUNTING_SEMAPHORE()
  295. #endif
  296. #ifndef traceCREATE_COUNTING_SEMAPHORE_FAILED
  297. #define traceCREATE_COUNTING_SEMAPHORE_FAILED()
  298. #endif
  299. #ifndef traceQUEUE_SEND
  300. #define traceQUEUE_SEND( pxQueue )
  301. #endif
  302. #ifndef traceQUEUE_SEND_FAILED
  303. #define traceQUEUE_SEND_FAILED( pxQueue )
  304. #endif
  305. #ifndef traceQUEUE_RECEIVE
  306. #define traceQUEUE_RECEIVE( pxQueue )
  307. #endif
  308. #ifndef traceQUEUE_PEEK
  309. #define traceQUEUE_PEEK( pxQueue )
  310. #endif
  311. #ifndef traceQUEUE_RECEIVE_FAILED
  312. #define traceQUEUE_RECEIVE_FAILED( pxQueue )
  313. #endif
  314. #ifndef traceQUEUE_SEND_FROM_ISR
  315. #define traceQUEUE_SEND_FROM_ISR( pxQueue )
  316. #endif
  317. #ifndef traceQUEUE_SEND_FROM_ISR_FAILED
  318. #define traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue )
  319. #endif
  320. #ifndef traceQUEUE_RECEIVE_FROM_ISR
  321. #define traceQUEUE_RECEIVE_FROM_ISR( pxQueue )
  322. #endif
  323. #ifndef traceQUEUE_RECEIVE_FROM_ISR_FAILED
  324. #define traceQUEUE_RECEIVE_FROM_ISR_FAILED( pxQueue )
  325. #endif
  326. #ifndef traceQUEUE_DELETE
  327. #define traceQUEUE_DELETE( pxQueue )
  328. #endif
  329. #ifndef traceTASK_CREATE
  330. #define traceTASK_CREATE( pxNewTCB )
  331. #endif
  332. #ifndef traceTASK_CREATE_FAILED
  333. #define traceTASK_CREATE_FAILED()
  334. #endif
  335. #ifndef traceTASK_DELETE
  336. #define traceTASK_DELETE( pxTaskToDelete )
  337. #endif
  338. #ifndef traceTASK_DELAY_UNTIL
  339. #define traceTASK_DELAY_UNTIL()
  340. #endif
  341. #ifndef traceTASK_DELAY
  342. #define traceTASK_DELAY()
  343. #endif
  344. #ifndef traceTASK_PRIORITY_SET
  345. #define traceTASK_PRIORITY_SET( pxTask, uxNewPriority )
  346. #endif
  347. #ifndef traceTASK_SUSPEND
  348. #define traceTASK_SUSPEND( pxTaskToSuspend )
  349. #endif
  350. #ifndef traceTASK_RESUME
  351. #define traceTASK_RESUME( pxTaskToResume )
  352. #endif
  353. #ifndef traceTASK_RESUME_FROM_ISR
  354. #define traceTASK_RESUME_FROM_ISR( pxTaskToResume )
  355. #endif
  356. #ifndef traceTASK_INCREMENT_TICK
  357. #define traceTASK_INCREMENT_TICK( xTickCount )
  358. #endif
  359. #ifndef traceTIMER_CREATE
  360. #define traceTIMER_CREATE( pxNewTimer )
  361. #endif
  362. #ifndef traceTIMER_CREATE_FAILED
  363. #define traceTIMER_CREATE_FAILED()
  364. #endif
  365. #ifndef traceTIMER_COMMAND_SEND
  366. #define traceTIMER_COMMAND_SEND( xTimer, xMessageID, xMessageValueValue, xReturn )
  367. #endif
  368. #ifndef traceTIMER_EXPIRED
  369. #define traceTIMER_EXPIRED( pxTimer )
  370. #endif
  371. #ifndef traceTIMER_COMMAND_RECEIVED
  372. #define traceTIMER_COMMAND_RECEIVED( pxTimer, xMessageID, xMessageValue )
  373. #endif
  374. #ifndef configGENERATE_RUN_TIME_STATS
  375. #define configGENERATE_RUN_TIME_STATS 0
  376. #endif
  377. #if ( configGENERATE_RUN_TIME_STATS == 1 )
  378. #ifndef portCONFIGURE_TIMER_FOR_RUN_TIME_STATS
  379. #error If configGENERATE_RUN_TIME_STATS is defined then portCONFIGURE_TIMER_FOR_RUN_TIME_STATS must also be defined. portCONFIGURE_TIMER_FOR_RUN_TIME_STATS should call a port layer function to setup a peripheral timer/counter that can then be used as the run time counter time base.
  380. #endif /* portCONFIGURE_TIMER_FOR_RUN_TIME_STATS */
  381. #ifndef portGET_RUN_TIME_COUNTER_VALUE
  382. #ifndef portALT_GET_RUN_TIME_COUNTER_VALUE
  383. #error If configGENERATE_RUN_TIME_STATS is defined then either portGET_RUN_TIME_COUNTER_VALUE or portALT_GET_RUN_TIME_COUNTER_VALUE must also be defined. See the examples provided and the FreeRTOS web site for more information.
  384. #endif /* portALT_GET_RUN_TIME_COUNTER_VALUE */
  385. #endif /* portGET_RUN_TIME_COUNTER_VALUE */
  386. #endif /* configGENERATE_RUN_TIME_STATS */
  387. #ifndef portCONFIGURE_TIMER_FOR_RUN_TIME_STATS
  388. #define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()
  389. #endif
  390. #ifndef configUSE_MALLOC_FAILED_HOOK
  391. #define configUSE_MALLOC_FAILED_HOOK 0
  392. #endif
  393. #ifndef portPRIVILEGE_BIT
  394. #define portPRIVILEGE_BIT ( ( unsigned portBASE_TYPE ) 0x00 )
  395. #endif
  396. #ifndef portYIELD_WITHIN_API
  397. #define portYIELD_WITHIN_API portYIELD
  398. #endif
  399. #ifndef pvPortMallocAligned
  400. #define pvPortMallocAligned( x, puxStackBuffer ) ( ( ( puxStackBuffer ) == NULL ) ? ( pvPortMalloc( ( x ) ) ) : ( puxStackBuffer ) )
  401. #endif
  402. #ifndef vPortFreeAligned
  403. #define vPortFreeAligned( pvBlockToFree ) vPortFree( pvBlockToFree )
  404. #endif
  405. #ifndef portSUPPRESS_TICKS_AND_SLEEP
  406. #define portSUPPRESS_TICKS_AND_SLEEP( xExpectedIdleTime )
  407. #endif
  408. #ifndef configPRE_SLEEP_PROCESSING
  409. #define configPRE_SLEEP_PROCESSING( x )
  410. #endif
  411. #ifndef configPOST_SLEEP_PROCESSING
  412. #define configPOST_SLEEP_PROCESSING( x )
  413. #endif
  414. #endif /* INC_FREERTOS_H */