00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00037 #ifndef ESOS_H
00038 #define ESOS_H
00039
00040 #ifndef BUILT_ON_ESOS
00041 #define BUILT_ON_ESOS
00042 #endif
00043
00044
00045
00046
00047 #include "all_generic.h"
00048 #include "esos_task.h"
00049
00050
00051
00052
00053
00054 #ifndef __linux
00055 #define ESOS_USE_IRQS
00056 #endif
00057 #define ESOS_USE_SERIAL_PORT
00058
00063 #if defined(ESOS_USE_BULK_CDC_USB) || defined(ESOS_USE_SERIAL_PORT)
00064 #include "esos_comm.h"
00065 #endif // USE_USB or USE_SERIAL
00066
00067 #ifdef ESOS_USE_IRQS
00068
00069
00070
00071 #include "esos_irq.h"
00072 #endif //ESOS_USE_IRQS
00073
00074 #ifdef ESOS_RUNS_ON_REAL_OS
00075
00076
00077
00078
00079
00080 typedef int main_t;
00081 #define OS_END return(1)
00082 #define OS_ITERATE usleep(10000)
00083 #else
00084
00085
00086
00087 typedef int main_t;
00088 #define OS_END while(1)
00089 #define OS_ITERATE
00090 #endif
00091
00092
00093
00094
00095 struct stTimer {
00096 void (*pfn)(void);
00097 uint32 u32_period;
00098 uint32 u32_cntDown;
00099 };
00100
00101
00105 #define ESOS_USER_FLAG_0 BIT0
00106
00109 #define ESOS_USER_FLAG_1 BIT1
00110
00113 #define ESOS_USER_FLAG_2 BIT2
00114
00117 #define ESOS_USER_FLAG_3 BIT3
00118
00121 #define ESOS_USER_FLAG_4 BIT4
00122
00125 #define ESOS_USER_FLAG_5 BIT5
00126
00129 #define ESOS_USER_FLAG_6 BIT6
00130
00133 #define ESOS_USER_FLAG_7 BIT7
00134
00137 #define ESOS_USER_FLAG_8 BIT8
00138
00141 #define ESOS_USER_FLAG_9 BIT9
00142
00145 #define ESOS_USER_FLAG_A BIT10
00146
00149 #define ESOS_USER_FLAG_B BIT11
00150
00153 #define ESOS_USER_FLAG_C BIT12
00154
00157 #define ESOS_USER_FLAG_D BIT13
00158
00161 #define ESOS_USER_FLAG_E BIT14
00162
00165 #define ESOS_USER_FLAG_F BIT15
00166
00167
00180 #define ESOS_USER_TIMER(timername) void timername(void)
00181
00193 typedef uint8 ESOS_TMR_HANDLE;
00194
00195
00196
00197
00198
00229 void user_init( void );
00230 ESOS_TASK_HANDLE esos_RegisterTask( uint8 (*pfn_TaskFcn)(struct stTask *pst_Task) );
00231 uint8 esos_UnregisterTask( uint8 (*pfn_TaskFcn)(struct stTask *pst_Task) ) ;
00232 ESOS_TASK_HANDLE esos_GetFreeChildTaskStruct();
00233 uint32 esos_GetRandomUint32();
00234
00235
00236 ESOS_TMR_HANDLE esos_RegisterTimer( void (*pfnTmrFcn)(void), uint32 u32_period );
00237 uint8 esos_UnregisterTimer( ESOS_TMR_HANDLE hnd_timer );
00238 ESOS_TMR_HANDLE esos_GetTimerHandle( void (*pfnTmrFcn)(void) );
00239 uint8 esos_ChangeTimerPeriod( ESOS_TMR_HANDLE hnd_timer, uint32 u32_period );
00240
00241
00242 void __esos_hw_InitSystemTick(void);
00243 uint32 __esos_hw_GetSystemTickCount(void);
00244
00256 #define esos_GetSystemTick() __esos_hw_GetSystemTickCount()
00257 uint16 __esos_hasTickDurationPassed(uint32 u32_startTick, uint32 u32_period);
00258 void __esos_tmrSvcsExecute(void);
00259
00260 void __esos_InitCommSystem(void);
00261
00262
00263
00264
00265
00266
00267 extern uint8 __esos_u8UserTasksRegistered;
00268 extern uint16 __esos_u16UserFlags, __esos_u16SystemFlags;
00269
00279 #define esos_GetNumberRegisteredTasks() (__esos_u8UserTasksRegistered)
00280
00290 #define esos_GetFutureSystemTick(deltaT) ((uint32)(deltaT) + __esos_hw_GetSystemTickCount());
00291
00308 #define esos_SetUserFlag(mask) BIT_SET_MASK(__esos_u16UserFlags, (mask))
00309
00328 #define esos_ClearUserFlag(mask) BIT_CLEAR_MASK(__esos_u16UserFlags, (mask))
00329
00350 #define esos_IsUserFlagSet(mask) IS_BIT_SET_MASK(__esos_u16UserFlags, (mask))
00351
00372 #define esos_IsUserFlagClear(mask) IS_BIT_CLEAR_MASK(__esos_u16UserFlags, (mask))
00373
00374
00375
00376 #define __esos_SetSystemFlag(mask) BIT_SET_MASK(__esos_u16SystemFlags, (mask))
00377 #define __esos_ClearSystemFlag(mask) BIT_CLEAR_MASK(__esos_u16SystemFlags, (mask))
00378 #define __esos_IsSystemFlagSet(mask) IS_BIT_SET_MASK(__esos_u16SystemFlags, (mask))
00379 #define __esos_IsSystemFlagClear(mask) IS_BIT_CLEAR_MASK(__esos_u16SystemFlags, (mask))
00380
00381
00382 #define ESOS_TMR_FAILURE 0xFF
00383 #define MAX_NUM_TMRS 16
00384
00391 #define esos_GetNumberRunningTimers() (__esos_u8TmrSvcsRegistered)
00392
00404 #define esos_IsTimerRunning(hndl) IS_BIT_SET_MASK(__esos_u16TmrActiveFlags, (BIT0<<(hndl)))
00405 #define __esos_MarkTimerRunning(hndl) BIT_SET_MASK(__esos_u16TmrActiveFlags, (BIT0<<(hndl)))
00406 #define __esos_MarkTimerStopped(hndl) BIT_CLEAR_MASK(__esos_u16TmrActiveFlags, (BIT0<<(hndl)))
00407
00408
00409
00410 #define __ESOS_SYS_FLAG_PACK_TASKS BIT0
00411 #define __ESOS_SYS_FLAG_NULL_LAST_TASK BIT1
00412 #define __ESOS_SYS_COMM_TX_IS_BUSY BIT2
00413 #define __ESOS_SYS_COMM_RX_IS_BUSY BIT3
00414
00415
00416 #define __abs(x) (((x) < 0) ? -(x) : (x))
00417
00418 #endif // ESOS_H