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

C:/Users/Michael/Ftc/2011/code/trclib/touch.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 _TOUCH_H
00016 #define _TOUCH_H
00017 
00018 #include "..\HTDriversV1.6\drivers\LEGOTS-driver.h"
00019 
00020 #pragma systemFile
00021 
00022 #ifdef MOD_ID
00023     #undef MOD_ID
00024 #endif
00025 #define MOD_ID                  MOD_TOUCH
00026 
00027 //
00028 // Constants.
00029 //
00030 #define TOUCHF_USER_MASK        0x00ff
00031 #ifdef HTSMUX_STATUS
00032   #define TOUCHF_HTSMUX         0x0080
00033 #endif
00034 #define TOUCHF_ENABLE_EVENTS    0x0001
00035 
00036 //
00037 // Macros.
00038 //
00039 #ifdef HTSMUX_STATUS
00040     #define TouchGetState(p)    (p.touchFlags & TOUCHF_HTSMUX)? \
00041                                     TSreadState((tMUXSensor)p.sensorID): \
00042                                     TSreadState((tSensors)p.sensorID)
00043 #else
00044     #define TouchGetState(p)    TSreadState((tSensors)p.sensorID)
00045 #endif
00046 
00047 //
00048 // Type definitions.
00049 //
00050 typedef struct
00051 {
00052     int  sensorID;
00053     int  touchFlags;
00054     bool fActive;
00055 } TOUCH;
00056 
00057 //
00058 // Import function prototypes.
00059 //
00060 void
00061 TouchEvent(
00062     __in TOUCH &touch,
00063     __in bool fActive
00064     );
00065 
00073 void
00074 TouchInit(
00075     __out TOUCH &touch,
00076     __in  int sensorID,
00077     __in  int touchFlags
00078     )
00079 {
00080     TFuncName("TouchInit");
00081     TLevel(INIT);
00082     TEnter();
00083 
00084     touch.sensorID = sensorID;
00085     touch.touchFlags = touchFlags & TOUCHF_USER_MASK;
00086     touch.fActive = false;
00087 
00088     TExit();
00089     return;
00090 }   //TouchInit
00091 
00098 void
00099 TouchTask(
00100     __inout TOUCH &touch
00101     )
00102 {
00103     bool fActive;
00104 
00105     TFuncName("TouchTask");
00106     TLevel(TASK);
00107     TEnter();
00108 
00109     if (touch.touchFlags & TOUCHF_ENABLE_EVENTS)
00110     {
00111         fActive = TouchGetState(touch);
00112         if (fActive != touch.fActive)
00113         {
00114             //
00115             // Touch sensor has changed state.
00116             //
00117             TouchEvent(touch, fActive);
00118             touch.fActive = fActive;
00119         }
00120     }
00121 
00122     TExit();
00123     return;
00124 }   //TouchTask
00125 
00126 #endif  //ifndef _TOUCH_H
 All Data Structures Files Functions Variables Defines