Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #if !defined(_FEDM_ISC_TAG_HANDLER_ISO14443_4_H_INCLUDED_)
00035 #define _FEDM_ISC_TAG_HANDLER_ISO14443_4_H_INCLUDED_
00036
00037 #if !defined(_FEDM_NO_TAG_HANDLER_ISO14443)
00038
00039 #include "../../FEDM.h"
00040 #include "FedmIscTagHandler_ISO14443_3.h"
00041
00042
00043 #define FEDM_ISO14443_4_APDU_BUFFER_SIZE 2048
00044
00045
00046 class FEDM_ISOTabItem;
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00069 class _FEDM_ISC_CORE_EXT_CLASS FedmIscTagHandler_ISO14443_4 : public FedmIscTagHandler_ISO14443_3
00070 {
00071 public:
00072
00073
00074 friend class FEDM_ISCReaderModule;
00075 friend class FEDM_ISCReader;
00076 friend class FEDM_ISOTabItem;
00077
00082 virtual void Init();
00083
00088 void SetCID(unsigned char ucCID);
00089
00097 int EnableCID(bool bEnable);
00098
00104 unsigned char GetCID();
00105
00111 bool IsCIDEnabled();
00112
00117 void SetNAD(unsigned char ucNAD);
00118
00126 int EnableNAD(bool bEnable);
00127
00133 unsigned char GetNAD();
00134
00140 bool IsNADEnabled();
00141
00142
00162 int Apdu( unsigned char* pucRequestData,
00163 unsigned int iRequestLen,
00164 unsigned char* pucResponseData,
00165 unsigned int uiResponseBufferLen,
00166 unsigned int& uiResponseLen );
00167
00183 int Apdu( unsigned char* pucRequestData,
00184 unsigned int iRequestLen,
00185 void* pAny,
00186 void (*cbFct)(void*, int, int, int) );
00187
00197 int Ping();
00198
00208 int Deselect();
00209
00225 int GetTransponderInfo( unsigned char& ucFSCI,
00226 unsigned char& ucFWI,
00227 unsigned char& ucDSI,
00228 unsigned char& ucDRI,
00229 unsigned char& ucNADSupport,
00230 unsigned char& ucCIDSupport );
00231
00232
00233 static void ApduCallback(void* pAny, int iApduHnd, int iError, int iDataLength);
00234
00240 unsigned char GetLastISOErrorCode();
00241
00253 int GetResponseData( unsigned char* pucResponseData,
00254 unsigned int uiResponseBufferLen,
00255 unsigned int& uiResponseLen );
00256
00257
00258 protected:
00259
00260 FedmIscTagHandler_ISO14443_4(FEDM_ISCReader* pReader, FEDM_ISOTabItem* pTabItem);
00261
00262 FedmIscTagHandler_ISO14443_4(FEDM_ISCReader* pReader, unsigned int uiTagHandlerType, FEDM_ISOTabItem* pTabItem);
00263
00264 virtual ~FedmIscTagHandler_ISO14443_4();
00265
00266 unsigned char m_ucCID;
00267 unsigned char m_ucNAD;
00268 bool m_bUseCID;
00269 bool m_bUseNAD;
00270
00271 int m_iFetclHnd;
00272
00273
00274 void (*m_cbFct)(void*, int, int, int);
00275 void* m_pAny;
00276
00277 unsigned char m_ucISO14443ErrorCode;
00278
00279
00280 unsigned char m_ucRequestData[FEDM_ISO14443_4_APDU_BUFFER_SIZE];
00281 unsigned char m_ucResponseData[FEDM_ISO14443_4_APDU_BUFFER_SIZE];
00282 unsigned int m_uiResponseLen;
00283 };
00284
00285 #endif // #if !defined(_FEDM_NO_TAG_HANDLER_ISO14443)
00286
00287 #endif // !defined(_FEDM_ISC_TAG_HANDLER_ISO14443_4_H_INCLUDED_)