uCOS_II.H
上传用户:zfj3589
上传日期:2022-07-13
资源大小:635k
文件大小:46k
源码类别:

微处理器开发

开发平台:

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