FedmIscTagHandler_ISO15693_KSW.cpp
Go to the documentation of this file.
00001 /*-------------------------------------------------------
00002 |                                                       |
00003 |      FedmIscTagHandler_ISO15693_KSW.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 / 10.02.2010 / M. Hultsch
00020 
00021 Operation Systems       :       independent
00022 
00023 Function                        :       class for OBID i-scan® HF transponder ISO15693 of manufacturer KSW Microtec GmbH
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_KSW.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_KSW
00054 // >> supports only ISO Host Commands <<
00055 //####################################################################
00056 
00057 FedmIscTagHandler_ISO15693_KSW::FedmIscTagHandler_ISO15693_KSW(
00058         FEDM_ISCReader* pReader,
00059         FEDM_ISOTabItem* pTabItem )
00060         : FedmIscTagHandler_ISO15693(pReader, FedmIscTagHandler::TYPE_ISO15693_KSW, pTabItem)
00061 {
00062         m_sTagName = "ISO 15693 : ";
00063         m_sTagName += FEDM_TabItem::GetISO15693Manufacturer(FEDM_ISC_ISO_MFR_KSW);
00064 }
00065 
00066 FedmIscTagHandler_ISO15693_KSW::FedmIscTagHandler_ISO15693_KSW(
00067         FEDM_ISCReader* pReader,
00068         unsigned int uiTagHandlerType,
00069         FEDM_ISOTabItem* pTabItem )
00070         : FedmIscTagHandler_ISO15693(pReader, uiTagHandlerType, pTabItem)
00071 {
00072         m_sTagName = "ISO 15693 : ";
00073         m_sTagName += FEDM_TabItem::GetISO15693Manufacturer(FEDM_ISC_ISO_MFR_KSW);
00074 }
00075 
00076 FedmIscTagHandler_ISO15693_KSW::~FedmIscTagHandler_ISO15693_KSW()
00077 {
00078 }
00079 
00080 // set all data members to 0
00081 /*void FedmIscTagHandler_ISO15693_KSW::Init()
00082 {
00083 }*/
00084 
00085 
00086 /***************************************************************************
00087   Begin                 :       09.10.2009 / M. Hultsch
00088 
00089   Version               :       03.01.00 / 12.10.2009 / M. Hultsch
00090 
00091   Function                      :       [0xB1][0xA0] Set_Passive
00092 
00093   Parameters            :
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_ISO15693_KSW::SetPassive()
00100 {
00101         int iErr = 0;
00102         
00103         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA0));
00104         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00105 
00106         if(m_bNonAddressedMode)
00107         {
00108                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00109         }
00110         else if(m_pTabItem->m_bIsSelected)
00111         {
00112                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00113         }
00114         else
00115         {
00116                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00117                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00118         }
00119 
00120         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_KSW));
00121         
00122         // ... and execute
00123         return m_pReader->SendProtocol(0xB1);
00124 }
00125 
00126 /***************************************************************************
00127   Begin                 :       09.10.2009 / M. Hultsch
00128 
00129   Version               :       03.01.00 / 12.10.2009 / M. Hultsch
00130 
00131   Function                      :       [0xB1][0xA1] SetLog
00132 
00133   Parameters            :       unsigned char ucLogFlags
00134                                                 unsigned char ucLogPointer
00135                                                 string sLogPeriode
00136                                                 unsigned int uiLogLimitLo
00137                                                 unsigned int uiLogLimitHi
00138 
00139   Return value          :       0                               - if tramsmission was successful
00140                                                 status byte (>1)- if the reader signals a problem
00141                                                 error code (<0) - if something goes wrong
00142 ***************************************************************************/
00143 int FedmIscTagHandler_ISO15693_KSW::SetLog(
00144         unsigned char ucLogFlags, 
00145         unsigned char ucLogPointer, 
00146         unsigned int uiLogPeriode, 
00147         unsigned int uiLogLimitLo, 
00148         unsigned int uiLogLimitHi)
00149 {
00150         int iErr = 0;
00151         
00152         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA1));
00153         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00154 
00155         if(m_bNonAddressedMode)
00156         {
00157                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00158         }
00159         else if(m_pTabItem->m_bIsSelected)
00160         {
00161                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00162         }
00163         else
00164         {
00165                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00166                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00167         }
00168         
00169         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_KSW_LOGFLAGS, ucLogFlags));
00170         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_KSW_LOGPOINTER, ucLogPointer));
00171         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_KSW_LOGPERIODE, uiLogPeriode));
00172         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_KSW_LOGLIMITLO, uiLogLimitLo));
00173         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_KSW_LOGLIMITHI, uiLogLimitHi));
00174 
00175         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_KSW));
00176         
00177         // ... and execute
00178         return m_pReader->SendProtocol(0xB1);
00179 }
00180 
00181 /***************************************************************************
00182   Begin                 :       09.10.2009 / M. Hultsch
00183 
00184   Version               :       03.01.00 / 12.10.2009 / M. Hultsch
00185 
00186   Function                      :       [0xB1][0xA2] GetLogStatus
00187 
00188   Parameters            :       unsigned char& ucLogFlags
00189                                                 unsigned char& ucLogPointer
00190                                                 unsigned int& uiLogPeriode
00191                                                 unsigned int& uiLogLimitLo
00192                                                 unsigned int& uiLogLimitHi
00193                                                 unsigned int& uiTimerticks
00194 
00195   Return value          :       0                               - if tramsmission was successful
00196                                                 status byte (>1)- if the reader signals a problem
00197                                                 error code (<0) - if something goes wrong
00198 ***************************************************************************/
00199 int FedmIscTagHandler_ISO15693_KSW::GetLogStatus(
00200         unsigned char& ucLogFlags, 
00201         unsigned char& ucLogPointer, 
00202         unsigned int& uiLogPeriode, 
00203         unsigned int& uiLogLimitLo, 
00204         unsigned int& uiLogLimitHi,
00205         unsigned int& uiTimerticks      )
00206 {
00207         int iErr = 0;
00208         
00209         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA2));
00210         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00211 
00212         if(m_bNonAddressedMode)
00213         {
00214                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00215         }
00216         else if(m_pTabItem->m_bIsSelected)
00217         {
00218                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00219         }
00220         else
00221         {
00222                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00223                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00224         }
00225 
00226         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_KSW));
00227         
00228         // ... and execute
00229         int iBack = m_pReader->SendProtocol(0xB1);
00230         if(iBack == 0x00 || iBack == 0x95)
00231         {
00232                 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_REQ_KSW_LOGFLAGS,   &ucLogFlags));
00233                 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_REQ_KSW_LOGPOINTER, &ucLogPointer));
00234                 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_REQ_KSW_LOGPERIODE, &uiLogPeriode));
00235                 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_REQ_KSW_LOGLIMITLO, &uiLogLimitLo));
00236                 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_REQ_KSW_LOGLIMITHI, &uiLogLimitHi));
00237                 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_REQ_KSW_TIMERTICKS, &uiTimerticks));
00238 
00239         }
00240 
00241         return iBack;
00242 }
00243 
00244 /***************************************************************************
00245   Begin                 :       09.10.2009 / M. Hultsch
00246 
00247   Version               :       03.01.00 / 12.10.2009 / M. Hultsch
00248 
00249   Function                      :       [0xB1][0xA3] Bist
00250 
00251   Parameters            :
00252 
00253   Return value          :       0                               - if tramsmission was successful
00254                                                 status byte (>1)- if the reader signals a problem
00255                                                 error code (<0) - if something goes wrong
00256 ***************************************************************************/
00257 int FedmIscTagHandler_ISO15693_KSW::Bist()
00258 {
00259         int iErr = 0;
00260         
00261         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA3));
00262         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00263 
00264         if(m_bNonAddressedMode)
00265         {
00266                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00267         }
00268         else if(m_pTabItem->m_bIsSelected)
00269         {
00270                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00271         }
00272         else
00273         {
00274                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00275                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00276         }
00277 
00278         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_KSW));
00279         
00280         // ... and execute
00281         return m_pReader->SendProtocol(0xB1);
00282 }
00283 
00284 /***************************************************************************
00285   Begin                 :       09.10.2009 / M. Hultsch
00286 
00287   Version               :       03.01.00 / 12.10.2009 / M. Hultsch
00288 
00289   Function                      :       [0xB1][0xA4] Lock
00290 
00291   Parameters            :       string sPassword
00292 
00293   Return value          :       0                               - if tramsmission was successful
00294                                                 status byte (>1)- if the reader signals a problem
00295                                                 error code (<0) - if something goes wrong
00296 ***************************************************************************/
00297 int FedmIscTagHandler_ISO15693_KSW::Lock(
00298         string sPassword)
00299 {
00300         int iErr = 0;
00301         
00302         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA4));
00303         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00304 
00305         if(m_bNonAddressedMode)
00306         {
00307                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00308         }
00309         else if(m_pTabItem->m_bIsSelected)
00310         {
00311                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00312         }
00313         else
00314         {
00315                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00316                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00317         }
00318                 
00319         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_KSW_PASSWORD, sPassword));
00320 
00321         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_KSW));
00322         
00323         // ... and execute
00324         return m_pReader->SendProtocol(0xB1);
00325 }
00326 
00327 /***************************************************************************
00328   Begin                 :       09.10.2009 / M. Hultsch
00329 
00330   Version               :       03.01.00 / 12.10.2009 / M. Hultsch
00331 
00332   Function                      :       [0xB1][0xA5] Unlock
00333 
00334   Parameters            :       string sPassword
00335 
00336   Return value          :       0                               - if tramsmission was successful
00337                                                 status byte (>1)- if the reader signals a problem
00338                                                 error code (<0) - if something goes wrong
00339 ***************************************************************************/
00340 int FedmIscTagHandler_ISO15693_KSW::Unlock(
00341         string sPassword)
00342 {
00343         int iErr = 0;
00344         
00345         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA5));
00346         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00347 
00348         if(m_bNonAddressedMode)
00349         {
00350                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00351         }
00352         else if(m_pTabItem->m_bIsSelected)
00353         {
00354                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00355         }
00356         else
00357         {
00358                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00359                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00360         }
00361         
00362         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_KSW_PASSWORD, sPassword));
00363 
00364         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_KSW));
00365         
00366         // ... and execute
00367         return m_pReader->SendProtocol(0xB1);
00368 }
00369 
00370 #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