cphidgetrfid.h
Go to the documentation of this file.
00001 #ifndef __CPHIDGETRFID
00002 #define __CPHIDGETRFID
00003 #include "cphidget.h"
00004 
00011 DPHANDLE(RFID)
00012 CHDRSTANDARD(RFID)
00013 
00014 #ifdef DEBUG
00015 #define RFID_HITAGS_SUPPORT
00016 #define RFID_RAWDATA_API_SUPPORT
00017 #endif
00018 
00022 typedef enum {
00023         PHIDGET_RFID_PROTOCOL_EM4100 = 1,               
00024         PHIDGET_RFID_PROTOCOL_ISO11785_FDX_B,   
00025         PHIDGET_RFID_PROTOCOL_PHIDGETS,                 
00026 #ifdef RFID_HITAGS_SUPPORT
00027         PHIDGET_RFID_PROTOCOL_HITAGS_UID                
00028 #endif
00029 } CPhidgetRFID_Protocol;
00030 
00036 CHDRGET(RFID,OutputCount,int *count)
00043 CHDRGETINDEX(RFID,OutputState,int *outputState)
00050 CHDRSETINDEX(RFID,OutputState,int outputState)
00057 CHDREVENTINDEX(RFID,OutputChange,int outputState)
00058 
00059 
00064 CHDRGET(RFID,AntennaOn,int *antennaState)
00070 CHDRSET(RFID,AntennaOn,int antennaState)
00076 CHDRGET(RFID,LEDOn,int *LEDState)
00082 CHDRSET(RFID,LEDOn,int LEDState)
00083 
00084 
00090 CHDRGET(RFID,LastTag2,char **tagString, CPhidgetRFID_Protocol *protocol)
00096 CHDRGET(RFID,TagStatus,int *status)
00097 
00098 
00108 PHIDGET21_API int CCONV CPhidgetRFID_write(CPhidgetRFIDHandle phid, char *tagString, CPhidgetRFID_Protocol protocol, int lock);
00109 
00116 CHDREVENT(RFID, Tag2, char *tagString, CPhidgetRFID_Protocol protocol)
00123 CHDREVENT(RFID, TagLost2, char *tagString, CPhidgetRFID_Protocol protocol)
00124 
00125 #ifndef REMOVE_DEPRECATED
00126 DEP_CHDRGET("Deprecated - use CPhidgetRFID_getOutputCount",RFID,NumOutputs,int *)
00127 DEP_CHDRGET("Deprecated - use CPhidgetRFID_getLastTag2",RFID,LastTag,unsigned char *tag)
00128 DEP_CHDREVENT("Deprecated - use CPhidgetRFID_set_OnTag2_Handler",RFID,Tag,unsigned char *tag)
00129 DEP_CHDREVENT("Deprecated - use CPhidgetRFID_set_OnTagLost2_Handler",RFID,TagLost,unsigned char *tag)
00130 #endif
00131 
00132 /* Keep these hidden - unofficial API, not supported. */
00133 #if !defined(EXTERNALPROTO) || defined(RFID_HITAGS_SUPPORT)
00134 /* poll for HiTag S tags */
00135 CHDRSET(RFID,PollingOn,int pollingState)
00136 #endif
00137 #if !defined(EXTERNALPROTO) || defined(RFID_RAWDATA_API_SUPPORT)
00138 /* Write raw data to a tag */
00139 PHIDGET21_API int CCONV CPhidgetRFID_writeRaw(CPhidgetRFIDHandle phid, unsigned char *data, int bitlength, int pregap, int space, int postgap, int zero, int one, int prepulse, int eof, int listenDuringEOF);
00140 /* Read in raw data from tags */
00141 PHIDGET21_API int CCONV CPhidgetRFID_getRawData(CPhidgetRFIDHandle phid, int *data, int *dataLength);
00142 /* Raw data event */
00143 CHDREVENT(RFID, RawData, int *data, int dataLength)
00144 /* Manchester data event */
00145 CHDREVENT(RFID, ManchesterData, unsigned char *data, int dataLength)
00146 #endif
00147 
00148 #ifndef EXTERNALPROTO
00149 
00150 #define RFID_PACKET_TAG 0
00151 #define RFID_PACKET_OUTPUT_ECHO 1
00152 
00153 #define RFID_LED_FLAG 0x04
00154 #define RFID_ANTENNA_FLAG 0x08
00155 #define RFID_LISTEN_DURING_EOF_FLAG 0x10
00156 
00157 #define RFID_WRITE_DATA_OUT_PACKET      0x00
00158 #define RFID_CONTROL_OUT_PACKET         0x40
00159 
00160 #define RFID_READ_DATA_IN_PACKET        0x00
00161 #define RFID_ECHO_IN_PACKET                     0x40
00162 
00163 #define RFID_MAX_DATA_PER_PACKET        63
00164 
00165 #define RFID_DATA_ARRAY_SIZE            1024
00166 #define RFID_DATA_ARRAY_MASK            0x3ff
00167 
00168 #define RFID_MAXOUTPUTS 2
00169 
00170 
00171 /* 4097 constants */
00172 #define RFID_4097_AmpDemod              0x00    //Amplitude demodulation
00173 #define RFID_4097_PhaseDemod    0x01    //Phase demodulation
00174 
00175 #define RFID_4097_PowerDown             0x00
00176 #define RFID_4097_Active                0x02
00177 
00178 #define RFID_4097_DataOut               0x00    //DATA_OUT is data from the rfid card
00179 #define RFID_4097_ClkOut                0x04    //DATA_OUT is the internal clock/32
00180 
00181 #define RFID_4097_IntPLL                0x00
00182 #define RFID_4097_ExtClk                0x08
00183 
00184 #define RFID_4097_FastStart             0x10
00185 
00186 #define RFID_4097_Gain960               0x40
00187 #define RFID_4097_Gain480               0x00
00188 #define RFID_4097_Gain240               0x60
00189 #define RFID_4097_Gain120               0x20
00190 
00191 #define RFID_4097_TestMode              0x80
00192 
00193 #define RFID_4097_DefaultON             (RFID_4097_AmpDemod | RFID_4097_Active | RFID_4097_DataOut | RFID_4097_IntPLL | RFID_4097_FastStart | RFID_4097_Gain960)
00194 
00195 
00196 /* T5577 Write Timing Constants */
00197 #define RFID_T5577_StartGap 30
00198 #define RFID_T5577_WriteGap 15
00199 #define RFID_T5577_EndGap 15
00200 #define RFID_T5577_Zero 24
00201 #define RFID_T5577_One 56
00202 #define RFID_T5577_EOF 100
00203 #define RFID_T5577_PrePulse (136 + RFID_T5577_Zero)
00204 
00205 #ifdef RFID_HITAGS_SUPPORT
00206 typedef enum {
00207         PHIDGET_RFID_TAG_READONLY = 1,
00208         PHIDGET_RFID_TAG_HITAGS
00209 } CPhidgetRFID_TagType;
00210 #endif
00211 
00212 typedef enum {
00213         PHIDGET_RFID_ENCODING_MANCHESTER = 1,
00214         PHIDGET_RFID_ENCODING_BIPHASE,
00215 #ifdef RFID_HITAGS_SUPPORT
00216         PHIDGET_RFID_ENCODING_AC
00217 #endif
00218 } CPhidgetRFID_Encoding;
00219 
00220 #define RFID_MAX_TAG_STRING_LEN 25
00221 typedef struct _CPhidgetRFID_Tag
00222 {
00223         CPhidgetRFID_Protocol protocol;
00224         char tagString[RFID_MAX_TAG_STRING_LEN];
00225         unsigned char tagData[10]; //used for old EM4100 events
00226 #ifdef RFID_HITAGS_SUPPORT
00227         CPhidgetRFID_TagType tagType;
00228 #endif
00229 } CPhidgetRFID_Tag, *CPhidgetRFID_TagHandle;
00230 
00231 struct _CPhidgetRFID {
00232         CPhidget phid;
00233 
00234         int (CCONV *fptrOutputChange)(CPhidgetRFIDHandle, void *, int, int);
00235         int (CCONV *fptrTag)(CPhidgetRFIDHandle, void *, unsigned char *);
00236         int (CCONV *fptrTagLost)(CPhidgetRFIDHandle, void *, unsigned char *);
00237         int (CCONV *fptrTag2)(CPhidgetRFIDHandle, void *, char *, CPhidgetRFID_Protocol);
00238         int (CCONV *fptrTagLost2)(CPhidgetRFIDHandle, void *, char *, CPhidgetRFID_Protocol);
00239 
00240         void *fptrOutputChangeptr;
00241         void *fptrTagptr;
00242         void *fptrTagLostptr;
00243         void *fptrTag2ptr;
00244         void *fptrTagLost2ptr;
00245         
00246 #ifdef RFID_RAWDATA_API_SUPPORT
00247         int (CCONV *fptrRawData)(CPhidgetRFIDHandle, void *, int *, int);
00248         int (CCONV *fptrManchesterData)(CPhidgetRFIDHandle, void *, unsigned char *, int);
00249         void *fptrRawDataptr;
00250         void *fptrManchesterDataptr;
00251 #endif
00252 
00253         /* State */
00254         unsigned char outputEchoState[RFID_MAXOUTPUTS];
00255         unsigned char antennaEchoState;
00256         unsigned char ledEchoState;
00257         int spaceClocks, pregapClocks, postgapClocks, oneClocks, zeroClocks, prepulseClocks, eofpulseClocks;
00258         unsigned char listenDuringEOF;
00259         int _4097Conf;
00260 
00261         /* State Echo */
00262         unsigned char outputState[RFID_MAXOUTPUTS];
00263         unsigned char antennaState;
00264         unsigned char ledState;
00265         int spaceClocksEcho, pregapClocksEcho, postgapClocksEcho, oneClocksEcho, zeroClocksEcho, prepulseClocksEcho, eofpulseClocksEcho;
00266         unsigned char listenDuringEOFEcho;
00267         int _4097ConfEcho;
00268 
00269         unsigned char fullStateEcho;
00270 
00271         CThread tagTimerThread;
00272         CThread_mutex_t tagthreadlock; /* protects tag thread access to things */
00273         EVENT tagAvailableEvent;
00274 
00275         /* Tag event */
00276         CPhidgetRFID_Tag lastTag;
00277         unsigned char lastTagValid;
00278         TIME lastTagTime;
00279         unsigned char tagPresent;
00280         CPhidgetRFID_Tag pendingTag;
00281         unsigned char tagEventPending;
00282 
00283         /* Raw data buffer */
00284         int dataBuffer[RFID_DATA_ARRAY_SIZE];
00285         unsigned int dataReadPtr, dataWritePtr;
00286         
00287         int shortClocks, longClocks;
00288 
00289         /* Manchester decoder */
00290         unsigned char manBuffer[RFID_DATA_ARRAY_SIZE];
00291         int manReadPtr, manWritePtr;
00292         unsigned char manLockedIn;
00293         unsigned char manShortChange;
00294 
00295         /* BiPhase Decoder */
00296         unsigned char biphaseBuffer[RFID_DATA_ARRAY_SIZE];
00297         int biphaseReadPtr, biphaseWritePtr;
00298         unsigned char biphaseLockedIn;
00299         unsigned char biphaseShortChange;
00300 
00301 #ifdef RFID_HITAGS_SUPPORT
00302         TIME lastDataTime;
00303         unsigned int dataReadACPtr;
00304         TIME hitagReqTime;
00305         unsigned char polling;
00306         unsigned char ACCodingOK;
00307 #endif
00308 #ifdef RFID_RAWDATA_API_SUPPORT
00309         unsigned int userReadPtr;
00310         int manEventReadPtr;
00311         unsigned char lastManEventLong;
00312 #endif
00313 
00314         //for remote write
00315         char *remoteWrite;
00316 
00317         unsigned char outputPacket[MAX_OUT_PACKET_SIZE];
00318         unsigned int outputPacketLen;
00319 
00320 } typedef CPhidgetRFIDInfo;
00321 #endif
00322 
00325 #endif


pedal_monitor
Author(s): Pedro Mendes
autogenerated on Fri Jun 6 2014 18:37:20