cphidgetir.h
Go to the documentation of this file.
00001 #ifndef __CPHIDGETIR
00002 #define __CPHIDGETIR
00003 #include "cphidget.h"
00004 
00011 DPHANDLE(IR)
00012 CHDRSTANDARD(IR)
00013 
00014 //This needs to be evenly divisible by 8
00015 #define IR_MAX_CODE_BIT_COUNT           128                                                     
00016 #define IR_MAX_CODE_DATA_LENGTH         (IR_MAX_CODE_BIT_COUNT / 8)     
00017 #define IR_MAX_REPEAT_LENGTH            26                                                      
00022 typedef enum {
00023         PHIDGET_IR_ENCODING_UNKNOWN = 1,        
00024         PHIDGET_IR_ENCODING_SPACE,                      
00025         PHIDGET_IR_ENCODING_PULSE,                      
00026         PHIDGET_IR_ENCODING_BIPHASE,            
00027         PHIDGET_IR_ENCODING_RC5,                        
00028         PHIDGET_IR_ENCODING_RC6                         
00029 } CPhidgetIR_Encoding;
00030 
00034 typedef enum {
00035         PHIDGET_IR_LENGTH_UNKNOWN = 1,  
00036         PHIDGET_IR_LENGTH_CONSTANT,             
00037         PHIDGET_IR_LENGTH_VARIABLE              
00038 } CPhidgetIR_Length;
00039 
00040 //If you modify this, it's NEEDS to be modified in .NET and Flash!!!
00045 typedef struct _CPhidgetIR_CodeInfo
00046 {
00047         int                                             bitCount;       
00048         CPhidgetIR_Encoding             encoding;       
00049         CPhidgetIR_Length               length;         
00050         int                     gap;            
00051         int                     trail;          
00052         int                     header[2];      
00053         int                     one[2];         
00054         int                     zero[2];        
00055         int                     repeat[IR_MAX_REPEAT_LENGTH];   
00056         int                                             min_repeat;     
00057         unsigned char                   toggle_mask[IR_MAX_CODE_DATA_LENGTH];   
00058         int                                             carrierFrequency;       
00059         int                                             dutyCycle;      
00060 } CPhidgetIR_CodeInfo, *CPhidgetIR_CodeInfoHandle;
00061 
00068 PHIDGET21_API int CCONV CPhidgetIR_Transmit(CPhidgetIRHandle phid, unsigned char *data, CPhidgetIR_CodeInfoHandle codeInfo);
00074 PHIDGET21_API int CCONV CPhidgetIR_TransmitRepeat(CPhidgetIRHandle phid);
00084 PHIDGET21_API int CCONV CPhidgetIR_TransmitRaw(CPhidgetIRHandle phid, int *data, int length, int carrierFrequency, int dutyCycle, int gap);
00091 PHIDGET21_API int CCONV CPhidgetIR_getRawData(CPhidgetIRHandle phid, int *data, int *dataLength);
00099 PHIDGET21_API int CCONV CPhidgetIR_getLastCode(CPhidgetIRHandle phid, unsigned char *data, int *dataLength, int *bitCount);
00107 PHIDGET21_API int CCONV CPhidgetIR_getLastLearnedCode(CPhidgetIRHandle phid, unsigned char *data, int *dataLength, CPhidgetIR_CodeInfo *codeInfo);
00116 CHDREVENT(IR, Code, unsigned char *data, int dataLength, int bitCount, int repeat)
00124 CHDREVENT(IR, Learn, unsigned char *data, int dataLength, CPhidgetIR_CodeInfoHandle codeInfo)
00131 CHDREVENT(IR, RawData, int *data, int dataLength)
00132 
00133 #ifndef EXTERNALPROTO
00134 PHIDGET21_API int CCONV codeInfoToString(CPhidgetIR_CodeInfoHandle codeInfo, char *string);
00135 PHIDGET21_API int CCONV stringToCodeInfo(char *string, CPhidgetIR_CodeInfoHandle codeInfo);
00136 
00137 #define IR_MAX_DATA_PER_PACKET  31
00138 
00139 #define IR_DATA_ARRAY_SIZE              2048
00140 #define IR_DATA_ARRAY_MASK              0x7ff
00141 
00142 //for transmitting / receiving raw data
00143 #define IR_MAX_DATA_us                  327670
00144 
00145 //this is just actual gap, not the gap that includes data
00146 #define IR_MAX_GAP_LENGTH               100000 //us
00147 #define IR_MIN_GAP_LENGTH               20000 //us
00148 
00149 #define IR_DEFINEDATA_PACKET    0
00150 
00151 #define IR_STOP_RX_WHILE_TX_FLAG        0x01
00152 
00153 #define IR_RAW_DATA_WS_KEYS_MAX         100
00154 
00155 struct _CPhidgetIR {
00156         CPhidget phid;
00157 
00158         int (CCONV *fptrCode)(CPhidgetIRHandle, void *, unsigned char *, int, int, int);        //data, length, bitCount, repeat
00159         int (CCONV *fptrRawData)(CPhidgetIRHandle, void *, int *, int);
00160         int (CCONV *fptrLearn)(CPhidgetIRHandle, void *, unsigned char *, int, CPhidgetIR_CodeInfoHandle); //needs > 1 sec. of continuous data - for learning
00161 
00162         void *fptrCodeptr;
00163         void *fptrRawDataptr;
00164         void *fptrLearnptr;
00165 
00166         int dataBuffer[IR_DATA_ARRAY_SIZE];
00167         int dataBufferNormalized[IR_DATA_ARRAY_SIZE];
00168         int dataReadPtr, dataWritePtr;
00169         int userReadPtr; //for the getRawData function
00170         int learnReadPtr; //for the learning function
00171 
00172         unsigned char polarity;
00173 
00174         unsigned char lastCodeKnown;
00175         unsigned char lastCode[IR_MAX_CODE_BIT_COUNT/8];
00176         CPhidgetIR_CodeInfo lastCodeInfo;
00177         unsigned char lastRepeat;
00178         int lastGap;
00179         
00180         unsigned char lastLearnedCodeKnown;
00181         unsigned char lastLearnedCode[IR_MAX_CODE_BIT_COUNT/8];
00182         CPhidgetIR_CodeInfo lastLearnedCodeInfo;
00183 
00184         unsigned char lastSentCode[IR_MAX_CODE_BIT_COUNT/8];
00185         CPhidgetIR_CodeInfo lastSentCodeInfo;
00186 
00187         TIME    lastDataTime;
00188 
00189         unsigned char delayCode;
00190 
00191         char *tempString;
00192         int flip;
00193 
00194         int rawDataSendWSCounter, rawDataSendWSKeys[IR_RAW_DATA_WS_KEYS_MAX];
00195 
00196         unsigned char outputPacket[MAX_OUT_PACKET_SIZE];
00197         unsigned int outputPacketLen;
00198 } typedef CPhidgetIRInfo;
00199 #endif
00200 
00203 #endif


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