CooCox 1.1.4 on mbed with simple blinky example

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.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>&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 #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