00001 #ifndef __CPHIDGETINTERFACEKIT
00002 #define __CPHIDGETINTERFACEKIT
00003 #include "cphidget.h"
00004
00011 DPHANDLE(InterfaceKit)
00012 CHDRSTANDARD(InterfaceKit)
00013
00019 CHDRGET(InterfaceKit, InputCount, int *count)
00026 CHDRGETINDEX(InterfaceKit, InputState, int *inputState)
00033 CHDREVENTINDEX(InterfaceKit, InputChange, int inputState)
00034
00040 CHDRGET(InterfaceKit, OutputCount, int *count)
00047 CHDRGETINDEX(InterfaceKit, OutputState, int *outputState)
00054 CHDRSETINDEX(InterfaceKit, OutputState, int outputState)
00061 CHDREVENTINDEX(InterfaceKit, OutputChange, int outputState)
00062
00068 CHDRGET(InterfaceKit, SensorCount, int *count)
00075 CHDRGETINDEX(InterfaceKit, SensorValue, int *sensorValue)
00082 CHDRGETINDEX(InterfaceKit, SensorRawValue, int *sensorRawValue)
00089 CHDREVENTINDEX(InterfaceKit, SensorChange, int sensorValue)
00096 CHDRGETINDEX(InterfaceKit, SensorChangeTrigger, int *trigger)
00103 CHDRSETINDEX(InterfaceKit, SensorChangeTrigger, int trigger)
00109 CHDRGET(InterfaceKit, Ratiometric, int *ratiometric)
00115 CHDRSET(InterfaceKit, Ratiometric, int ratiometric)
00116
00117
00118
00125 CHDRGETINDEX(InterfaceKit, DataRate, int *milliseconds)
00132 CHDRSETINDEX(InterfaceKit, DataRate, int milliseconds)
00139 CHDRGETINDEX(InterfaceKit, DataRateMax, int *max)
00146 CHDRGETINDEX(InterfaceKit, DataRateMin, int *min)
00147
00148 #ifndef REMOVE_DEPRECATED
00149 DEP_CHDRGET("Deprecated - use CPhidgetInterfaceKit_getInputCount",InterfaceKit, NumInputs, int *)
00150 DEP_CHDRGET("Deprecated - use CPhidgetInterfaceKit_getOutputCount",InterfaceKit, NumOutputs, int *)
00151 DEP_CHDRGET("Deprecated - use CPhidgetInterfaceKit_getSensorCount",InterfaceKit, NumSensors, int *)
00152 #endif
00153
00154 #ifndef EXTERNALPROTO
00155 #define IFKIT_MAXINPUTS 32
00156 #define IFKIT_MAXOUTPUTS 32
00157 #define IFKIT_MAXSENSORS 8
00158
00159 #define IFKIT_MAXSENSORCHANGE 1000 //BL: Had to check for this, might as well use a define
00160
00161
00162 #define IFKIT_MAX_DATA_PER_PACKET 16
00163
00164 #define IFKIT_MAX_DATA_RATE 1
00165
00166 #define IFKIT_MIN_DATA_RATE 1000
00167
00168 #define IFKIT_DATA_BUFFER_SIZE ((IFKIT_MIN_DATA_RATE + 200)/IFKIT_MAX_DATA_RATE)
00169
00170 struct _CPhidgetInterfaceKit {
00171 CPhidget phid;
00172
00173 int (CCONV *fptrOutputChange)(CPhidgetInterfaceKitHandle, void *, int, int);
00174 int (CCONV *fptrInputChange)(CPhidgetInterfaceKitHandle, void *, int, int);
00175 int (CCONV *fptrSensorChange)(CPhidgetInterfaceKitHandle, void *, int, int);
00176
00177 void *fptrOutputChangeptr;
00178 void *fptrInputChangeptr;
00179 void *fptrSensorChangeptr;
00180
00181 unsigned char ratiometric;
00182 unsigned char ratiometricEcho;
00183 unsigned char ratiometricSwitching;
00184
00185
00186 unsigned char outputStates[IFKIT_MAXOUTPUTS];
00187 unsigned char nextOutputStates[IFKIT_MAXOUTPUTS];
00188 unsigned char changedOutputs[IFKIT_MAXOUTPUTS];
00189 int lastChangedOutput;
00190
00191 unsigned char outputEchoStates[IFKIT_MAXOUTPUTS];
00192 unsigned char physicalState[IFKIT_MAXINPUTS];
00193
00194 int sensorChangeTrigger[IFKIT_MAXSENSORS];
00195 int sensorRawValue[IFKIT_MAXSENSORS];
00196 int sensorValue[IFKIT_MAXSENSORS];
00197 int sensorLastValue[IFKIT_MAXSENSORS];
00198
00199 int sensorRawValueAccumulator[IFKIT_MAXSENSORS];
00200 int sensorRawValueAccumulatorCount[IFKIT_MAXSENSORS];
00201
00202 int dataRate[IFKIT_MAXSENSORS];
00203 int interruptRate;
00204 int dataRateMax, dataRateMin;
00205
00206 int lastPacketCount;
00207 int maxDataPerPacket;
00208
00209 int dataSinceAttach;
00210
00211 CPhidget_EventMode eventMode[IFKIT_MAXSENSORS];
00212
00213 unsigned char fullStateEcho;
00214 } typedef CPhidgetInterfaceKitInfo;
00215 #endif
00216
00219 #endif