Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
CoOS.h
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>© 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
Generated on Tue Jul 12 2022 15:09:51 by
1.7.2