FedmIscTagHandler_ISO14443_4_MIFARE_DESFire_Impl_C1.h
Go to the documentation of this file.
00001 /*-------------------------------------------------------
00002 |                                                       |
00003 | FedmIscTagHandler_ISO14443_4_MIFARE_DESFire_Impl_C1.h    |
00004 |                                                       |
00005 ---------------------------------------------------------
00006 
00007 Copyright © 2009-2010   FEIG ELECTRONIC GmbH, All Rights Reserved.
00008                                                 Lange Strasse 4
00009                                                 D-35781 Weilburg
00010                                                 Federal Republic of Germany
00011                                                 phone    : +49 6471 31090
00012                                                 fax      : +49 6471 310999
00013                                                 e-mail   : obid-support@feig.de
00014                                                 Internet : http://www.feig.de
00015                                         
00016 Author                  :       Markus Hultsch
00017 Begin                   :       30.03.2009
00018 
00019 Version                 :       03.02.07 / 27.10.2010 / M. Hultsch
00020 
00021 Operation Systems       :       independent
00022 
00023 Function                        :       implementation class for OBID® classic-pro transponder ISO14443-4 MIFARE DESFire
00024 
00025 NOTE                            :       this class supports only selected mode in Host-Mode
00026 
00027 
00028 Trademarks:
00029 -----------
00030 OBID®, OBID i-scan® and OBID myAXXESS® are registered Trademarks of FEIG ELECTRONIC GmbH
00031 Other Trademarks: see FEDM.h
00032 */
00033 
00034 #if !defined(_FEDM_ISC_TAG_HANDLER_ISO14443_4_MIFARE_DESFIRE_IMPL_C1_H_INCLUDED_)
00035 #define _FEDM_ISC_TAG_HANDLER_ISO14443_4_MIFARE_DESFIRE_IMPL_C1_H_INCLUDED_
00036 
00037 #if !defined(_FEDM_NO_TAG_HANDLER_ISO14443)
00038 
00039 #include <string>
00040 #include "../../FEDM.h"
00041 
00042 
00043 class FedmIscTagHandler_ISO14443_4_MIFARE_DESFire;
00044 class FEDM_ISOTabItem;
00045 
00046 
00047 
00048 //#####################################################################################
00049 // constants
00050 //#####################################################################################
00051 
00052 
00053 
00054 
00055 
00056 //####################################################################
00057 // class FedmIscTagHandler_ISO14443_4_MIFARE_DESFire_Impl_C1
00058 // >> supports only ISO Host Commands <<
00059 //####################################################################
00060 
00061 class FedmIscTagHandler_ISO14443_4_MIFARE_DESFire_Impl_C1 //: public FedmIscTagHandler_ISO14443_4
00062 {
00063 public:
00064         // constructor
00065         FedmIscTagHandler_ISO14443_4_MIFARE_DESFire_Impl_C1(FEDM_ISOTabItem* pTabItem, FedmIscTagHandler_ISO14443_4_MIFARE_DESFire* pParent);
00066         // destructor
00067         virtual ~FedmIscTagHandler_ISO14443_4_MIFARE_DESFire_Impl_C1();
00068 
00069         virtual void Init();                                    // set all data members to 0
00070 
00071         FEDM_ISOTabItem* m_pTabItem;
00072         FedmIscTagHandler_ISO14443_4_MIFARE_DESFire* m_pParent;
00073 
00074 
00075         //####################################################################
00076         // 5 security related commands
00077         
00078         // [0xFA] : [0xC1] DESFire Commands (Authenticate, AuthenticateISO, AuthenticateAES)
00079         int Authenticate(               unsigned int uiApplicationID,
00080                                                         unsigned char ucReaderKeyIndex,
00081                                                         unsigned char ucDESFireKeyNo );
00082         
00083         // [0x54] : [0xC1] DESFire Commands
00084         int ChangeKeySettings(  unsigned int uiApplicationID,
00085                                                         unsigned char ucReaderKeyIndex,
00086                                                         unsigned char ucNewKeySettings );
00087         
00088         // [0x45] : T=CL
00089         int GetKeySettings(             unsigned char* pucResponseData,
00090                                                         unsigned int uiResponseBufferLength,
00091                                                         unsigned int& uiResponseLength );
00092 
00093         // [0xC4] : [0xC1] DESFire Commands
00094         int ChangeKey(                  unsigned int uiApplicationID,
00095                                                         unsigned char ucReaderKeyIndex,
00096                                                         unsigned char ucDESFireKeyNo,
00097                                                         unsigned char ucKeyNoToBeChanged,
00098                                                         unsigned char ucAESNewKeyVersion,
00099                                                         std::string sOldKey,
00100                                                         std::string sNewKey );
00101         
00102         // [0x64] : T=CL
00103         int GetKeyVersion(              unsigned char ucDESFireKeyNo,
00104                                                         unsigned char* pucResponseData,
00105                                                         unsigned int uiResponseBufferLength,
00106                                                         unsigned int& uiResponseLength );
00107 
00108 
00109         //####################################################################
00110         // 10 PICC level commands
00111 
00112         // [0xCA] : T=CL
00113         int CreateApplication(  unsigned int uiApplicationID,
00114                                                         unsigned char ucKeySetting1,
00115                                                         unsigned char ucKeySetting2,
00116                                                         unsigned int uiISOFileID,
00117                                                         std::string sDFName,
00118                                                         unsigned char* pucResponseData,
00119                                                         unsigned int uiResponseBufferLength,
00120                                                         unsigned int& uiResponseLength );
00121         
00122         // [0xDA] : T=CL
00123         int DeleteApplication(  unsigned int uiApplicationID,
00124                                                         unsigned char* pucResponseData,
00125                                                         unsigned int uiResponseBufferLength,
00126                                                         unsigned int& uiResponseLength );
00127         
00128         // [0x6A] : T=CL
00129         int GetApplicationIDs(  unsigned char* pucResponseData,
00130                                                         unsigned int uiResponseBufferLength,
00131                                                         unsigned int& uiResponseLength );
00132 
00133         // [0x6E] : T=CL
00134         int FreeMemory(                 unsigned char* pucResponseData,
00135                                                         unsigned int uiResponseBufferLength,
00136                                                         unsigned int& uiResponseLength );
00137 
00138         // [0x6D] : T=CL
00139         int GetDFNames(                 unsigned char* pucResponseData,
00140                                                         unsigned int uiResponseBufferLength,
00141                                                         unsigned int& uiResponseLength );
00142         
00143         // [0x5A] : T=CL
00144         int SelectApplication(  unsigned int uiApplicationID,
00145                                                         unsigned char* pucResponseData,
00146                                                         unsigned int uiResponseBufferLength,
00147                                                         unsigned int& uiResponseLength );
00148 
00149         // [0xFC] : T=CL
00150         int FormatPICC(                 unsigned char* pucResponseData,
00151                                                         unsigned int uiResponseBufferLength,
00152                                                         unsigned int& uiResponseLength );
00153 
00154         // [0x60] : T=CL
00155         int GetVersion(                 unsigned char* pucResponseData,
00156                                                         unsigned int uiResponseBufferLength,
00157                                                         unsigned int& uiResponseLength );
00158 
00159         // [0x51] : T=CL
00160         int GetCardUID(                 unsigned char* pucResponseData,
00161                                                         unsigned int uiResponseBufferLength,
00162                                                         unsigned int& uiResponseLength );
00163         
00164         // [0x5C] : T=CL
00165         int SetConfiguration(   unsigned char* pucRequestData,
00166                                                         unsigned int uiRequestLength,
00167                                                         unsigned char* pucResponseData,
00168                                                         unsigned int uiResponseBufferLength,
00169                                                         unsigned int& uiResponseLength );
00170 
00171 
00172         //####################################################################
00173         // 10 application level commands
00174 
00175         // [0x5F] : [0xC1] DESFire Commands
00176         int ChangeFileSettings( unsigned int uiApplicationID,
00177                                                         unsigned char ucReaderKeyIndex,
00178                                                         unsigned char ucDESFireKeyNo,
00179                                                         unsigned char ucFileNo,
00180                                                         unsigned char ucNewFileCommSettings,
00181                                                         unsigned char ucNewFileReadWriteAccessRights,
00182                                                         unsigned char ucNewFileChangeAccessRights,
00183                                                         unsigned char ucNewFileReadAccessRights,
00184                                                         unsigned char ucNewFileWriteAccessRights );
00185 
00186         // [0x6F] : T=CL
00187         int GetFileIDs(                 unsigned char* pucResponseData,
00188                                                         unsigned int uiResponseBufferLength,
00189                                                         unsigned int& uiResponseLength );
00190 
00191         // [0xF5] : T=CL
00192         int GetFileSettings(    unsigned char ucFileNo,
00193                                                         unsigned char* pucResponseData,
00194                                                         unsigned int uiResponseBufferLength,
00195                                                         unsigned int& uiResponseLength );
00196 
00197         // [0xCD] : T=CL
00198         int CreateStdDataFile(  unsigned char ucFileNo,
00199                                                         bool bWithISOFileID,
00200                                                         unsigned int uiISOFileID,
00201                                                         unsigned char ucFileCommSettings,
00202                                                         unsigned char ucFileReadWriteAccessRights,
00203                                                         unsigned char ucFileChangeAccessRights,
00204                                                         unsigned char ucFileReadAccessRights,
00205                                                         unsigned char ucFileWriteAccessRights,
00206                                                         unsigned int uiFileSize,
00207                                                         unsigned char* pucResponseData,
00208                                                         unsigned int uiResponseBufferLength,
00209                                                         unsigned int& uiResponseLength );
00210 
00211         // [0xCB] : T=CL
00212         int CreateBackupDataFile(       unsigned char ucFileNo,
00213                                                                 bool bWithISOFileID,
00214                                                                 unsigned int uiISOFileID,
00215                                                                 unsigned char ucFileCommSettings,
00216                                                                 unsigned char ucFileReadWriteAccessRights,
00217                                                                 unsigned char ucFileChangeAccessRights,
00218                                                                 unsigned char ucFileReadAccessRights,
00219                                                                 unsigned char ucFileWriteAccessRights,
00220                                                                 unsigned int uiFileSize,
00221                                                                 unsigned char* pucResponseData,
00222                                                                 unsigned int uiResponseBufferLength,
00223                                                                 unsigned int& uiResponseLength );
00224 
00225         // [0xCC] : T=CL
00226         int CreateValueFile(    unsigned char ucFileNo,
00227                                                         unsigned char ucFileCommSettings,
00228                                                         unsigned char ucFileReadWriteAccessRights,
00229                                                         unsigned char ucFileChangeAccessRights,
00230                                                         unsigned char ucFileReadAccessRights,
00231                                                         unsigned char ucFileWriteAccessRights,
00232                                                         unsigned int uiLowerLimit,
00233                                                         unsigned int uiUpperLimit,
00234                                                         unsigned int uiValue,
00235                                                         unsigned char ucLimitedCreditEnabled,
00236                                                         unsigned char* pucResponseData,
00237                                                         unsigned int uiResponseBufferLength,
00238                                                         unsigned int& uiResponseLength );
00239 
00240         // [0xC1] : T=CL
00241         int CreateLinearRecordFile(     unsigned char ucFileNo,
00242                                                                 bool bWithISOFileID,
00243                                                                 unsigned int uiISOFileID,
00244                                                                 unsigned char ucFileCommSettings,
00245                                                                 unsigned char ucFileReadWriteAccessRights,
00246                                                                 unsigned char ucFileChangeAccessRights,
00247                                                                 unsigned char ucFileReadAccessRights,
00248                                                                 unsigned char ucFileWriteAccessRights,
00249                                                                 unsigned int uiRecordSize,
00250                                                                 unsigned int uiMaxNoOfRecords,
00251                                                                 unsigned char* pucResponseData,
00252                                                                 unsigned int uiResponseBufferLength,
00253                                                                 unsigned int& uiResponseLength );
00254 
00255         // [0xC0] : T=CL
00256         int CreateCyclicRecordFile(     unsigned char ucFileNo,
00257                                                                 bool bWithISOFileID,
00258                                                                 unsigned int uiISOFileID,
00259                                                                 unsigned char ucFileCommSettings,
00260                                                                 unsigned char ucFileReadWriteAccessRights,
00261                                                                 unsigned char ucFileChangeAccessRights,
00262                                                                 unsigned char ucFileReadAccessRights,
00263                                                                 unsigned char ucFileWriteAccessRights,
00264                                                                 unsigned int uiRecordSize,
00265                                                                 unsigned int uiMaxNoOfRecords,
00266                                                                 unsigned char* pucResponseData,
00267                                                                 unsigned int uiResponseBufferLength,
00268                                                                 unsigned int& uiResponseLength );
00269 
00270         // [0xDF] : T=CL
00271         int DeleteFile(                 unsigned char ucFileNo,
00272                                                         unsigned char* pucResponseData,
00273                                                         unsigned int uiResponseBufferLength,
00274                                                         unsigned int& uiResponseLength );
00275 
00276         // [0x61] : T=CL
00277         int GetISOFileIDs(              unsigned char* pucResponseData,
00278                                                         unsigned int uiResponseBufferLength,
00279                                                         unsigned int& uiResponseLength );
00280 
00281 
00282         //####################################################################
00283         // 11 data manipulation commands
00284         
00285         // [0xBD] : [0xC1] DESFire Commands
00286         int ReadStandardData(   unsigned int uiApplicationID,
00287                                                         unsigned char ucReaderKeyIndex,
00288                                                         unsigned char ucDESFireKeyNo,
00289                                                         unsigned char ucFileNo,
00290                                                         unsigned char ucFileCommSettings,
00291                                                         unsigned int uiFileOffset,
00292                                                         unsigned int uiFileLen,
00293                                                         unsigned char* pucFileData );
00294         
00295         // [0x3D] : [0xC1] DESFire Commands
00296         int WriteStandardData(  unsigned int uiApplicationID,
00297                                                         unsigned char ucReaderKeyIndex,
00298                                                         unsigned char ucDESFireKeyNo,
00299                                                         unsigned char ucFileNo,
00300                                                         unsigned char ucFileCommSettings,
00301                                                         unsigned int uiFileOffset,
00302                                                         unsigned int uiFileLen,
00303                                                         unsigned char* pucFileData );
00304 
00305         // [0x6C] : [0xC1] DESFire Commands
00306         int GetValue(                   unsigned int uiApplicationID,
00307                                                         unsigned char ucReaderKeyIndex,
00308                                                         unsigned char ucDESFireKeyNo,
00309                                                         unsigned char ucFileNo,
00310                                                         unsigned char ucFileCommSettings,
00311                                                         unsigned int& uiValue );
00312 
00313         // [0x0C] : [0xC1] DESFire Commands
00314         int Credit(                             unsigned int uiApplicationID,
00315                                                         unsigned char ucReaderKeyIndex,
00316                                                         unsigned char ucDESFireKeyNo,
00317                                                         unsigned char ucFileNo,
00318                                                         unsigned char ucFileCommSettings,
00319                                                         unsigned int uiCreditValue );
00320 
00321         // [0xDC] : [0xC1] DESFire Commands
00322         int Debit(                              unsigned int uiApplicationID,
00323                                                         unsigned char ucReaderKeyIndex,
00324                                                         unsigned char ucDESFireKeyNo,
00325                                                         unsigned char ucFileNo,
00326                                                         unsigned char ucFileCommSettings,
00327                                                         unsigned int uiDebitValue );
00328 
00329 
00330         // [0x1C] : [0xC1] DESFire Commands
00331         int LimitedCredit(              unsigned int uiApplicationID,
00332                                                         unsigned char ucReaderKeyIndex,
00333                                                         unsigned char ucDESFireKeyNo,
00334                                                         unsigned char ucFileNo,
00335                                                         unsigned char ucFileCommSettings,
00336                                                         unsigned int uiCreditValue );
00337 
00338         // [0x3B] : [0xC1] DESFire Commands
00339         int WriteRecord(                unsigned int uiApplicationID,
00340                                                         unsigned char ucReaderKeyIndex,
00341                                                         unsigned char ucDESFireKeyNo,
00342                                                         unsigned char ucFileNo,
00343                                                         unsigned char ucFileCommSettings,
00344                                                         unsigned int uiFileOffset,
00345                                                         unsigned int uiRecordLen,
00346                                                         unsigned char* pucRecordData );
00347 
00348         // [0xBB] : [0xC1] DESFire Commands
00349         int ReadRecords(                unsigned int uiApplicationID,
00350                                                         unsigned char ucReaderKeyIndex,
00351                                                         unsigned char ucDESFireKeyNo,
00352                                                         unsigned char ucFileNo,
00353                                                         unsigned char ucFileCommSettings,
00354                                                         unsigned int uiRecordOffset,
00355                                                         unsigned int uiNoOfRecords,
00356                                                         unsigned int uiRecordSize,
00357                                                         unsigned char* pucRecordData );
00358 
00359         // [0xEB] : [0xC1] DESFire Commands
00360         int ClearRecordFile(    unsigned int uiApplicationID,
00361                                                         unsigned char ucReaderKeyIndex,
00362                                                         unsigned char ucDESFireKeyNo,
00363                                                         unsigned char ucFileNo,
00364                                                         unsigned char ucFileCommSettings );
00365 
00366         // [0xC7] : T=CL
00367         int CommitTransaction(  unsigned char* pucResponseData,
00368                                                         unsigned int uiResponseBufferLength,
00369                                                         unsigned int& uiResponseLength );
00370 
00371         // [0xA7] : T=CL
00372         int AbortTransaction(   unsigned char* pucResponseData,
00373                                                         unsigned int uiResponseBufferLength,
00374                                                         unsigned int& uiResponseLength );
00375 
00376 
00377         unsigned char m_ucErrorSource;
00378         unsigned int m_uiErrorCode;
00379 
00380 };
00381 
00382 #endif // #if !defined(_FEDM_NO_TAG_HANDLER_ISO14443)
00383 
00384 #endif // !defined(_FEDM_ISC_TAG_HANDLER_ISO14443_4_MIFARE_DESFIRE_IMPL_H_INCLUDED_)


maggie_rfid_drivers
Author(s): Raul Perula-Martinez
autogenerated on Mon Sep 14 2015 03:05:30