uCOS_II.H
上传用户:tzjinxin1
上传日期:2022-08-08
资源大小:272k
文件大小:47k
开发平台:

Visual C++

  1. /*
  2. *********************************************************************************************************
  3. *                                                uC/OS-II
  4. *                                          The Real-Time Kernel
  5. *
  6. *                            (c) Copyright 1992-2001, Jean J. Labrosse, Weston, FL
  7. *                                           All Rights Reserved
  8. *
  9. * File : uCOS_II.H
  10. * By   : Jean J. Labrosse
  11. *********************************************************************************************************
  12. */
  13. /*
  14. *********************************************************************************************************
  15. *                                             MISCELLANEOUS
  16. *********************************************************************************************************
  17. */
  18. #define  OS_VERSION              251                    /* Version of uC/OS-II (Vx.yy mult. by 100)    */
  19. #ifdef   OS_GLOBALS
  20. #define  OS_EXT
  21. #else
  22. #define  OS_EXT  extern
  23. #endif
  24. #ifndef  FALSE
  25. #define  FALSE                     0
  26. #endif
  27. #ifndef  TRUE
  28. #define  TRUE                      1
  29. #endif
  30. #define  OS_PRIO_SELF           0xFF                    /* Indicate SELF priority                      */
  31. #if OS_TASK_STAT_EN > 0
  32. #define  OS_N_SYS_TASKS            2                    /* Number of system tasks                      */
  33. #else
  34. #define  OS_N_SYS_TASKS            1
  35. #endif
  36. #define  OS_STAT_PRIO       (OS_LOWEST_PRIO - 1)        /* Statistic task priority                     */
  37. #define  OS_IDLE_PRIO       (OS_LOWEST_PRIO)            /* IDLE      task priority                     */
  38. #define  OS_EVENT_TBL_SIZE ((OS_LOWEST_PRIO) / 8 + 1)   /* Size of event table                         */
  39. #define  OS_RDY_TBL_SIZE   ((OS_LOWEST_PRIO) / 8 + 1)   /* Size of ready table                         */
  40. #define  OS_TASK_IDLE_ID       65535                    /* I.D. numbers for Idle and Stat tasks        */
  41. #define  OS_TASK_STAT_ID       65534
  42. #define  OS_EVENT_EN       (((OS_Q_EN > 0) && (OS_MAX_QS > 0)) || (OS_MBOX_EN > 0) || (OS_SEM_EN > 0) || (OS_MUTEX_EN > 0))
  43. /*
  44. *********************************************************************************************************
  45. *                              TASK STATUS (Bit definition for OSTCBStat)
  46. *********************************************************************************************************
  47. */
  48. #define  OS_STAT_RDY            0x00        /* Ready to run                                            */
  49. #define  OS_STAT_SEM            0x01        /* Pending on semaphore                                    */
  50. #define  OS_STAT_MBOX           0x02        /* Pending on mailbox                                      */
  51. #define  OS_STAT_Q              0x04        /* Pending on queue                                        */
  52. #define  OS_STAT_SUSPEND        0x08        /* Task is suspended                                       */
  53. #define  OS_STAT_MUTEX          0x10        /* Pending on mutual exclusion semaphore                   */
  54. #define  OS_STAT_FLAG           0x20        /* Pending on event flag group                             */
  55. /*
  56. *********************************************************************************************************
  57. *                                        OS_EVENT types
  58. *********************************************************************************************************
  59. */
  60. #define  OS_EVENT_TYPE_UNUSED      0
  61. #define  OS_EVENT_TYPE_MBOX        1
  62. #define  OS_EVENT_TYPE_Q           2
  63. #define  OS_EVENT_TYPE_SEM         3
  64. #define  OS_EVENT_TYPE_MUTEX       4
  65. #define  OS_EVENT_TYPE_FLAG        5
  66. /*
  67. *********************************************************************************************************
  68. *                                         EVENT FLAGS
  69. *********************************************************************************************************
  70. */
  71. #define  OS_FLAG_WAIT_CLR_ALL      0        /* Wait for ALL    the bits specified to be CLR (i.e. 0)   */ 
  72. #define  OS_FLAG_WAIT_CLR_AND      0
  73. #define  OS_FLAG_WAIT_CLR_ANY      1        /* Wait for ANY of the bits specified to be CLR (i.e. 0)   */
  74. #define  OS_FLAG_WAIT_CLR_OR       1
  75. #define  OS_FLAG_WAIT_SET_ALL      2        /* Wait for ALL    the bits specified to be SET (i.e. 1)   */ 
  76. #define  OS_FLAG_WAIT_SET_AND      2
  77. #define  OS_FLAG_WAIT_SET_ANY      3        /* Wait for ANY of the bits specified to be SET (i.e. 1)   */
  78. #define  OS_FLAG_WAIT_SET_OR       3
  79. #define  OS_FLAG_CONSUME        0x80        /* Consume the flags if condition(s) satisfied             */
  80. #define  OS_FLAG_CLR               0
  81. #define  OS_FLAG_SET               1
  82. /*
  83. *********************************************************************************************************
  84. *       Possible values for 'opt' argument of OSSemDel(), OSMboxDel(), OSQDel() and OSMutexDel()
  85. *********************************************************************************************************
  86. */
  87. #define  OS_DEL_NO_PEND            0
  88. #define  OS_DEL_ALWAYS             1
  89. /*
  90. *********************************************************************************************************
  91. *                                     OS???PostOpt() OPTIONS
  92. *
  93. * These #defines are used to establish the options for OSMboxPostOpt() and OSQPostOpt().
  94. *********************************************************************************************************
  95. */
  96. #define  OS_POST_OPT_NONE       0x00        /* Post to highest priority task waiting                   */
  97. #define  OS_POST_OPT_BROADCAST  0x01        /* Broadcast message to ALL tasks waiting                  */  
  98. #define  OS_POST_OPT_FRONT      0x02        /* Post to highest priority task waiting                   */
  99. /*
  100. *********************************************************************************************************
  101. *                                 TASK OPTIONS (see OSTaskCreateExt()) 
  102. *********************************************************************************************************
  103. */
  104. #define  OS_TASK_OPT_STK_CHK  0x0001        /* Enable stack checking for the task                      */
  105. #define  OS_TASK_OPT_STK_CLR  0x0002        /* Clear the stack when the task is create                 */
  106. #define  OS_TASK_OPT_SAVE_FP  0x0004        /* Save the contents of any floating-point registers       */
  107. /*
  108. *********************************************************************************************************
  109. *                                             ERROR CODES
  110. *********************************************************************************************************
  111. */
  112. #define OS_NO_ERR                 0
  113. #define OS_ERR_EVENT_TYPE         1
  114. #define OS_ERR_PEND_ISR           2
  115. #define OS_ERR_POST_NULL_PTR      3
  116. #define OS_ERR_PEVENT_NULL        4
  117. #define OS_ERR_POST_ISR           5
  118. #define OS_ERR_QUERY_ISR          6
  119. #define OS_ERR_INVALID_OPT        7
  120. #define OS_ERR_TASK_WAITING       8
  121. #define OS_TIMEOUT               10
  122. #define OS_TASK_NOT_EXIST        11
  123. #define OS_MBOX_FULL             20
  124. #define OS_Q_FULL                30
  125. #define OS_PRIO_EXIST            40
  126. #define OS_PRIO_ERR              41
  127. #define OS_PRIO_INVALID          42
  128. #define OS_SEM_OVF               50
  129. #define OS_TASK_DEL_ERR          60
  130. #define OS_TASK_DEL_IDLE         61
  131. #define OS_TASK_DEL_REQ          62
  132. #define OS_TASK_DEL_ISR          63
  133. #define OS_NO_MORE_TCB           70
  134. #define OS_TIME_NOT_DLY          80
  135. #define OS_TIME_INVALID_MINUTES  81
  136. #define OS_TIME_INVALID_SECONDS  82
  137. #define OS_TIME_INVALID_MILLI    83
  138. #define OS_TIME_ZERO_DLY         84
  139. #define OS_TASK_SUSPEND_PRIO     90
  140. #define OS_TASK_SUSPEND_IDLE     91
  141. #define OS_TASK_RESUME_PRIO     100
  142. #define OS_TASK_NOT_SUSPENDED   101
  143. #define OS_MEM_INVALID_PART     110
  144. #define OS_MEM_INVALID_BLKS     111
  145. #define OS_MEM_INVALID_SIZE     112
  146. #define OS_MEM_NO_FREE_BLKS     113
  147. #define OS_MEM_FULL             114
  148. #define OS_MEM_INVALID_PBLK     115
  149. #define OS_MEM_INVALID_PMEM     116
  150. #define OS_MEM_INVALID_PDATA    117
  151. #define OS_MEM_INVALID_ADDR     118
  152. #define OS_ERR_NOT_MUTEX_OWNER  120
  153. #define OS_TASK_OPT_ERR         130
  154. #define OS_ERR_DEL_ISR          140
  155. #define OS_ERR_CREATE_ISR       141
  156. #define OS_FLAG_INVALID_PGRP    150
  157. #define OS_FLAG_ERR_WAIT_TYPE   151
  158. #define OS_FLAG_ERR_NOT_RDY     152
  159. #define OS_FLAG_INVALID_OPT     153
  160. #define OS_FLAG_GRP_DEPLETED    154
  161. /*
  162. *********************************************************************************************************
  163. *                                          EVENT CONTROL BLOCK
  164. *********************************************************************************************************
  165. */
  166. #if (OS_EVENT_EN > 0) && (OS_MAX_EVENTS > 0)
  167. typedef struct {
  168.     INT8U   OSEventType;                   /* Type of event control block (see OS_EVENT_TYPE_???)      */
  169.     INT8U   OSEventGrp;                    /* Group corresponding to tasks waiting for event to occur  */
  170.     INT16U  OSEventCnt;                    /* Semaphore Count (not used if other EVENT type)           */
  171.     void   *OSEventPtr;                    /* Pointer to message or queue structure                    */
  172.     INT8U   OSEventTbl[OS_EVENT_TBL_SIZE]; /* List of tasks waiting for event to occur                 */
  173. } OS_EVENT;
  174. #endif
  175. /*
  176. *********************************************************************************************************
  177. *                                       EVENT FLAGS CONTROL BLOCK
  178. *********************************************************************************************************
  179. */
  180. #if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
  181. typedef struct {                            /* Event Flag Group                                        */
  182.     INT8U         OSFlagType;               /* Should be set to OS_EVENT_TYPE_FLAG                     */
  183.     void         *OSFlagWaitList;           /* Pointer to first NODE of task waiting on event flag     */
  184.     OS_FLAGS      OSFlagFlags;              /* 8, 16 or 32 bit flags                                   */
  185. } OS_FLAG_GRP;    
  186.     
  187.     
  188. typedef struct {                            /* Event Flag Wait List Node                               */
  189.     void         *OSFlagNodeNext;           /* Pointer to next     NODE in wait list                   */
  190.     void         *OSFlagNodePrev;           /* Pointer to previous NODE in wait list                   */
  191.     void         *OSFlagNodeTCB;            /* Pointer to TCB of waiting task                          */  
  192.     void         *OSFlagNodeFlagGrp;        /* Pointer to Event Flag Group                             */  
  193.     OS_FLAGS      OSFlagNodeFlags;          /* Event flag to wait on                                   */  
  194.     INT8U         OSFlagNodeWaitType;       /* Type of wait:                                           */
  195.                                             /*      OS_FLAG_WAIT_AND                                   */
  196.                                             /*      OS_FLAG_WAIT_ALL                                   */
  197.                                             /*      OS_FLAG_WAIT_OR                                    */
  198.                                             /*      OS_FLAG_WAIT_ANY                                   */
  199. } OS_FLAG_NODE;
  200. #endif
  201. /*
  202. *********************************************************************************************************
  203. *                                          MESSAGE MAILBOX DATA
  204. *********************************************************************************************************
  205. */
  206. #if OS_MBOX_EN > 0
  207. typedef struct {
  208.     void   *OSMsg;                         /* Pointer to message in mailbox                            */
  209.     INT8U   OSEventTbl[OS_EVENT_TBL_SIZE]; /* List of tasks waiting for event to occur                 */
  210.     INT8U   OSEventGrp;                    /* Group corresponding to tasks waiting for event to occur  */
  211. } OS_MBOX_DATA;
  212. #endif
  213. /*
  214. *********************************************************************************************************
  215. *                                     MEMORY PARTITION DATA STRUCTURES
  216. *********************************************************************************************************
  217. */
  218. #if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0)
  219. typedef struct {                       /* MEMORY CONTROL BLOCK                                         */
  220.     void   *OSMemAddr;                 /* Pointer to beginning of memory partition                     */
  221.     void   *OSMemFreeList;             /* Pointer to list of free memory blocks                        */
  222.     INT32U  OSMemBlkSize;              /* Size (in bytes) of each block of memory                      */
  223.     INT32U  OSMemNBlks;                /* Total number of blocks in this partition                     */
  224.     INT32U  OSMemNFree;                /* Number of memory blocks remaining in this partition          */
  225. } OS_MEM;
  226. typedef struct {
  227.     void   *OSAddr;                    /* Pointer to the beginning address of the memory partition     */
  228.     void   *OSFreeList;                /* Pointer to the beginning of the free list of memory blocks   */
  229.     INT32U  OSBlkSize;                 /* Size (in bytes) of each memory block                         */
  230.     INT32U  OSNBlks;                   /* Total number of blocks in the partition                      */
  231.     INT32U  OSNFree;                   /* Number of memory blocks free                                 */
  232.     INT32U  OSNUsed;                   /* Number of memory blocks used                                 */
  233. } OS_MEM_DATA;
  234. #endif
  235. /*
  236. *********************************************************************************************************
  237. *                                    MUTUAL EXCLUSION SEMAPHORE DATA
  238. *********************************************************************************************************
  239. */
  240. #if OS_MUTEX_EN > 0
  241. typedef struct {
  242.     INT8U   OSEventTbl[OS_EVENT_TBL_SIZE];  /* List of tasks waiting for event to occur                */
  243.     INT8U   OSEventGrp;                     /* Group corresponding to tasks waiting for event to occur */
  244.     INT8U   OSValue;                        /* Mutex value (0 = used, 1 = available)                   */
  245.     INT8U   OSOwnerPrio;                    /* Mutex owner's task priority or 0xFF if no owner         */
  246.     INT8U   OSMutexPIP;                     /* Priority Inheritance Priority or 0xFF if no owner       */
  247. } OS_MUTEX_DATA;
  248. #endif
  249. /*
  250. *********************************************************************************************************
  251. *                                          MESSAGE QUEUE DATA
  252. *********************************************************************************************************
  253. */
  254. #if OS_Q_EN > 0
  255. typedef struct os_q {                   /* QUEUE CONTROL BLOCK                                         */
  256.     struct os_q   *OSQPtr;              /* Link to next queue control block in list of free blocks     */
  257.     void         **OSQStart;            /* Pointer to start of queue data                              */
  258.     void         **OSQEnd;              /* Pointer to end   of queue data                              */
  259.     void         **OSQIn;               /* Pointer to where next message will be inserted  in   the Q  */
  260.     void         **OSQOut;              /* Pointer to where next message will be extracted from the Q  */
  261.     INT16U         OSQSize;             /* Size of queue (maximum number of entries)                   */
  262.     INT16U         OSQEntries;          /* Current number of entries in the queue                      */
  263. } OS_Q;
  264. typedef struct {
  265.     void          *OSMsg;               /* Pointer to next message to be extracted from queue          */
  266.     INT16U         OSNMsgs;             /* Number of messages in message queue                         */
  267.     INT16U         OSQSize;             /* Size of message queue                                       */
  268.     INT8U          OSEventTbl[OS_EVENT_TBL_SIZE];  /* List of tasks waiting for event to occur         */
  269.     INT8U          OSEventGrp;          /* Group corresponding to tasks waiting for event to occur     */
  270. } OS_Q_DATA;
  271. #endif
  272. /*
  273. *********************************************************************************************************
  274. *                                           SEMAPHORE DATA
  275. *********************************************************************************************************
  276. */
  277. #if OS_SEM_EN > 0
  278. typedef struct {
  279.     INT16U  OSCnt;                          /* Semaphore count                                         */
  280.     INT8U   OSEventTbl[OS_EVENT_TBL_SIZE];  /* List of tasks waiting for event to occur                */
  281.     INT8U   OSEventGrp;                     /* Group corresponding to tasks waiting for event to occur */
  282. } OS_SEM_DATA;
  283. #endif
  284. /*
  285. *********************************************************************************************************
  286. *                                            TASK STACK DATA
  287. *********************************************************************************************************
  288. */
  289. #if OS_TASK_CREATE_EXT_EN > 0
  290. typedef struct {
  291.     INT32U  OSFree;                    /* Number of free bytes on the stack                            */
  292.     INT32U  OSUsed;                    /* Number of bytes used on the stack                            */
  293. } OS_STK_DATA;
  294. #endif
  295. /*
  296. *********************************************************************************************************
  297. *                                          TASK CONTROL BLOCK
  298. *********************************************************************************************************
  299. */
  300. typedef struct os_tcb {
  301.     OS_STK        *OSTCBStkPtr;        /* Pointer to current top of stack                              */
  302. #if OS_TASK_CREATE_EXT_EN > 0
  303.     void          *OSTCBExtPtr;        /* Pointer to user definable data for TCB extension             */
  304.     OS_STK        *OSTCBStkBottom;     /* Pointer to bottom of stack                                   */
  305.     INT32U         OSTCBStkSize;       /* Size of task stack (in number of stack elements)             */
  306.     INT16U         OSTCBOpt;           /* Task options as passed by OSTaskCreateExt()                  */
  307.     INT16U         OSTCBId;            /* Task ID (0..65535)                                           */
  308. #endif
  309.     struct os_tcb *OSTCBNext;          /* Pointer to next     TCB in the TCB list                      */
  310.     struct os_tcb *OSTCBPrev;          /* Pointer to previous TCB in the TCB list                      */
  311. #if ((OS_Q_EN > 0) && (OS_MAX_QS > 0)) || (OS_MBOX_EN > 0) || (OS_SEM_EN > 0) || (OS_MUTEX_EN > 0)
  312.     OS_EVENT      *OSTCBEventPtr;      /* Pointer to event control block                               */
  313. #endif
  314. #if ((OS_Q_EN > 0) && (OS_MAX_QS > 0)) || (OS_MBOX_EN > 0)
  315.     void          *OSTCBMsg;           /* Message received from OSMboxPost() or OSQPost()              */
  316. #endif
  317. #if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
  318. #if OS_TASK_DEL_EN > 0
  319.     OS_FLAG_NODE  *OSTCBFlagNode;      /* Pointer to event flag node                                   */
  320. #endif    
  321.     OS_FLAGS       OSTCBFlagsRdy;      /* Event flags that made task ready to run                      */
  322. #endif
  323.     INT16U         OSTCBDly;           /* Nbr ticks to delay task or, timeout waiting for event        */
  324.     INT8U          OSTCBStat;          /* Task status                                                  */
  325.     INT8U          OSTCBPrio;          /* Task priority (0 == highest, 63 == lowest)                   */
  326.     INT8U          OSTCBX;             /* Bit position in group  corresponding to task priority (0..7) */
  327.     INT8U          OSTCBY;             /* Index into ready table corresponding to task priority        */
  328.     INT8U          OSTCBBitX;          /* Bit mask to access bit position in ready table               */
  329.     INT8U          OSTCBBitY;          /* Bit mask to access bit position in ready group               */
  330. #if OS_TASK_DEL_EN > 0
  331.     BOOLEAN        OSTCBDelReq;        /* Indicates whether a task needs to delete itself              */
  332. #endif
  333. } OS_TCB;
  334. /*
  335. *********************************************************************************************************
  336. *                                            GLOBAL VARIABLES
  337. *********************************************************************************************************
  338. */
  339. OS_EXT idata INT32U       OSCtxSwCtr;               /* Counter of number of context switches           */
  340. #if (OS_EVENT_EN > 0) && (OS_MAX_EVENTS > 0)
  341. OS_EXT  OS_EVENT         *OSEventFreeList;          /* Pointer to list of free EVENT control blocks    */
  342. OS_EXT  OS_EVENT          OSEventTbl[OS_MAX_EVENTS];/* Table of EVENT control blocks                   */
  343. #endif
  344. #if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
  345. OS_EXT  OS_FLAG_GRP       OSFlagTbl[OS_MAX_FLAGS];  /* Table containing event flag groups              */
  346. OS_EXT  OS_FLAG_GRP      *OSFlagFreeList;           /* Pointer to free list of event flag groups       */
  347. #endif
  348. #if OS_TASK_STAT_EN > 0
  349. OS_EXT  INT8S             OSCPUUsage;               /* Percentage of CPU used                          */
  350. OS_EXT  INT32U            OSIdleCtrMax;             /* Max. value that idle ctr can take in 1 sec.     */
  351. OS_EXT  INT32U            OSIdleCtrRun;             /* Val. reached by idle ctr at run time in 1 sec.  */
  352. OS_EXT  BOOLEAN           OSStatRdy;                /* Flag indicating that the statistic task is rdy  */
  353. //OS_EXT  OS_STK            OSTaskStatStk[OS_TASK_STAT_STK_SIZE];      /* Statistics task stack          */
  354. #endif
  355. OS_EXT idata INT8U        OSIntNesting;             /* Interrupt nesting level                         */
  356. OS_EXT idata INT8U        OSIntExitY;
  357. OS_EXT idata INT8U        OSLockNesting;            /* Multitasking lock nesting level                 */
  358. OS_EXT idata INT8U        OSPrioCur;                /* Priority of current task                        */
  359. OS_EXT idata INT8U        OSPrioHighRdy;            /* Priority of highest priority task               */
  360. OS_EXT idata INT8U        OSRdyGrp;                        /* Ready list group                         */
  361. OS_EXT  INT8U             OSRdyTbl[OS_RDY_TBL_SIZE];       /* Table of tasks which are ready to run    */
  362. OS_EXT idata BOOLEAN      OSRunning;                       /* Flag indicating that kernel is running   */
  363. OS_EXT idata INT8U        OSTaskCtr;                       /* Number of tasks created                  */
  364. OS_EXT idata INT32U       OSIdleCtr;                                 /* Idle counter                   */
  365. OS_EXT  OS_STK            OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE];      /* Idle task stack                */
  366. /*
  367. 原来的变量定义是:
  368. OS_EXT  OS_TCB *OSTCBCur;                        // Pointer to currently running TCB         
  369. OS_EXT  OS_TCB *OSTCBHighRdy;                    // Pointer to highest priority TCB R-to-R   
  370. 因为这2个变量调用频繁,放在idata中比xdata中访问快
  371. */
  372. OS_EXT  idata OS_TCB     *OSTCBCur;                     /* Pointer to currently running TCB         */
  373. OS_EXT  OS_TCB           *OSTCBFreeList;                   /* Pointer to list of free TCBs             */
  374. OS_EXT  idata OS_TCB     *OSTCBHighRdy;                 /* Pointer to highest priority TCB R-to-R   */
  375. OS_EXT  OS_TCB           *OSTCBList;                       /* Pointer to doubly linked list of TCBs    */
  376. OS_EXT  OS_TCB           *OSTCBPrioTbl[OS_LOWEST_PRIO + 1];/* Table of pointers to created TCBs        */
  377. OS_EXT  OS_TCB            OSTCBTbl[OS_MAX_TASKS + OS_N_SYS_TASKS];   /* Table of TCBs                  */
  378. #if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0)
  379. OS_EXT  OS_MEM           *OSMemFreeList;            /* Pointer to free list of memory partitions       */
  380. OS_EXT  OS_MEM            OSMemTbl[OS_MAX_MEM_PART];/* Storage for memory partition manager            */
  381. #endif
  382. #if (OS_Q_EN > 0) && (OS_MAX_QS > 0)
  383. OS_EXT  OS_Q             *OSQFreeList;              /* Pointer to list of free QUEUE control blocks    */
  384. OS_EXT  OS_Q              OSQTbl[OS_MAX_QS];        /* Table of QUEUE control blocks                   */
  385. #endif
  386. #if OS_TIME_GET_SET_EN > 0   
  387. OS_EXT  volatile  INT32U  OSTime;                   /* Current value of system time (in ticks)         */
  388. #endif
  389. //#ifndef   OS_GLOBALS
  390. extern  INT8U  const      OSMapTbl[];               /* Priority->Bit Mask lookup table                 */
  391. extern  INT8U  const      OSUnMapTbl[];             /* Priority->Index    lookup table                 */
  392. //#endif
  393. /*
  394. *********************************************************************************************************
  395. *                                          FUNCTION PROTOTYPES
  396. *                                     (Target Independent Functions)
  397. *********************************************************************************************************
  398. */
  399. /*
  400. *********************************************************************************************************
  401. *                                         EVENT FLAGS MANAGEMENT
  402. *********************************************************************************************************
  403. */
  404. #if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
  405. #if OS_FLAG_ACCEPT_EN > 0
  406. OS_FLAGS      OSFlagAccept(OS_FLAG_GRP *pgrp, OS_FLAGS flags, INT8U wait_type, INT8U *err) reentrant;
  407. #endif
  408. OS_FLAG_GRP  *OSFlagCreate(OS_FLAGS flags, INT8U *err) reentrant;
  409. #if OS_FLAG_DEL_EN > 0
  410. OS_FLAG_GRP  *OSFlagDel(OS_FLAG_GRP *pgrp, INT8U opt, INT8U *err) reentrant;
  411. #endif
  412. OS_FLAGS      OSFlagPend(OS_FLAG_GRP *pgrp, OS_FLAGS flags, INT8U wait_type, INT16U timeout, INT8U *err) reentrant;
  413. OS_FLAGS      OSFlagPost(OS_FLAG_GRP *pgrp, OS_FLAGS flags, INT8U operation, INT8U *err) reentrant;
  414. #if OS_FLAG_QUERY_EN > 0
  415. OS_FLAGS      OSFlagQuery(OS_FLAG_GRP *pgrp, INT8U *err) reentrant;
  416. #endif
  417. #endif
  418. /*
  419. *********************************************************************************************************
  420. *                                        MESSAGE MAILBOX MANAGEMENT
  421. *********************************************************************************************************
  422. */
  423. #if OS_MBOX_EN > 0
  424. #if OS_MBOX_ACCEPT_EN > 0
  425. void         *OSMboxAccept(OS_EVENT *pevent) reentrant;
  426. #endif
  427. OS_EVENT     *OSMboxCreate(void *msg) reentrant;
  428. #if OS_MBOX_DEL_EN > 0
  429. OS_EVENT     *OSMboxDel(OS_EVENT *pevent, INT8U opt, INT8U *err) reentrant;
  430. #endif
  431. void         *OSMboxPend(OS_EVENT *pevent, INT16U timeout, INT8U *err) reentrant;
  432. #if OS_MBOX_POST_EN > 0
  433. INT8U         OSMboxPost(OS_EVENT *pevent, void *msg) reentrant;
  434. #endif
  435. #if OS_MBOX_POST_OPT_EN > 0
  436. INT8U         OSMboxPostOpt(OS_EVENT *pevent, void *msg, INT8U opt) reentrant;
  437. #endif
  438. #if OS_MBOX_QUERY_EN > 0
  439. INT8U         OSMboxQuery(OS_EVENT *pevent, OS_MBOX_DATA *ppdata) reentrant;
  440. #endif
  441. #endif
  442. /*
  443. *********************************************************************************************************
  444. *                                           MEMORY MANAGEMENT
  445. *********************************************************************************************************
  446. */
  447. #if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0)
  448. OS_MEM       *OSMemCreate(void *addr, INT32U nblks, INT32U blksize, INT8U *err) reentrant;
  449. void         *OSMemGet(OS_MEM *pmem, INT8U *err) reentrant;
  450. INT8U         OSMemPut(OS_MEM *pmem, void *pblk) reentrant;
  451. #if OS_MEM_QUERY_EN > 0
  452. INT8U         OSMemQuery(OS_MEM *pmem, OS_MEM_DATA *ppdata) reentrant;
  453. #endif
  454. #endif
  455. /*
  456. *********************************************************************************************************
  457. *                                MUTUAL EXCLUSION SEMAPHORE MANAGEMENT
  458. *********************************************************************************************************
  459. */
  460. #if OS_MUTEX_EN > 0
  461. #if OS_MUTEX_ACCEPT_EN > 0
  462. INT8U         OSMutexAccept(OS_EVENT *pevent, INT8U *err) reentrant;
  463. #endif
  464. OS_EVENT     *OSMutexCreate(INT8U prio, INT8U *err) reentrant;
  465. #if OS_MUTEX_DEL_EN > 0
  466. OS_EVENT     *OSMutexDel(OS_EVENT *pevent, INT8U opt, INT8U *err) reentrant;
  467. #endif
  468. void          OSMutexPend(OS_EVENT *pevent, INT16U timeout, INT8U *err) reentrant;
  469. INT8U         OSMutexPost(OS_EVENT *pevent) reentrant;
  470. #if OS_MUTEX_QUERY_EN > 0
  471. INT8U         OSMutexQuery(OS_EVENT *pevent, OS_MUTEX_DATA *ppdata) reentrant;
  472. #endif
  473. #endif
  474. /*
  475. *********************************************************************************************************
  476. *                                         MESSAGE QUEUE MANAGEMENT
  477. *********************************************************************************************************
  478. */
  479. #if (OS_Q_EN > 0) && (OS_MAX_QS > 0)
  480. #if OS_Q_ACCEPT_EN > 0
  481. void         *OSQAccept(OS_EVENT *pevent) reentrant;
  482. #endif
  483. OS_EVENT     *OSQCreate(void **start, INT16U size) reentrant;
  484. #if OS_Q_DEL_EN > 0
  485. OS_EVENT     *OSQDel(OS_EVENT *pevent, INT8U opt, INT8U *err) reentrant;
  486. #endif
  487. #if OS_Q_FLUSH_EN > 0
  488. INT8U         OSQFlush(OS_EVENT *pevent) reentrant;
  489. #endif
  490. void         *OSQPend(OS_EVENT *pevent, INT16U timeout, INT8U *err) reentrant;
  491. #if OS_Q_POST_EN > 0
  492. INT8U         OSQPost(OS_EVENT *pevent, void *msg) reentrant;
  493. #endif
  494. #if OS_Q_POST_FRONT_EN > 0
  495. INT8U         OSQPostFront(OS_EVENT *pevent, void *msg) reentrant;
  496. #endif
  497. #if OS_Q_POST_OPT_EN > 0
  498. INT8U         OSQPostOpt(OS_EVENT *pevent, void *msg, INT8U opt) reentrant;
  499. #endif
  500. #if OS_Q_QUERY_EN > 0
  501. INT8U         OSQQuery(OS_EVENT *pevent, OS_Q_DATA *ppdata) reentrant;
  502. #endif
  503. #endif
  504. /*
  505. *********************************************************************************************************
  506. *                                          SEMAPHORE MANAGEMENT
  507. *********************************************************************************************************
  508. */
  509. #if OS_SEM_EN > 0
  510. #if OS_SEM_ACCEPT_EN > 0
  511. INT16U        OSSemAccept(OS_EVENT *pevent) reentrant;
  512. #endif
  513. OS_EVENT     *OSSemCreate(INT16U cnt) reentrant;
  514. #if OS_SEM_DEL_EN > 0
  515. OS_EVENT     *OSSemDel(OS_EVENT *pevent, INT8U opt, INT8U *err) reentrant;
  516. #endif
  517. void          OSSemPend(OS_EVENT *pevent, INT16U timeout, INT8U *err) reentrant;
  518. INT8U         OSSemPost(OS_EVENT *pevent) reentrant;
  519. #if OS_SEM_QUERY_EN > 0
  520. INT8U         OSSemQuery(OS_EVENT *pevent, OS_SEM_DATA *ppdata) reentrant;
  521. #endif
  522. #endif
  523. /*
  524. *********************************************************************************************************
  525. *                                            TASK MANAGEMENT
  526. *********************************************************************************************************
  527. */
  528. #if OS_TASK_CHANGE_PRIO_EN > 0
  529. INT8U         OSTaskChangePrio(INT8U oldprio, INT8U newprio) reentrant;
  530. #endif
  531. #if OS_TASK_CREATE_EN > 0
  532. INT8U         OSTaskCreate(void (*task)(void *pd) reentrant, void *ppdata, OS_STK *ptos, INT8U prio) reentrant;
  533. #endif
  534. #if OS_TASK_CREATE_EXT_EN > 0
  535. INT8U         OSTaskCreateExt(void  (*task)(void *pd) reentrant,
  536.                               void   *ppdata,
  537.                               OS_STK *ptos,
  538.                               INT8U   prio,
  539.                               INT16U  id,
  540.                               OS_STK *pbos,
  541.                               INT32U  stk_size,
  542.                               void   *pext,
  543.                               INT16U  opt) reentrant;
  544. #endif
  545. #if OS_TASK_DEL_EN > 0
  546. INT8U         OSTaskDel(INT8U prio) reentrant;
  547. INT8U         OSTaskDelReq(INT8U prio) reentrant;
  548. #endif
  549. #if OS_TASK_SUSPEND_EN > 0
  550. INT8U         OSTaskResume(INT8U prio) reentrant;
  551. INT8U         OSTaskSuspend(INT8U prio) reentrant;
  552. #endif
  553. #if OS_TASK_CREATE_EXT_EN > 0
  554. INT8U         OSTaskStkChk(INT8U prio, OS_STK_DATA *ppdata) reentrant;
  555. #endif
  556. #if OS_TASK_QUERY_EN > 0
  557. INT8U         OSTaskQuery(INT8U prio, OS_TCB *ppdata) reentrant;
  558. #endif
  559. /*
  560. *********************************************************************************************************
  561. *                                            TIME MANAGEMENT
  562. *********************************************************************************************************
  563. */
  564. void          OSTimeDly(INT16U ticks) reentrant;
  565. #if OS_TIME_DLY_HMSM_EN > 0
  566. INT8U         OSTimeDlyHMSM(INT8U hours, INT8U minutes, INT8U seconds, INT16U milli) reentrant;
  567. #endif
  568. #if OS_TIME_DLY_RESUME_EN > 0
  569. INT8U         OSTimeDlyResume(INT8U prio) reentrant;
  570. #endif
  571. #if OS_TIME_GET_SET_EN > 0
  572. INT32U        OSTimeGet(void) reentrant;
  573. void          OSTimeSet(INT32U ticks) reentrant;
  574. #endif
  575. void          OSTimeTick(void) reentrant;
  576. /*
  577. *********************************************************************************************************
  578. *                                             MISCELLANEOUS
  579. *********************************************************************************************************
  580. */
  581. void          OSInit(void) reentrant;
  582. void          OSIntEnter(void) reentrant;
  583. void          OSIntExit(void) reentrant;
  584. #if OS_SCHED_LOCK_EN > 0
  585. void          OSSchedLock(void) reentrant;
  586. void          OSSchedUnlock(void) reentrant;
  587. #endif
  588. void          OSStart(void) reentrant;
  589. void          OSStatInit(void) reentrant;
  590. INT16U        OSVersion(void) reentrant;
  591. /*
  592. *********************************************************************************************************
  593. *                                      INTERNAL FUNCTION PROTOTYPES
  594. *                            (Your application MUST NOT call these functions)
  595. *********************************************************************************************************
  596. */
  597. #if OS_TASK_DEL_EN > 0
  598. void          OS_Dummy(void) reentrant;
  599. #endif
  600. #if ((OS_Q_EN > 0) && (OS_MAX_QS > 0)) || (OS_MBOX_EN > 0) || (OS_SEM_EN > 0) || (OS_MUTEX_EN > 0)
  601. INT8U         OS_EventTaskRdy(OS_EVENT *pevent, void *msg, INT8U msk) reentrant;
  602. void          OS_EventTaskWait(OS_EVENT *pevent) reentrant;
  603. void          OS_EventTO(OS_EVENT *pevent) reentrant;
  604. void          OS_EventWaitListInit(OS_EVENT *pevent) reentrant;
  605. #endif
  606. #if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
  607. void          OS_FlagInit(void) reentrant;
  608. void          OS_FlagUnlink(OS_FLAG_NODE *pnode) reentrant;
  609. #endif
  610. #if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0)
  611. void          OS_MemInit(void) reentrant;
  612. #endif
  613. #if OS_Q_EN > 0
  614. void          OS_QInit(void) reentrant;
  615. #endif
  616. void          OS_Sched(void) reentrant;
  617. void          OS_TaskIdle(void *ddata) reentrant;
  618. #if OS_TASK_STAT_EN > 0
  619. void          OS_TaskStat(void *ddata) reentrant;
  620. #endif
  621. INT8U         OS_TCBInit(INT8U prio, OS_STK *ptos, OS_STK *pbos, INT16U id, INT32U stk_size, void *pext, INT16U opt) reentrant;
  622. /*
  623. *********************************************************************************************************
  624. *                                          FUNCTION PROTOTYPES
  625. *                                      (Target Specific Functions)
  626. *********************************************************************************************************
  627. */
  628. #if OS_VERSION >= 204
  629. void          OSInitHookBegin(void) reentrant;
  630. void          OSInitHookEnd(void) reentrant;
  631. #endif
  632. void          OSIntCtxSw(void);
  633. void          OSStartHighRdy(void);
  634. void          OSTaskCreateHook(OS_TCB *ptcb) reentrant;
  635. void          OSTaskDelHook(OS_TCB *ptcb) reentrant;
  636. #if OS_VERSION >= 251
  637. void          OSTaskIdleHook(void) reentrant;
  638. #endif
  639. void          OSTaskStatHook(void) reentrant;
  640. OS_STK       *OSTaskStkInit(void (*task)(void *pd) reentrant, void *ppdata, OS_STK *ptos, INT16U opt) reentrant;
  641. void          OSTaskSwHook(void) reentrant;
  642. #if OS_VERSION >= 204
  643. void          OSTCBInitHook(OS_TCB *ptcb) reentrant;
  644. #endif
  645. void          OSTimeTickHook(void) reentrant;
  646. /*
  647. *********************************************************************************************************
  648. *                                          FUNCTION PROTOTYPES
  649. *                                  (Compiler Specific ISR prototypes)
  650. *********************************************************************************************************
  651. */
  652. #ifndef OS_ISR_PROTO_EXT
  653. void          OSCtxSw(void);
  654. void          OSTickISR(void);
  655. #endif
  656. /*
  657. *********************************************************************************************************
  658. *                                   LOOK FOR MISSING #define CONSTANTS
  659. *
  660. * This section is used to generate ERROR messages at compile time if certain #define constants are 
  661. * MISSING in OS_CFG.H.  This allows you to quickly determine the source of the error.
  662. *
  663. * You SHOULD NOT change this section UNLESS you would like to add more comments as to the source of the
  664. * compile time error.
  665. *********************************************************************************************************
  666. */
  667. /*
  668. *********************************************************************************************************
  669. *                                            EVENT FLAGS
  670. *********************************************************************************************************
  671. */
  672. #ifndef OS_FLAG_EN
  673. #error  "OS_CFG.H, Missing OS_FLAG_EN: Enable (1) or Disable (0) code generation for Event Flags"
  674. #else
  675.     #ifndef OS_MAX_FLAGS
  676.     #error  "OS_CFG.H, Missing OS_MAX_FLAGS: Max. number of Event Flag Groups in your application"
  677.     #else
  678.         #if     OS_MAX_FLAGS == 0
  679.         #error  "OS_CFG.H, OS_MAX_FLAGS must be > 0"
  680.         #endif
  681.         #if     OS_MAX_FLAGS > 255
  682.         #error  "OS_CFG.H, OS_MAX_FLAGS must be <= 255"
  683.         #endif
  684.     #endif
  685.     #ifndef OS_FLAG_WAIT_CLR_EN
  686.     #error  "OS_CFG.H, Missing OS_FLAG_WAIT_CLR_EN: Include code for Wait on Clear EVENT FLAGS"
  687.     #endif
  688.     #ifndef OS_FLAG_ACCEPT_EN
  689.     #error  "OS_CFG.H, Missing OS_FLAG_ACCEPT_EN: Include code for OSFlagAccept()"
  690.     #endif
  691.     #ifndef OS_FLAG_DEL_EN
  692.     #error  "OS_CFG.H, Missing OS_FLAG_DEL_EN: Include code for OSFlagDel()"
  693.     #endif
  694.     #ifndef OS_FLAG_QUERY_EN
  695.     #error  "OS_CFG.H, Missing OS_FLAG_QUERY_EN: Include code for OSFlagQuery()"
  696.     #endif
  697. #endif
  698. /*
  699. *********************************************************************************************************
  700. *                                           MESSAGE MAILBOXES
  701. *********************************************************************************************************
  702. */
  703. #ifndef OS_MBOX_EN
  704. #error  "OS_CFG.H, Missing OS_MBOX_EN: Enable (1) or Disable (0) code generation for MAILBOXES"
  705. #else
  706.     #ifndef OS_MBOX_ACCEPT_EN
  707.     #error  "OS_CFG.H, Missing OS_MBOX_ACCEPT_EN: Include code for OSMboxAccept()"
  708.     #endif
  709.     #ifndef OS_MBOX_DEL_EN
  710.     #error  "OS_CFG.H, Missing OS_MBOX_DEL_EN: Include code for OSMboxDel()"
  711.     #endif
  712.     #ifndef OS_MBOX_POST_EN
  713.     #error  "OS_CFG.H, Missing OS_MBOX_POST_EN: Include code for OSMboxPost()"
  714.     #endif
  715.     #ifndef OS_MBOX_POST_OPT_EN
  716.     #error  "OS_CFG.H, Missing OS_MBOX_POST_OPT_EN: Include code for OSMboxPostOpt()"
  717.     #endif
  718.     #ifndef OS_MBOX_QUERY_EN
  719.     #error  "OS_CFG.H, Missing OS_MBOX_QUERY_EN: Include code for OSMboxQuery()"
  720.     #endif
  721. #endif
  722. /*
  723. *********************************************************************************************************
  724. *                                           MEMORY MANAGEMENT
  725. *********************************************************************************************************
  726. */
  727. #ifndef OS_MEM_EN
  728. #error  "OS_CFG.H, Missing OS_MEM_EN: Enable (1) or Disable (0) code generation for MEMORY MANAGER"
  729. #else
  730.     #ifndef OS_MAX_MEM_PART
  731.     #error  "OS_CFG.H, Missing OS_MAX_MEM_PART: Max. number of memory partitions"
  732.     #else
  733.         #if     OS_MAX_MEM_PART == 0
  734.         #error  "OS_CFG.H, OS_MAX_MEM_PART must be > 0"
  735.         #endif
  736.         #if     OS_MAX_MEM_PART > 255
  737.         #error  "OS_CFG.H, OS_MAX_MEM_PART must be <= 255"
  738.         #endif
  739.     #endif
  740.     #ifndef OS_MEM_QUERY_EN
  741.     #error  "OS_CFG.H, Missing OS_MEM_QUERY_EN: Include code for OSMemQuery()"
  742.     #endif
  743. #endif
  744. /*
  745. *********************************************************************************************************
  746. *                                       MUTUAL EXCLUSION SEMAPHORES
  747. *********************************************************************************************************
  748. */
  749. #ifndef OS_MUTEX_EN
  750. #error  "OS_CFG.H, Missing OS_MUTEX_EN: Enable (1) or Disable (0) code generation for MUTEX"
  751. #else
  752.     #ifndef OS_MUTEX_ACCEPT_EN
  753.     #error  "OS_CFG.H, Missing OS_MUTEX_ACCEPT_EN: Include code for OSMutexAccept()"
  754.     #endif
  755.     #ifndef OS_MUTEX_DEL_EN
  756.     #error  "OS_CFG.H, Missing OS_MUTEX_DEL_EN: Include code for OSMutexDel()"
  757.     #endif
  758.     #ifndef OS_MUTEX_QUERY_EN
  759.     #error  "OS_CFG.H, Missing OS_MUTEX_QUERY_EN: Include code for OSMutexQuery()"
  760.     #endif
  761. #endif
  762. /*
  763. *********************************************************************************************************
  764. *                                              MESSAGE QUEUES
  765. *********************************************************************************************************
  766. */
  767. #ifndef OS_Q_EN
  768. #error  "OS_CFG.H, Missing OS_Q_EN: Enable (1) or Disable (0) code generation for QUEUES"
  769. #else
  770.     #ifndef OS_MAX_QS
  771.     #error  "OS_CFG.H, Missing OS_MAX_QS: Max. number of queue control blocks"
  772.     #else
  773.         #if     OS_MAX_QS == 0
  774.         #error  "OS_CFG.H, OS_MAX_QS must be > 0"
  775.         #endif
  776.         #if     OS_MAX_QS > 255
  777.         #error  "OS_CFG.H, OS_MAX_QS must be <= 255"
  778.         #endif
  779.     #endif
  780.     #ifndef OS_Q_ACCEPT_EN
  781.     #error  "OS_CFG.H, Missing OS_Q_ACCEPT_EN: Include code for OSQAccept()"
  782.     #endif
  783.     #ifndef OS_Q_DEL_EN
  784.     #error  "OS_CFG.H, Missing OS_Q_DEL_EN: Include code for OSQDel()"
  785.     #endif
  786.     #ifndef OS_Q_FLUSH_EN
  787.     #error  "OS_CFG.H, Missing OS_Q_FLUSH_EN: Include code for OSQFlush()"
  788.     #endif
  789.     #ifndef OS_Q_POST_EN
  790.     #error  "OS_CFG.H, Missing OS_Q_POST_EN: Include code for OSQPost()"
  791.     #endif
  792.     #ifndef OS_Q_POST_FRONT_EN
  793.     #error  "OS_CFG.H, Missing OS_Q_POST_FRONT_EN: Include code for OSQPostFront()"
  794.     #endif
  795.     #ifndef OS_Q_POST_OPT_EN
  796.     #error  "OS_CFG.H, Missing OS_Q_POST_OPT_EN: Include code for OSQPostOpt()"
  797.     #endif
  798.     #ifndef OS_Q_QUERY_EN
  799.     #error  "OS_CFG.H, Missing OS_Q_QUERY_EN: Include code for OSQQuery()"
  800.     #endif
  801. #endif
  802. /*
  803. *********************************************************************************************************
  804. *                                              SEMAPHORES
  805. *********************************************************************************************************
  806. */
  807. #ifndef OS_SEM_EN
  808. #error  "OS_CFG.H, Missing OS_SEM_EN: Enable (1) or Disable (0) code generation for SEMAPHORES"
  809. #else
  810.     #ifndef OS_SEM_ACCEPT_EN
  811.     #error  "OS_CFG.H, Missing OS_SEM_ACCEPT_EN: Include code for OSSemAccept()"
  812.     #endif
  813.     #ifndef OS_SEM_DEL_EN
  814.     #error  "OS_CFG.H, Missing OS_SEM_DEL_EN: Include code for OSSemDel()"
  815.     #endif
  816.     #ifndef OS_SEM_QUERY_EN
  817.     #error  "OS_CFG.H, Missing OS_SEM_QUERY_EN: Include code for OSSemQuery()"
  818.     #endif
  819. #endif
  820. /*
  821. *********************************************************************************************************
  822. *                                             TASK MANAGEMENT
  823. *********************************************************************************************************
  824. */
  825. #ifndef OS_MAX_TASKS
  826. #error  "OS_CFG.H, Missing OS_MAX_TASKS: Max. number of tasks in your application"
  827. #else
  828.     #if     OS_MAX_TASKS == 0
  829.     #error  "OS_CFG.H,         OS_MAX_TASKS must be >= 2"
  830.     #endif
  831.     #if     OS_MAX_TASKS > 63
  832.     #error  "OS_CFG.H,         OS_MAX_TASKS must be <= 63"
  833.     #endif
  834. #endif
  835. #ifndef OS_TASK_IDLE_STK_SIZE
  836. #error  "OS_CFG.H, Missing OS_TASK_IDLE_STK_SIZE: Idle task stack size"
  837. #endif
  838. #ifndef OS_TASK_STAT_EN
  839. #error  "OS_CFG.H, Missing OS_TASK_STAT_EN: Enable (1) or Disable(0) the statistics task"
  840. #endif
  841. #ifndef OS_TASK_STAT_STK_SIZE
  842. #error  "OS_CFG.H, Missing OS_TASK_STAT_STK_SIZE: Statistics task stack size"
  843. #endif
  844. #ifndef OS_TASK_CHANGE_PRIO_EN
  845. #error  "OS_CFG.H, Missing OS_TASK_CHANGE_PRIO_EN: Include code for OSTaskChangePrio()"
  846. #endif
  847. #ifndef OS_TASK_CREATE_EN
  848. #error  "OS_CFG.H, Missing OS_TASK_CREATE_EN: Include code for OSTaskCreate()"
  849. #endif
  850. #ifndef OS_TASK_CREATE_EXT_EN
  851. #error  "OS_CFG.H, Missing OS_TASK_CREATE_EXT_EN: Include code for OSTaskCreateExt()"
  852. #endif
  853. #ifndef OS_TASK_DEL_EN
  854. #error  "OS_CFG.H, Missing OS_TASK_DEL_EN: Include code for OSTaskDel()"
  855. #endif
  856. #ifndef OS_TASK_SUSPEND_EN
  857. #error  "OS_CFG.H, Missing OS_TASK_SUSPEND_EN: Include code for OSTaskSuspend() and OSTaskResume()"
  858. #endif
  859. #ifndef OS_TASK_QUERY_EN
  860. #error  "OS_CFG.H, Missing OS_TASK_QUERY_EN: Include code for OSTaskQuery()"
  861. #endif
  862. /*
  863. *********************************************************************************************************
  864. *                                             TIME MANAGEMENT
  865. *********************************************************************************************************
  866. */
  867. #ifndef OS_TICKS_PER_SEC
  868. #error  "OS_CFG.H, Missing OS_TICKS_PER_SEC: Sets the number of ticks in one second"
  869. #endif
  870. #ifndef OS_TIME_DLY_HMSM_EN
  871. #error  "OS_CFG.H, Missing OS_TIME_DLY_HMSM_EN: Include code for OSTimeDlyHMSM()"
  872. #endif
  873. #ifndef OS_TIME_DLY_RESUME_EN
  874. #error  "OS_CFG.H, Missing OS_TIME_DLY_RESUME_EN: Include code for OSTimeDlyResume()"
  875. #endif
  876. #ifndef OS_TIME_GET_SET_EN
  877. #error  "OS_CFG.H, Missing OS_TIME_GET_SET_EN: Include code for OSTimeGet() and OSTimeSet()"
  878. #endif
  879. /*
  880. *********************************************************************************************************
  881. *                                            MISCELLANEOUS
  882. *********************************************************************************************************
  883. */
  884. #ifndef OS_MAX_EVENTS
  885. #error  "OS_CFG.H, Missing OS_MAX_EVENTS: Max. number of event control blocks in your application"
  886. #else
  887.     #if     OS_MAX_EVENTS == 0
  888.     #error  "OS_CFG.H, OS_MAX_EVENTS must be > 0"
  889.     #endif
  890.     #if     OS_MAX_EVENTS > 255
  891.     #error  "OS_CFG.H, OS_MAX_EVENTS must be <= 255"
  892.     #endif
  893. #endif
  894. #ifndef OS_LOWEST_PRIO
  895. #error  "OS_CFG.H, Missing OS_LOWEST_PRIO: Defines the lowest priority that can be assigned"
  896. #endif
  897. #ifndef OS_ARG_CHK_EN
  898. #error  "OS_CFG.H, Missing OS_ARG_CHK_EN: Enable (1) or Disable (0) argument checking"
  899. #endif
  900. #ifndef OS_CPU_HOOKS_EN
  901. #error  "OS_CFG.H, Missing OS_CPU_HOOKS_EN: uC/OS-II hooks are found in the processor port files when 1"
  902. #endif
  903. #ifndef OS_SCHED_LOCK_EN
  904. #error  "OS_CFG.H, Missing OS_SCHED_LOCK_EN: Include code for OSSchedLock() and OSSchedUnlock()"
  905. #endif