TRC Library for FTC (2011) 2011
TRC Library Code Project

C:/Users/Michael/Ftc/2011/code/trclib/timer.h

Go to the documentation of this file.
00001 #if 0
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 #endif
00014 
00015 #ifndef _TIMER_H
00016 #define _TIMER_H
00017 
00018 #pragma systemFile
00019 
00020 #ifdef MOD_ID
00021     #undef MOD_ID
00022 #endif
00023 #define MOD_ID                  MOD_TIMER
00024 
00025 //
00026 // Constants.
00027 //
00028 #define TIMERF_USER_MASK        0x00ff
00029 #define TIMERF_ENABLED          0x0100
00030 #define TIMERF_ENABLE_EVENTS    0x0001
00031 
00032 //
00033 // Type definitions.
00034 //
00035 typedef struct
00036 {
00037     long expiredTime;
00038     int  timerFlags;
00039 } TIMER;
00040 
00041 //
00042 // Import function prototypes.
00043 //
00044 void
00045 TimerEvent(
00046     __in TIMER &timer
00047     );
00048 
00055 void
00056 TimerInit(
00057     __out TIMER &timer,
00058     __in  int timerFlags
00059     )
00060 {
00061     TFuncName("TimerInit");
00062     TLevel(INIT);
00063     TEnter();
00064 
00065     timer.expiredTime = 0;
00066     timer.timerFlags = timerFlags & TIMERF_USER_MASK;
00067 
00068     TExit();
00069     return;
00070 }   //TimerInit
00071 
00078 void
00079 TimerSet(
00080     __out TIMER &timer,
00081     __in  int time
00082     )
00083 {
00084     TFuncName("TimerSet");
00085     TLevel(API);
00086 
00087     timer.expiredTime = (long)nPgmTime + time;
00088     timer.timerFlags |= TIMERF_ENABLED;
00089 
00090     TExit();
00091     return;
00092 }   //TimerSet
00093 
00099 void
00100 TimerReset(
00101     __out TIMER &timer
00102     )
00103 {
00104     TFuncName("TimerReset");
00105     TLevel(API);
00106 
00107     timer.expiredTime = 0;
00108     timer.timerFlags &= TIMERF_USER_MASK;
00109 
00110     TExit();
00111     return;
00112 }   //TimerReset
00113 
00119 void
00120 TimerTask(
00121     __inout TIMER &timer
00122     )
00123 {
00124     TFuncName("TimerTask");
00125     TLevel(TASK);
00126     TEnter();
00127 
00128     if ((timer.timerFlags & TIMERF_ENABLE_EVENTS) &&
00129         ((long)nPgmTime >= timer.expiredTime))
00130     {
00131         timer.timerFlags &= ~TIMERF_ENABLED;
00132         TimerEvent(timer);
00133     }
00134 
00135     TExit();
00136     return;
00137 }   //TimerTask
00138 
00139 #endif  //ifndef _TIMER_H
 All Data Structures Files Functions Variables Defines