FedmIscTagHandler_ISO15693_STM_LRI2K.cpp
Go to the documentation of this file.
00001 /*-------------------------------------------------------
00002 |                                                       |
00003 |      FedmIscTagHandler_ISO15693_STM_LRI2K.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                   :       02.10.2009
00018 
00019 Version                 :       03.01.00 / 11.02.2010 / M. Hultsch
00020 
00021 Operation Systems       :       independent
00022 
00023 Function                        :       class for OBID i-scan® HF transponder ISO15693 of manufacturer STMicroelectronics SA
00024                                                 specialized tag handler on top with custom specific commands
00025 
00026 NOTE                            :       this class supports only selected or addressed mode in Host-Mode
00027 
00028 
00029 Trademarks:
00030 -----------
00031 OBID®, OBID i-scan® and OBID myAXXESS® are registered Trademarks of FEIG ELECTRONIC GmbH
00032 Other Trademarks: see FEDM.h
00033 */
00034 
00035 
00036 #if !defined(_FEDM_NO_TAG_HANDLER_ISO15693)
00037 
00038 #include "FedmIscTagHandler_ISO15693_STM_LRI2K.h"
00039 #include "../FEDM_ISCReader.h"
00040 #include "../FEDM_ISOTabItem.h"
00041 #include "../FEDM_ISCReaderID.h"
00042 #include "../FEDM_ISC.h"
00043 #include "../../FEDM_Functions.h"
00044 
00045 
00046 #if _MSC_VER >= 1400
00047         #pragma warning(disable : 4996)
00048 #endif
00049 
00050 
00051 
00052 //####################################################################
00053 // class FedmIscTagHandler_ISO15693_STM_LRI2K
00054 // >> supports only ISO Host Commands <<
00055 //####################################################################
00056 
00057 FedmIscTagHandler_ISO15693_STM_LRI2K::FedmIscTagHandler_ISO15693_STM_LRI2K(
00058         FEDM_ISCReader* pReader,
00059         FEDM_ISOTabItem* pTabItem )
00060         : FedmIscTagHandler_ISO15693_STM(pReader, FedmIscTagHandler::TYPE_ISO15693_STM_LRI2K, pTabItem)
00061 {
00062         if( (pTabItem->m_ucSnr[2]&0xFC) == 0x40 )       // LRI1K
00063         {
00064                 m_sTagName = "ISO 15693 : ";
00065                 m_sTagName += FEDM_TabItem::GetISO15693Manufacturer(FEDM_ISC_ISO_MFR_STM);
00066                 m_sTagName += " LRI1K";
00067         }
00068         else if( (pTabItem->m_ucSnr[2]&0xFC) == 0x20 )  // LRI2K
00069         {
00070                 m_sTagName = "ISO 15693 : ";
00071                 m_sTagName += FEDM_TabItem::GetISO15693Manufacturer(FEDM_ISC_ISO_MFR_STM);
00072                 m_sTagName += " LRI2K";
00073         }
00074 }
00075 
00076 FedmIscTagHandler_ISO15693_STM_LRI2K::FedmIscTagHandler_ISO15693_STM_LRI2K(
00077         FEDM_ISCReader* pReader,
00078         unsigned int uiTagHandlerType,
00079         FEDM_ISOTabItem* pTabItem )
00080         : FedmIscTagHandler_ISO15693_STM(pReader, uiTagHandlerType, pTabItem)
00081 {
00082         if( (pTabItem->m_ucSnr[2]&0xFC) == 0x40 )       // LRI1K
00083         {
00084                 m_sTagName = "ISO 15693 : ";
00085                 m_sTagName += FEDM_TabItem::GetISO15693Manufacturer(FEDM_ISC_ISO_MFR_STM);
00086                 m_sTagName += " LRI1K";
00087         }
00088         else if( (pTabItem->m_ucSnr[2]&0xFC) == 0x20 )  // LRI2K
00089         {
00090                 m_sTagName = "ISO 15693 : ";
00091                 m_sTagName += FEDM_TabItem::GetISO15693Manufacturer(FEDM_ISC_ISO_MFR_STM);
00092                 m_sTagName += " LRI2K";
00093         }
00094 }
00095 
00096 FedmIscTagHandler_ISO15693_STM_LRI2K::~FedmIscTagHandler_ISO15693_STM_LRI2K()
00097 {
00098 }
00099 
00100 // set all data members to 0
00101 /*void FedmIscTagHandler_ISO15693_STM_LRI2K::Init()
00102 {
00103 }*/
00104 
00105 
00106 /***************************************************************************
00107   Begin                 :       09.10.2009 / M. Hultsch
00108 
00109   Version               :       03.01.00 / 09.10.2009 / M. Hultsch
00110 
00111   Function                      :       [0xB1][0xA6] Kill
00112 
00113   Parameters            :       string sKillCode
00114 
00115   Return value          :       0                               - if tramsmission was successful
00116                                                 status byte (>1)- if the reader signals a problem
00117                                                 error code (<0) - if something goes wrong
00118 ***************************************************************************/
00119 int FedmIscTagHandler_ISO15693_STM_LRI2K::Kill(
00120         string sKillCode )
00121 {
00122         int iErr = 0;
00123         
00124         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA6));
00125         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00126         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00127         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00128         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_KILL_CODE, sKillCode));
00129         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_STM));
00130         
00131         // ... and execute
00132         return m_pReader->SendProtocol(0xB1);
00133 }
00134 
00135 /**************************************************************************
00136   Begin                 :       09.10.2009 / M. Hultsch
00137 
00138   Version               :       03.01.00 / 24.11.2009 / M. Hultsch
00139 
00140   Function                      :       [0xB1][0xB1] WriteKill
00141 
00142   Parameters            :       unsigned char ucPasswordNumber- string sPassword        
00143 
00144   Return value          :       0                               - if tramsmission was successful
00145                                                 status byte (>1)- if the reader signals a problem
00146                                                 error code (<0) - if something goes wrong
00147 ***************************************************************************/
00148 int FedmIscTagHandler_ISO15693_STM_LRI2K::WriteKill(
00149         string sKillCode)
00150 {
00151         int iErr = 0;
00152 
00153         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xB1));
00154         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00155 
00156         if(m_bNonAddressedMode)
00157         {
00158                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00159         }
00160         else if(m_pTabItem->m_bIsSelected)
00161         {
00162                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00163         }
00164         else
00165         {
00166                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00167                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00168         }
00169 
00170         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_PASSWORD_NO, (unsigned char)0));
00171         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_PASSWORD, sKillCode));
00172         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_STM));
00173         
00174         // ... and execute
00175         return m_pReader->SendProtocol(0xB1);
00176 }
00177 
00178 /**************************************************************************
00179   Begin                 :       09.10.2009 / M. Hultsch
00180 
00181   Version               :       03.01.00 / 11.02.2010 / M. Hultsch
00182 
00183   Function                      :       [0xB1][0xB2] LockKill
00184 
00185   Parameters            :       unsigned char ucInfoByte; unsigned char ucBlockNumber; unsigned char ucProtectStatus
00186 
00187   Return value          :       0                               - if tramsmission was successful
00188                                                 status byte (>1)- if the reader signals a problem
00189                                                 error code (<0) - if something goes wrong
00190 ***************************************************************************/
00191 int FedmIscTagHandler_ISO15693_STM_LRI2K::LockKill()
00192 {
00193         int iErr = 0;
00194 
00195         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xB2));
00196         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00197 
00198         if(m_bNonAddressedMode)
00199         {
00200                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00201         }
00202         else if(m_pTabItem->m_bIsSelected)
00203         {
00204                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00205         }
00206         else
00207         {
00208                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00209                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00210         }
00211 
00212         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_INFO_BYTE, (unsigned char)0x80));
00213         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_BLOCK_NO, (unsigned char)0));
00214         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_PROTECT_STATUS, (unsigned char)0));
00215         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_STM));
00216 
00217         // ... and execute
00218         return m_pReader->SendProtocol(0xB1);
00219 }
00220 
00221 #endif // #if !defined(_FEDM_NO_TAG_HANDLER_ISO15693)


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