FedmIscTagHandler_ISO14443_4_Maxim_MAX66040.h
Go to the documentation of this file.
00001 /*-------------------------------------------------------
00002 |                                                       |
00003 |      FedmIscTagHandler_ISO14443_4_Maxim_MAX66040.h    |
00004 |                                                       |
00005 ---------------------------------------------------------
00006 
00007 Copyright © 2010-2011   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                  :       Marcel Raner
00017 Begin                   :       04.10.2010
00018 
00019 Version                 :       03.03.02 / 29.04.2011 / M. Raner, M. Hultsch
00020 
00021 Operation Systems       :       independent
00022 
00023 Function                        :       class for OBID® classic-pro transponder ISO14443 of manufacturer MAXIM
00024 
00025 NOTE                            :       this class supports only selected or addressed 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_MAXIM_MAX66040_H_INCLUDED_)
00035 #define _FEDM_ISC_TAG_HANDLER_ISO14443_4_MAXIM_MAX66040_H_INCLUDED_
00036 
00037 #if !defined(_FEDM_NO_TAG_HANDLER_ISO14443)
00038 
00039 #include "../../FEDM.h"
00040 #include "FedmIscTagHandler_ISO14443_4_Maxim.h"
00041 
00042 class FEDM_ISOTabItem;
00043 
00044 
00045 
00046 
00055 class _FEDM_ISC_CORE_EXT_CLASS FedmIscTagHandler_ISO14443_4_Maxim_MAX66040 : public FedmIscTagHandler_ISO14443_4_Maxim
00056 {
00057 public:
00058 
00059         // friend classes have access rights to protected members
00060         friend class FEDM_ISCReaderModule;
00061         friend class FEDM_ISCReader;
00062         friend class FEDM_ISOTabItem;
00063 
00064         // set all data members to 0
00065         //      virtual void Init();
00066 
00081         int UserComputePageMAC(                                 unsigned char* pucSecret, 
00082                                                                                         unsigned char* pucMemoryPageData, 
00083                                                                                         unsigned char ucPageNumber, 
00084                                                                                         unsigned char* pucUID,
00085                                                                                         unsigned char* pucMAC);
00086 
00100         int     UserComputeSecret(                                      unsigned char* pucSecret, 
00101                                                                                         unsigned char* pucMemoryPageData, 
00102                                                                                         unsigned char* pucPartialSecret, 
00103                                                                                         unsigned char* pucNewSecret);
00104 
00121         int UserComputeCopyBufferMAC(                   unsigned char* pucSecret, 
00122                                                                                         unsigned char* pucMemoryPageData, 
00123                                                                                         unsigned char* pucReadWriteBufferData, 
00124                                                                                         unsigned char* pucIntegrityBytes,
00125                                                                                         unsigned char pucPageNumber, 
00126                                                                                         unsigned char* pucUID,
00127                                                                                         unsigned char* pucMAC);
00128 
00142         int GetMemoryPageData(                                  unsigned char ucPageNumber, 
00143                                                                                         unsigned char& ucIndicator,
00144                                                                                         unsigned char* pucMemoryPageData);
00145 
00157         int ComputeMAC(                                                 unsigned char* pucM, 
00158                                                                                         unsigned int* puiMAC);
00159 
00165         int UpdateChallenge();
00166 
00178         int GenerateSecret(                                             unsigned char ucControlByte,
00179                                                                                         unsigned char* pucPartialSecret,
00180                                                                                         unsigned char& ucIndicator,
00181                                                                                         unsigned char& ucPageCRCStatus);
00182 
00194         int WriteBuffer(                                                unsigned char ucBlockNumber,
00195                                                                                         unsigned char* pucNewBlockData,
00196                                                                                         unsigned char& ucIndicator);
00197 
00209         int ReadBuffer(                                                 unsigned char& ucIndicator,
00210                                                                                         unsigned char& ucBlockNumber,
00211                                                                                         unsigned char* pucReadWriteBufferData);
00212 
00224         int CopyBuffer(                                                 unsigned char ucBlockNumber,
00225                                                                                         unsigned char* pucMAC,
00226                                                                                         unsigned char& ucIndicator,
00227                                                                                         unsigned char& ucPageCRCStatus);
00228 
00240         int ReadSingleBlock(                                    unsigned char ucBlockNumber,
00241                                                                                         unsigned char& ucIndicator,
00242                                                                                         unsigned char* pucMemoryData);
00243 
00255         int ReadSingleBlockWithBlockSecurity(   unsigned char ucBlockNumber,
00256                                                                                         unsigned char& ucIndicator,
00257                                                                                         unsigned char& ucSecurityStatus,
00258                                                                                         unsigned char* pucMemoryData);
00259 
00271         int CustomReadBlock(                                    unsigned char ucBlockNumber,
00272                                                                                         unsigned char& ucIndicator,
00273                                                                                         unsigned char* pucMemoryData,
00274                                                                                         unsigned char* pucIntegrityBytes);
00275 
00287         int CustomReadBlockWithBlockSecurity(   unsigned char ucBlockNumber,
00288                                                                                         unsigned char& ucIndicator,
00289                                                                                         unsigned char& ucSecurityStatus,
00290                                                                                         unsigned char* pucMemoryData,
00291                                                                                         unsigned char* pucIntegrityBytes);
00292 
00304         int ComputePageMAC(                                             unsigned char ucPageNumber,
00305                                                                                         unsigned char& ucIndicator,
00306                                                                                         unsigned char& ucPageCRCStatus,
00307                                                                                         unsigned char* pucMAC);
00308 
00320         int WriteAFI(                                                   unsigned char ucAfiValue,
00321                                                                                         unsigned char& ucIndicator);
00322 
00334         int LockAFI(                                                    unsigned char& ucIndicator);
00335 
00336 protected:
00337         // constructor
00338         FedmIscTagHandler_ISO14443_4_Maxim_MAX66040(FEDM_ISCReader* pReader, FEDM_ISOTabItem* pTabItem);
00339         // 2. constructor
00340         FedmIscTagHandler_ISO14443_4_Maxim_MAX66040(FEDM_ISCReader* pReader, unsigned int uiTagHandlerType, FEDM_ISOTabItem* pTabItem);
00341         // destructor
00342         virtual ~FedmIscTagHandler_ISO14443_4_Maxim_MAX66040();
00343 
00344         unsigned char m_ucRequestData[64];
00345         unsigned char m_ucResponseData[256];
00346 
00347         unsigned char ucChallenge[5];
00348 
00349 };
00350 
00351 #endif // #if !defined(_FEDM_NO_TAG_HANDLER_ISO14443)
00352 
00353 #endif // !defined(_FEDM_ISC_TAG_HANDLER_ISO14443_MAX66040_4_MAXIM_H_INCLUDED_)


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