electronix79
/
CoOS_mbed
CooCox 1.1.4 on mbed with simple blinky example
Embed:
(wiki syntax)
Show/hide line numbers
CoOS.h
Go to the documentation of this file.
00001 /** 00002 ******************************************************************************* 00003 * @file CoOS.h 00004 * @version V1.1.4 00005 * @date 2011.04.20 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 #ifndef Co_NULL 00046 #define Co_NULL ((void *)0) 00047 #endif 00048 00049 #ifndef Co_FALSE 00050 #define Co_FALSE (0) 00051 #endif 00052 00053 #ifndef Co_TRUE 00054 #define Co_TRUE (1) 00055 #endif 00056 00057 00058 /*---------------------------- Error Codes ---------------------------------*/ 00059 #define E_CREATE_FAIL (StatusType)-1 00060 #define E_OK (StatusType)0 00061 #define E_INVALID_ID (StatusType)1 00062 #define E_INVALID_PARAMETER (StatusType)2 00063 #define E_CALL (StatusType)3 00064 #define E_TASK_WAITING (StatusType)4 00065 #define E_TIMEOUT (StatusType)5 00066 #define E_SEM_FULL (StatusType)6 00067 #define E_MBOX_FULL (StatusType)7 00068 #define E_QUEUE_FULL (StatusType)8 00069 #define E_SEM_EMPTY (StatusType)9 00070 #define E_MBOX_EMPTY (StatusType)10 00071 #define E_QUEUE_EMPTY (StatusType)11 00072 #define E_FLAG_NOT_READY (StatusType)12 00073 #define E_ALREADY_IN_WAITING (StatusType)13 00074 #define E_TASK_NOT_WAITING (StatusType)14 00075 #define E_TASK_WAIT_OTHER (StatusType)15 00076 #define E_EXCEED_MAX_NUM (StatusType)16 00077 #define E_NOT_IN_DELAY_LIST (StatusType)17 00078 #define E_SEV_REQ_FULL (StatusType)18 00079 #define E_NOT_FREE_ALL (StatusType)19 00080 #define E_PROTECTED_TASK (StatusType)20 00081 #define E_OS_IN_LOCK (StatusType)21 00082 00083 00084 /*---------------------------- Wait Opreation type --------------------------*/ 00085 #define OPT_WAIT_ALL 0 /*!< Wait for all flags. */ 00086 #define OPT_WAIT_ANY 1 /*!< Wait for any one of flags. */ 00087 #define OPT_WAIT_ONE 2 /*!< Waot for one flag. */ 00088 00089 00090 /*---------------------------- Delete Opreation type ------------------------*/ 00091 #define OPT_DEL_NO_PEND 0 /*!< Delete when no task waitting for */ 00092 #define OPT_DEL_ANYWAY 1 /*!< Delete always. */ 00093 00094 00095 /*---------------------------- Timer Types ----------------------------------*/ 00096 #if CFG_TMR_EN >0 00097 #define TMR_TYPE_ONE_SHOT 0 /*!< Timer counter type: One-shot */ 00098 #define TMR_TYPE_PERIODIC 1 /*!< Timer counter type: Periodic */ 00099 #endif 00100 00101 00102 /*---------------------------- Event Control ---------------------------------*/ 00103 #if CFG_EVENT_EN >0 00104 #define EVENT_SORT_TYPE_FIFO (U8)0x01 /*!< Insert a event by FIFO */ 00105 #define EVENT_SORT_TYPE_PRIO (U8)0x02 /*!< Insert a event by prio */ 00106 #endif 00107 00108 00109 /*---------------------------- Function declare-------------------------------*/ 00110 00111 /* Implement in file "core.c" */ 00112 extern void CoInitOS(void); /*!< Initialize OS */ 00113 extern void CoStartOS(void); /*!< Start multitask */ 00114 extern void CoEnterISR(void); /*!< Enter a ISR */ 00115 extern void CoExitISR(void); /*!< Exit a ISR */ 00116 extern void CoSchedLock(void); 00117 extern void CoSchedUnlock(void); 00118 extern OS_VER CoGetOSVersion(void); /*!< Get OS version value */ 00119 00120 00121 /* Implement in file "task.c" */ 00122 #define CoCreateTask(task,argv,prio,stk,stkSz) \ 00123 CreateTask(task,argv,(prio)|(((stkSz)<<8) &0x000FFF00 ),stk) 00124 00125 00126 #define CoCreateTaskEx(task,argv,prio,stk,stkSz,timeSlice,isWaitting) \ 00127 CreateTask(task,argv,(prio)|(((stkSz)<<8)&0x000FFF00)|(((timeSlice)<<20)&0x7FF00000)|((isWaitting<<31)&0x80000000),stk) 00128 00129 extern void CoExitTask(void); 00130 extern OS_TID CoGetCurTaskID(void); 00131 extern StatusType CoDelTask(OS_TID taskID); 00132 extern StatusType CoActivateTask(OS_TID taskID,void *argv); 00133 extern StatusType CoAwakeTask(OS_TID taskID); 00134 extern StatusType CoSuspendTask(OS_TID taskID); 00135 extern StatusType CoSetPriority(OS_TID taskID,U8 priority); 00136 extern OS_TID CreateTask(FUNCPtr task,void *argv,U32 parameter,OS_STK *stk); 00137 00138 /* Implement in file "time.c" */ 00139 extern U64 CoGetOSTime(void); 00140 extern StatusType CoTickDelay(U32 ticks); 00141 extern StatusType CoResetTaskDelayTick(OS_TID taskID,U32 ticks); 00142 extern StatusType CoTimeDelay(U8 hour,U8 minute,U8 sec,U16 millsec); 00143 00144 00145 /* Implement in file "timer.c" */ 00146 extern StatusType CoDelTmr(OS_TCID tmrID); 00147 extern StatusType CoStopTmr(OS_TCID tmrID); 00148 extern StatusType CoStartTmr(OS_TCID tmrID); 00149 extern U32 CoGetCurTmrCnt(OS_TCID tmrID,StatusType* perr); 00150 extern StatusType CoSetTmrCnt(OS_TCID tmrID,U32 tmrCnt,U32 tmrReload); 00151 extern OS_TCID CoCreateTmr(U8 tmrType, U32 tmrCnt, U32 tmrReload, vFUNCPtr func); 00152 00153 00154 /* Implement in file "kernelHeap.c"*/ 00155 extern void* CoKmalloc(U32 size); 00156 extern void CoKfree(void* memBuf); 00157 00158 00159 /* Implement in file "mm.c" */ 00160 extern void* CoGetMemoryBuffer(OS_MMID mmID); 00161 extern StatusType CoDelMemoryPartition(OS_MMID mmID); 00162 extern StatusType CoFreeMemoryBuffer(OS_MMID mmID,void* buf); 00163 extern U32 CoGetFreeBlockNum(OS_MMID mmID,StatusType* perr); 00164 extern OS_MMID CoCreateMemPartition(U8* memBuf,U32 blockSize,U32 blockNum); 00165 00166 /* Implement in file "mutex.c" */ 00167 extern OS_MutexID CoCreateMutex(void); 00168 extern StatusType CoEnterMutexSection(OS_MutexID mutexID); 00169 extern StatusType CoLeaveMutexSection(OS_MutexID mutexID); 00170 00171 00172 /* Implement in file "sem.c" */ 00173 extern StatusType CoPostSem(OS_EventID id); 00174 extern StatusType CoAcceptSem(OS_EventID id); 00175 extern StatusType isr_PostSem(OS_EventID id); 00176 extern StatusType CoDelSem(OS_EventID id,U8 opt); 00177 extern StatusType CoPendSem(OS_EventID id,U32 timeout); 00178 extern OS_EventID CoCreateSem(U16 initCnt,U16 maxCnt,U8 sortType); 00179 00180 00181 /* Implement in file "mbox.c" */ 00182 extern OS_EventID CoCreateMbox(U8 sortType); 00183 extern StatusType CoDelMbox(OS_EventID id,U8 opt); 00184 extern StatusType CoPostMail(OS_EventID id,void* pmail); 00185 extern StatusType isr_PostMail(OS_EventID id,void* pmail); 00186 extern void* CoAcceptMail(OS_EventID id,StatusType* perr); 00187 extern void* CoPendMail(OS_EventID id,U32 timeout,StatusType* perr); 00188 00189 00190 /* Implement in file "queue.c" */ 00191 extern StatusType CoDelQueue(OS_EventID id,U8 opt); 00192 extern StatusType CoPostQueueMail(OS_EventID id,void* pmail); 00193 extern StatusType isr_PostQueueMail(OS_EventID id,void* pmail); 00194 extern void* CoAcceptQueueMail(OS_EventID id,StatusType* perr); 00195 extern OS_EventID CoCreateQueue(void **qStart, U16 size ,U8 sortType); 00196 extern void* CoPendQueueMail(OS_EventID id,U32 timeout,StatusType* perr); 00197 00198 00199 00200 /* Implement in file "flag.c" */ 00201 extern StatusType CoSetFlag (OS_FlagID id); 00202 extern StatusType CoClearFlag (OS_FlagID id); 00203 extern StatusType isr_SetFlag (OS_FlagID id); 00204 extern StatusType CoDelFlag (OS_FlagID id,U8 opt); 00205 extern StatusType CoAcceptSingleFlag (OS_FlagID id); 00206 extern StatusType CoWaitForSingleFlag (OS_FlagID id,U32 timeout); 00207 extern OS_FlagID CoCreateFlag (BOOL bAutoReset,BOOL bInitialState); 00208 extern U32 CoAcceptMultipleFlags (U32 flags,U8 waitType,StatusType *perr); 00209 extern U32 CoWaitForMultipleFlags (U32 flags,U8 waitType,U32 timeout,StatusType *perr); 00210 00211 00212 /* Implement in file "utility.c" */ 00213 extern StatusType CoTimeToTick(U8 hour,U8 minute,U8 sec,U16 millsec,U32* ticks); 00214 extern void CoTickToTime(U32 ticks,U8* hour,U8* minute,U8* sec,U16* millsec); 00215 00216 00217 /* Implement in file "hook.c" */ 00218 extern void CoIdleTask(void* pdata); 00219 extern void CoStkOverflowHook(OS_TID taskID); 00220 00221 00222 #endif
Generated on Tue Jul 12 2022 18:19:09 by 1.7.2