FedmIscTagHandler_ISO14443_3_MIFARE_Classic.cpp
Go to the documentation of this file.
00001 /*-------------------------------------------------------
00002 |                                                       |
00003 |      FedmIscTagHandler_ISO14443_3_MIFARE_Classic.cpp  |
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.01.00 / 10.02.2010 / M. Hultsch
00020 
00021 Operation Systems       :       independent
00022 
00023 Function                        :       class for OBID® classic-pro transponder ISO14443-3 MIFARE Classic (Mini, 1K, 4K)
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_NO_TAG_HANDLER_ISO14443)
00035 
00036 #include "FedmIscTagHandler_ISO14443_3_MIFARE_Classic.h"
00037 #include "../FEDM_ISCReader.h"
00038 #include "../FEDM_ISOTabItem.h"
00039 #include "../FEDM_ISCReaderID.h"
00040 #include "../FEDM_ISC.h"
00041 
00042 
00043 #if _MSC_VER >= 1400
00044         #pragma warning(disable : 4996)
00045 #endif
00046 
00047 
00048 
00049 //####################################################################
00050 // class FedmIscTagHandler_ISO14443_3_MIFARE_Classic
00051 // >> supports only ISO Host Commands <<
00052 //####################################################################
00053 
00054 FedmIscTagHandler_ISO14443_3_MIFARE_Classic::FedmIscTagHandler_ISO14443_3_MIFARE_Classic(
00055         FEDM_ISCReader* pReader, 
00056         FEDM_ISOTabItem* pTabItem )
00057         : FedmIscTagHandler_ISO14443_3(pReader, FedmIscTagHandler::TYPE_ISO14443_3_MIFARE_CLASSIC, pTabItem)
00058 {
00059         m_sTagName = "ISO 14443-3 Type A : MIFARE Classic";
00060 }
00061 
00062 FedmIscTagHandler_ISO14443_3_MIFARE_Classic::FedmIscTagHandler_ISO14443_3_MIFARE_Classic(
00063         FEDM_ISCReader* pReader, 
00064         unsigned int uiTagHandlerType,
00065         FEDM_ISOTabItem* pTabItem )
00066         : FedmIscTagHandler_ISO14443_3(pReader, uiTagHandlerType, pTabItem)
00067 {
00068         m_sTagName = "ISO 14443-3 Type A : MIFARE Classic";
00069 }
00070 
00071 FedmIscTagHandler_ISO14443_3_MIFARE_Classic::~FedmIscTagHandler_ISO14443_3_MIFARE_Classic()
00072 {
00073 }
00074 
00075 // set all data members to 0
00076 /*void FedmIscTagHandler_ISO14443_3_MIFARE_Classic::Init()
00077 {
00078 }*/
00079 
00080 
00081 /***************************************************************************
00082   Begin                 :       31.03.2009 / M. Hultsch
00083 
00084   Version               :       03.01.00 / 11.05.2009 / M. Hultsch
00085 
00086   Function                      :       [0xB2][0x30] Mifare Value Command - only for selected tags
00087 
00088                                                 NOTE: only for selected tags
00089 
00090   Parameters            :       unsigned char ucCommand                 - [in] first data block address
00091                                                 unsigned char ucSourceAddress   - [in] sourec address
00092                                                 unsigned int uiValue                    - [in] value
00093                                                 ucDestinationAddress                    - [in] destination address
00094 
00095   Return value          :       0                               - if tramsmission was successful
00096                                                 status byte (>1)- if the reader signals a problem
00097                                                 error code (<0) - if something goes wrong
00098 ***************************************************************************/
00099 int FedmIscTagHandler_ISO14443_3_MIFARE_Classic::ValueCommand(
00100         unsigned char ucCommand,
00101         unsigned char ucSourceAddress,
00102         unsigned int uiValue,
00103         unsigned char ucDestinationAddress )
00104 {
00105         int iErr = 0;
00106 
00107         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B2_CMD, (unsigned char)0x30));
00108         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B2_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00109         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B2_REQ_MF_CMD, ucCommand));
00110         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B2_REQ_DB_ADR, ucSourceAddress));
00111         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B2_REQ_OP_VALUE, uiValue));
00112         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B2_REQ_DEST_ADR, ucDestinationAddress));
00113 
00114         // ... and execute
00115         return m_pReader->SendProtocol(0xB2);
00116 }
00117 
00118 
00119 /***************************************************************************
00120   Begin                 :       31.03.2009 / M. Hultsch
00121 
00122   Version               :       03.01.00 / 11.05.2009 / M. Hultsch
00123 
00124   Function                      :       [0xB2][0xB0] Authent Mifare with key from reader's EEPROM
00125 
00126                                                 NOTE: only for selected tags
00127 
00128   Parameters            :       unsigned char ucFirstDataBlock  - [in] first data block address
00129                                                 unsigned char ucKeyType                 - [in] key type
00130                                                 unsigned char ucKeyAddress              - [in] key address
00131 
00132   Return value          :       0                               - if tramsmission was successful
00133                                                 status byte (>1)- if the reader signals a problem
00134                                                 error code (<0) - if something goes wrong
00135 ***************************************************************************/
00136 int FedmIscTagHandler_ISO14443_3_MIFARE_Classic::Authent(
00137         unsigned char ucFirstDataBlock,
00138         unsigned char ucKeyType,
00139         unsigned char ucKeyAddress )
00140 {
00141         int iErr = 0;
00142 
00143         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B2_MODE, (unsigned char)0));
00144         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B2_CMD, (unsigned char)0xB0));
00145         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B2_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00146         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B2_MODE_KL, false));
00147         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B2_REQ_DB_ADR, ucFirstDataBlock));
00148         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B2_REQ_KEY_TYPE, ucKeyType));
00149         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B2_REQ_KEY_ADR, ucKeyAddress));
00150 
00151         // ... and execute
00152         return m_pReader->SendProtocol(0xB2);
00153 }
00154 
00155 
00156 /***************************************************************************
00157   Begin                 :       31.03.2009 / M. Hultsch
00158 
00159   Version               :       03.01.00 / 11.05.2009 / M. Hultsch
00160 
00161   Function                      :       [0xB2][0xB0] Authent Mifare with key from protocol
00162 
00163                                                 NOTE: only for selected tags
00164 
00165   Parameters            :       unsigned char ucFirstDataBlock  - [in] first data block address
00166                                                 unsigned char ucKeyType                 - [in] key type
00167                                                 string sKey                                             - [in] key
00168 
00169   Return value          :       0                               - if tramsmission was successful
00170                                                 status byte (>1)- if the reader signals a problem
00171                                                 error code (<0) - if something goes wrong
00172 ***************************************************************************/
00173 int FedmIscTagHandler_ISO14443_3_MIFARE_Classic::Authent(
00174         unsigned char ucFirstDataBlock,
00175         unsigned char ucKeyType,
00176         string sKey )
00177 {
00178         int iErr = 0;
00179 
00180         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B2_MODE, (unsigned char)0));
00181         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B2_CMD, (unsigned char)0xB0));
00182         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B2_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00183         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B2_MODE_KL, true));
00184         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B2_REQ_DB_ADR, ucFirstDataBlock));
00185         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B2_REQ_KEY_TYPE, ucKeyType));
00186         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_ISO14443A_KEY, sKey));
00187 
00188         // ... and execute
00189         return m_pReader->SendProtocol(0xB2);
00190 }
00191 
00192 #endif // #if !defined(_FEDM_NO_TAG_HANDLER_ISO14443)


rfid_drivers
Author(s): Raul Perula-Martinez
autogenerated on Thu Apr 2 2015 03:06:14