FedmIscTagHandler_ISO15693_STM_LRIS2K.cpp
Go to the documentation of this file.
00001 /*-------------------------------------------------------
00002 |                                                       |
00003 |      FedmIscTagHandler_ISO15693_STM_LRIS2K.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_LRIS2K.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_LRIS2K
00054 // >> supports only ISO Host Commands <<
00055 //####################################################################
00056 
00057 FedmIscTagHandler_ISO15693_STM_LRIS2K::FedmIscTagHandler_ISO15693_STM_LRIS2K(
00058         FEDM_ISCReader* pReader,
00059         FEDM_ISOTabItem* pTabItem )
00060         : FedmIscTagHandler_ISO15693_STM(pReader, FedmIscTagHandler::TYPE_ISO15693_STM_LRIS2K, pTabItem)
00061 {
00062         m_sTagName = "ISO 15693 : ";
00063         m_sTagName += FEDM_TabItem::GetISO15693Manufacturer(FEDM_ISC_ISO_MFR_STM);
00064         m_sTagName += " LRIS2K";
00065 }
00066 
00067 FedmIscTagHandler_ISO15693_STM_LRIS2K::FedmIscTagHandler_ISO15693_STM_LRIS2K(
00068         FEDM_ISCReader* pReader,
00069         unsigned int uiTagHandlerType,
00070         FEDM_ISOTabItem* pTabItem )
00071         : FedmIscTagHandler_ISO15693_STM(pReader, uiTagHandlerType, pTabItem)
00072 {
00073         m_sTagName = "ISO 15693 : ";
00074         m_sTagName += FEDM_TabItem::GetISO15693Manufacturer(FEDM_ISC_ISO_MFR_STM);
00075         m_sTagName += " LRIS2K";
00076 }
00077 
00078 FedmIscTagHandler_ISO15693_STM_LRIS2K::~FedmIscTagHandler_ISO15693_STM_LRIS2K()
00079 {
00080 }
00081 
00082 // set all data members to 0
00083 /*void FedmIscTagHandler_ISO15693_STM_LRIS2K::Init()
00084 {
00085 }*/
00086 
00087 /***************************************************************************
00088   Begin                 :       09.10.2009 / M. Hultsch
00089 
00090   Version               :       03.01.00 / 09.10.2009 / M. Hultsch
00091 
00092   Function                      :       [0xB1][0xA6] Kill
00093 
00094   Parameters            :       string KillCode 
00095 
00096   Return value          :       0                               - if tramsmission was successful
00097                                                 status byte (>1)- if the reader signals a problem
00098                                                 error code (<0) - if something goes wrong
00099 ***************************************************************************/
00100 int FedmIscTagHandler_ISO15693_STM_LRIS2K::Kill(
00101         string sKillCode )
00102 {
00103         int iErr = 0;
00104         
00105         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA6));
00106         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00107         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00108         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00109         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_KILL_CODE, sKillCode));
00110 
00111         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_STM));
00112         
00113         // ... and execute
00114         return m_pReader->SendProtocol(0xB1);
00115 }
00116 
00117 /***************************************************************************
00118   Begin                 :       09.10.2009 / M. Hultsch
00119 
00120   Version               :       03.01.00 / 24.11.2009 / M. Hultsch
00121 
00122   Function                      :       [0xB1][0xB1] WriteKill
00123 
00124   Parameters            :       unsigned char PasswordNumber,string sPassword
00125 
00126   Return value          :       0                               - if tramsmission was successful
00127                                                 status byte (>1)- if the reader signals a problem
00128                                                 error code (<0) - if something goes wrong
00129 ***************************************************************************/
00130 int FedmIscTagHandler_ISO15693_STM_LRIS2K::WriteKill(
00131         string sKillCode)
00132 {
00133         int iErr = 0;
00134         
00135         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xB1));
00136         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00137 
00138         if(m_bNonAddressedMode)
00139         {
00140                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00141         }
00142         else if(m_pTabItem->m_bIsSelected)
00143         {
00144                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00145         }
00146         else
00147         {
00148                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00149                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00150         }
00151         
00152         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_PASSWORD_NO, (unsigned int)0));
00153         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_PASSWORD, sKillCode));
00154         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_STM));
00155         
00156         // ... and execute
00157         return m_pReader->SendProtocol(0xB1);
00158 }
00159 
00160 /***************************************************************************
00161   Begin                 :       09.10.2009 / M. Hultsch
00162 
00163   Version               :       03.01.00 / 09.10.2009 / M. Hultsch
00164 
00165   Function                      :       [0xB1][0xB1] WritePassword
00166 
00167   Parameters            :       unsigned char PasswordNumber
00168                                                 string sPassword
00169 
00170   Return value          :       0                               - if tramsmission was successful
00171                                                 status byte (>1)- if the reader signals a problem
00172                                                 error code (<0) - if something goes wrong
00173 ***************************************************************************/
00174 int FedmIscTagHandler_ISO15693_STM_LRIS2K::WritePassword(
00175         unsigned char ucPasswordNumber,
00176         string sPassword)
00177 {
00178         int iErr = 0;
00179         
00180         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xB1));
00181         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00182 
00183         if(m_bNonAddressedMode)
00184         {
00185                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00186         }
00187         else if(m_pTabItem->m_bIsSelected)
00188         {
00189                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00190         }
00191         else
00192         {
00193                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00194                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00195         }
00196         
00197         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_PASSWORD_NO, ucPasswordNumber));
00198         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_PASSWORD, sPassword));
00199 
00200         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_STM));
00201         
00202         // ... and execute
00203         return m_pReader->SendProtocol(0xB1);
00204 }
00205 
00206 /***************************************************************************
00207   Begin                 :       09.10.2009 / M. Hultsch
00208 
00209   Version               :       03.01.00 / 11.02.2010 / M. Hultsch
00210 
00211   Function                      :       [0xB1][0xB2] LockKill
00212 
00213   Parameters            :       unsigned char ucProtectStatus
00214 
00215   Return value          :       0                               - if tramsmission was successful
00216                                                 status byte (>1)- if the reader signals a problem
00217                                                 error code (<0) - if something goes wrong
00218 ***************************************************************************/
00219 int FedmIscTagHandler_ISO15693_STM_LRIS2K::LockKill(unsigned char ucProtectStatus)
00220 {
00221         int iErr = 0;
00222         
00223         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xB2));
00224         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00225 
00226         if(m_bNonAddressedMode)
00227         {
00228                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00229         }
00230         else if(m_pTabItem->m_bIsSelected)
00231         {
00232                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00233         }
00234         else
00235         {
00236                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00237                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00238         }
00239         
00240         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_INFO_BYTE, (unsigned char)0x81));
00241         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_BLOCK_NO, (unsigned char)0));
00242         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_PROTECT_STATUS, ucProtectStatus));
00243         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_STM));
00244         
00245         // ... and execute
00246         return m_pReader->SendProtocol(0xB1);
00247 }
00248 
00249 /***************************************************************************
00250   Begin                 :       11.02.2010 / M. Hultsch
00251 
00252   Version               :       03.01.00 / 11.02.2010 / M. Hultsch
00253 
00254   Function                      :       [0xB1][0xB2] LockPassword
00255 
00256   Parameters            :       unsigned char ucPasswordNumber
00257                                                 unsigned char ucProtectStatus
00258 
00259   Return value          :       0                               - if tramsmission was successful
00260                                                 status byte (>1)- if the reader signals a problem
00261                                                 error code (<0) - if something goes wrong
00262 ***************************************************************************/
00263 int FedmIscTagHandler_ISO15693_STM_LRIS2K::LockPassword(
00264         unsigned char ucPasswordNumber,
00265         unsigned char ucProtectStatus)
00266 {
00267         int iErr = 0;
00268         
00269         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xB2));
00270         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00271 
00272         if(m_bNonAddressedMode)
00273         {
00274                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00275         }
00276         else if(m_pTabItem->m_bIsSelected)
00277         {
00278                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00279         }
00280         else
00281         {
00282                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00283                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00284         }
00285         
00286         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_INFO_BYTE, (unsigned char)0x81));
00287         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_BLOCK_NO, ucPasswordNumber));
00288         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_PROTECT_STATUS, ucProtectStatus));
00289         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_STM));
00290         
00291         // ... and execute
00292         return m_pReader->SendProtocol(0xB1);
00293 }
00294 
00295 /***************************************************************************
00296   Begin                 :       11.02.2010 / M. Hultsch
00297 
00298   Version               :       03.01.00 / 11.02.2010 / M. Hultsch
00299 
00300   Function                      :       [0xB1][0xB2] LockMemoryArea
00301 
00302   Parameters            :       unsigned char ucBlockNumber
00303                                                 unsigned char ucProtectStatus
00304 
00305   Return value          :       0                               - if tramsmission was successful
00306                                                 status byte (>1)- if the reader signals a problem
00307                                                 error code (<0) - if something goes wrong
00308 ***************************************************************************/
00309 int FedmIscTagHandler_ISO15693_STM_LRIS2K::LockMemoryArea(
00310         unsigned char ucBlockNumber,
00311         unsigned char ucProtectStatus)
00312 {
00313         int iErr = 0;
00314         
00315         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xB2));
00316         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00317 
00318         if(m_bNonAddressedMode)
00319         {
00320                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00321         }
00322         else if(m_pTabItem->m_bIsSelected)
00323         {
00324                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00325         }
00326         else
00327         {
00328                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00329                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00330         }
00331         
00332         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_INFO_BYTE, (unsigned char)0x01));
00333         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_BLOCK_NO, ucBlockNumber));
00334         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_PROTECT_STATUS, ucProtectStatus));
00335         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_STM));
00336         
00337         // ... and execute
00338         return m_pReader->SendProtocol(0xB1);
00339 }
00340 
00341 /***************************************************************************
00342   Begin                 :       09.10.2009 / M. Hultsch
00343 
00344   Version               :       03.01.00 / 09.10.2009 / M. Hultsch
00345 
00346   Function                      :       [0xB1][0xB3] PresentPassword
00347 
00348   Parameters            :       unsigned char PasswordNumber,string sPassword
00349 
00350   Return value          :       0                               - if tramsmission was successful
00351                                                 status byte (>1)- if the reader signals a problem
00352                                                 error code (<0) - if something goes wrong
00353 ***************************************************************************/
00354 int FedmIscTagHandler_ISO15693_STM_LRIS2K::PresentPassword(
00355         unsigned char ucPasswordNumber,
00356         string sPassword)
00357 {
00358         int iErr = 0;
00359 
00360         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xB3));
00361         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00362 
00363         if(m_bNonAddressedMode)
00364         {
00365                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00366         }
00367         else if(m_pTabItem->m_bIsSelected)
00368         {
00369                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00370         }
00371         else
00372         {
00373                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00374                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00375         }
00376 
00377         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_PASSWORD_NO, ucPasswordNumber));
00378         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_PASSWORD, sPassword));
00379 
00380         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_STM));
00381         
00382         // ... and execute
00383         return m_pReader->SendProtocol(0xB1);
00384 }
00385 
00386 #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