Eric Ebert / Mbed 2 deprecated CoOS

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers CoOS.h Source File

CoOS.h

Go to the documentation of this file.
00001 /**
00002  *******************************************************************************
00003  * @file       CoOS.h
00004  * @version    V1.1.3    
00005  * @date       2010.04.26
00006  * @brief      API header file of CooCox CoOS.
00007  * @details    This file including all API functions's declare of CooCox CoOS.    
00008  *******************************************************************************
00009  * @copy
00010  *
00011  * INTERNAL FILE,DON'T PUBLIC.
00012  * 
00013  * <h2><center>&copy; COPYRIGHT 2009 CooCox </center></h2>
00014  *******************************************************************************
00015  */ 
00016 
00017 #ifndef _CCRTOS_H
00018 #define _CCRTOS_H
00019 #include "OsConfig.h"
00020 /*---------------------------- Type Define  ----------------------------------*/
00021 typedef signed   char      S8;              
00022 typedef unsigned char      U8;    
00023 typedef short              S16;
00024 typedef unsigned short     U16;
00025 typedef int                S32;
00026 typedef unsigned int       U32;
00027 typedef long long          S64;
00028 typedef unsigned long long U64;
00029 typedef unsigned char      BIT;
00030 typedef unsigned char      BOOL;
00031 typedef unsigned int       OS_STK;
00032 typedef U8                 OS_TID;
00033 typedef U8                 OS_TCID;
00034 typedef U8                 OS_MutexID;
00035 typedef U8                 OS_EventID;
00036 typedef U8                 OS_FlagID;
00037 typedef U8                 OS_MMID;
00038 typedef U8                 StatusType;
00039 typedef U16                OS_VER;
00040 typedef void               (*FUNCPtr)(void*);
00041 typedef void               (*vFUNCPtr)(void);
00042 
00043 
00044 /*---------------------------- Constant Define -------------------------------*/
00045 
00046 #ifndef FALSE
00047 #define FALSE         (0)
00048 #endif
00049 
00050 #ifndef TRUE
00051 #define TRUE          (1)
00052 #endif
00053 
00054 
00055 /*---------------------------- Error Codes   ---------------------------------*/
00056 #define E_CREATE_FAIL         (StatusType)-1
00057 #define E_OK                  (StatusType)0
00058 #define E_INVALID_ID          (StatusType)1
00059 #define E_INVALID_PARAMETER   (StatusType)2
00060 #define E_CALL                (StatusType)3
00061 #define E_TASK_WAITING        (StatusType)4
00062 #define E_TIMEOUT             (StatusType)5
00063 #define E_SEM_FULL            (StatusType)6
00064 #define E_MBOX_FULL           (StatusType)7
00065 #define E_QUEUE_FULL          (StatusType)8
00066 #define E_SEM_EMPTY           (StatusType)9
00067 #define E_MBOX_EMPTY          (StatusType)10
00068 #define E_QUEUE_EMPTY         (StatusType)11
00069 #define E_FLAG_NOT_READY      (StatusType)12
00070 #define E_ALREADY_IN_WAITING  (StatusType)13
00071 #define E_TASK_NOT_WAITING    (StatusType)14
00072 #define E_TASK_WAIT_OTHER     (StatusType)15
00073 #define E_EXCEED_MAX_NUM      (StatusType)16
00074 #define E_NOT_IN_DELAY_LIST   (StatusType)17
00075 #define E_SEV_REQ_FULL        (StatusType)18    
00076 #define E_NOT_FREE_ALL        (StatusType)19    
00077 #define E_PROTECTED_TASK      (StatusType)20 
00078 #define E_OS_IN_LOCK          (StatusType)21                                                
00079 
00080 
00081 /*---------------------------- Wait Opreation type  --------------------------*/
00082 #define OPT_WAIT_ALL          0         /*!< Wait for all flags.              */
00083 #define OPT_WAIT_ANY          1         /*!< Wait for any one of flags.       */
00084 #define OPT_WAIT_ONE          2         /*!< Waot for one flag.               */    
00085 
00086 
00087 /*---------------------------- Delete Opreation type  ------------------------*/
00088 #define OPT_DEL_NO_PEND       0         /*!< Delete when no task waitting for */
00089 #define OPT_DEL_ANYWAY        1         /*!< Delete always.                   */
00090 
00091 
00092 /*---------------------------- Timer Types  ----------------------------------*/
00093 #if CFG_TMR_EN >0
00094 #define TMR_TYPE_ONE_SHOT     0         /*!< Timer counter type: One-shot     */
00095 #define TMR_TYPE_PERIODIC     1         /*!< Timer counter type: Periodic     */
00096 #endif
00097 
00098 
00099 /*---------------------------- Event Control ---------------------------------*/
00100 #if CFG_EVENT_EN >0
00101 #define EVENT_SORT_TYPE_FIFO  (U8)0x01  /*!< Insert a event by FIFO           */
00102 #define EVENT_SORT_TYPE_PRIO  (U8)0x02  /*!< Insert a event by prio           */
00103 #endif
00104 
00105 
00106 /*---------------------------- Function declare-------------------------------*/
00107 
00108 /* Implement in file "core.c"      */
00109 extern void    CoInitOS(void);          /*!< Initialize OS                    */
00110 extern void    CoStartOS(void);         /*!< Start multitask                  */
00111 extern void    CoEnterISR(void);        /*!< Enter a ISR                      */
00112 extern void    CoExitISR(void);         /*!< Exit a ISR                       */
00113 extern void    CoSchedLock(void);
00114 extern void    CoSchedUnlock(void);
00115 extern OS_VER  CoGetOSVersion(void);    /*!< Get OS version value             */
00116 
00117 
00118 /* Implement in file "task.c"      */
00119 #define CoCreateTask(task,argv,prio,stk,stkSz)              \
00120             CreateTask(task,argv,(prio)|((stkSz)<<8),stk)
00121 
00122 
00123 #define CoCreateTaskEx(task,argv,prio,stk,stkSz,timeSlice,isWaitting)  \
00124            CreateTask(task,argv,(prio)|((stkSz)<<8)|((timeSlice)<<20)|(isWaitting<<31),stk)
00125 
00126 extern void        CoExitTask(void);
00127 extern OS_TID      CoGetCurTaskID(void);
00128 extern StatusType  CoDelTask(OS_TID taskID);
00129 extern StatusType  CoActivateTask(OS_TID taskID,void *argv);
00130 extern StatusType  CoAwakeTask(OS_TID taskID);
00131 extern StatusType  CoSuspendTask(OS_TID taskID);
00132 extern StatusType  CoSetPriority(OS_TID taskID,U8 priority);
00133 extern OS_TID      CreateTask(FUNCPtr task,void *argv,U32 parameter,OS_STK *stk);
00134 
00135 /* Implement in file "time.c"      */
00136 extern U64         CoGetOSTime(void);
00137 extern StatusType  CoTickDelay(U32 ticks);
00138 extern StatusType  CoResetTaskDelayTick(OS_TID taskID,U32 ticks);
00139 extern StatusType  CoTimeDelay(U8 hour,U8 minute,U8 sec,U16 millsec);
00140 
00141 
00142 /* Implement in file "timer.c"     */ 
00143 extern StatusType  CoDelTmr(OS_TCID tmrID);
00144 extern StatusType  CoStopTmr(OS_TCID tmrID);
00145 extern StatusType  CoStartTmr(OS_TCID tmrID);
00146 extern U32         CoGetCurTmrCnt(OS_TCID tmrID,StatusType* perr);
00147 extern StatusType  CoSetTmrCnt(OS_TCID tmrID,U32 tmrCnt,U32 tmrReload);
00148 extern OS_TCID     CoCreateTmr(U8 tmrType, U32 tmrCnt, U32 tmrReload, vFUNCPtr func);
00149 
00150 
00151 /* Implement in file "kernelHeap.c"*/
00152 extern void*       CoKmalloc(U32 size);
00153 extern void        CoKfree(void* memBuf);
00154 
00155 
00156 /* Implement in file "mm.c"        */
00157 extern void*       CoGetMemoryBuffer(OS_MMID mmID);
00158 extern StatusType  CoDelMemoryPartition(OS_MMID mmID);
00159 extern StatusType  CoFreeMemoryBuffer(OS_MMID mmID,void* buf);
00160 extern U32         CoGetFreeBlockNum(OS_MMID mmID,StatusType* perr);
00161 extern OS_MMID     CoCreateMemPartition(U8* memBuf,U32 blockSize,U32 blockNum);
00162 
00163 /* Implement in file "mutex.c"     */
00164 extern OS_MutexID  CoCreateMutex(void);
00165 extern StatusType  CoEnterMutexSection(OS_MutexID mutexID);
00166 extern StatusType  CoLeaveMutexSection(OS_MutexID mutexID);
00167 
00168 
00169 /* Implement in file "sem.c"       */
00170 extern StatusType  CoPostSem(OS_EventID id);
00171 extern StatusType  CoAcceptSem(OS_EventID id);
00172 extern StatusType  isr_PostSem(OS_EventID id);
00173 extern StatusType  CoDelSem(OS_EventID id,U8 opt);
00174 extern StatusType  CoPendSem(OS_EventID id,U32 timeout);
00175 extern OS_EventID  CoCreateSem(U16 initCnt,U16 maxCnt,U8 sortType);
00176 
00177 
00178 /* Implement in file "mbox.c"      */
00179 extern OS_EventID  CoCreateMbox(U8 sortType);
00180 extern StatusType  CoDelMbox(OS_EventID id,U8 opt);
00181 extern StatusType  CoPostMail(OS_EventID id,void* pmail);
00182 extern StatusType  isr_PostMail(OS_EventID id,void* pmail);
00183 extern void*       CoAcceptMail(OS_EventID id,StatusType* perr);
00184 extern void*       CoPendMail(OS_EventID id,U32 timeout,StatusType* perr);
00185 
00186 
00187 /* Implement in file "queue.c"     */
00188 extern StatusType  CoDelQueue(OS_EventID id,U8 opt);
00189 extern StatusType  CoPostQueueMail(OS_EventID id,void* pmail);
00190 extern StatusType  isr_PostQueueMail(OS_EventID id,void* pmail);
00191 extern void*       CoAcceptQueueMail(OS_EventID id,StatusType* perr);
00192 extern OS_EventID  CoCreateQueue(void **qStart, U16 size ,U8 sortType);
00193 extern void*       CoPendQueueMail(OS_EventID id,U32 timeout,StatusType* perr);
00194 
00195 
00196 
00197 /* Implement in file "flag.c"      */
00198 extern StatusType  CoSetFlag (OS_FlagID id);
00199 extern StatusType  CoClearFlag (OS_FlagID id);
00200 extern StatusType  isr_SetFlag (OS_FlagID id);
00201 extern StatusType  CoDelFlag (OS_FlagID id,U8 opt);
00202 extern StatusType  CoAcceptSingleFlag (OS_FlagID id);
00203 extern StatusType  CoWaitForSingleFlag (OS_FlagID id,U32 timeout);
00204 extern OS_FlagID   CoCreateFlag (BOOL bAutoReset,BOOL bInitialState);
00205 extern U32         CoAcceptMultipleFlags (U32 flags,U8 waitType,StatusType *perr);
00206 extern U32         CoWaitForMultipleFlags (U32 flags,U8 waitType,U32 timeout,StatusType *perr);
00207 
00208 
00209 /* Implement in file "utility.c"   */
00210 extern StatusType  CoTimeToTick(U8 hour,U8 minute,U8 sec,U16 millsec,U32* ticks);
00211 extern void        CoTickToTime(U32 ticks,U8* hour,U8* minute,U8* sec,U16* millsec);
00212 
00213 
00214 /* Implement in file "hook.c"      */
00215 extern void        CoIdleTask(void* pdata);
00216 extern void        CoStkOverflowHook(OS_TID taskID);
00217 
00218 
00219 #endif