FedmIscTagHandler_ISO15693_STM_M24LRxxER.cpp
Go to the documentation of this file.
00001 /*-------------------------------------------------------
00002 |                                                       |
00003 |      FedmIscTagHandler_ISO15693_STM_M24LRxxER.cpp     |
00004 |                                                       |
00005 ---------------------------------------------------------
00006 
00007 Copyright © 2009-2012   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                   :       25.09.2012
00018 
00019 Version                 :       04.03.01 / 25.09.2012 / 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_M24LRxxER.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_M24LRxxER
00054 // >> supports only ISO Host Commands <<
00055 //####################################################################
00056 
00057 FedmIscTagHandler_ISO15693_STM_M24LRxxER::FedmIscTagHandler_ISO15693_STM_M24LRxxER(
00058         FEDM_ISCReader* pReader,
00059         FEDM_ISOTabItem* pTabItem )
00060         : FedmIscTagHandler_ISO15693_STM_M24LR64R(pReader, FedmIscTagHandler::TYPE_ISO15693_STM_M24LR64R, pTabItem)
00061 {
00062         if( (pTabItem->m_ucSnr[2]&0xFC) == 0x5C )       // M24LR64E-R
00063         {
00064                 m_sTagName = "ISO 15693 : ";
00065                 m_sTagName += FEDM_TabItem::GetISO15693Manufacturer(FEDM_ISC_ISO_MFR_STM);
00066                 m_sTagName += " M24LR64E-R";
00067         }
00068         else if( (pTabItem->m_ucSnr[2]&0xFC) == 0x4C )  // M24LR16E-R
00069         {
00070                 m_sTagName = "ISO 15693 : ";
00071                 m_sTagName += FEDM_TabItem::GetISO15693Manufacturer(FEDM_ISC_ISO_MFR_STM);
00072                 m_sTagName += " M24LR16E-R";
00073         }
00074         else if( (pTabItem->m_ucSnr[2]&0xFC) == 0x58 )  // M24LR04E-R
00075         {
00076                 m_sTagName = "ISO 15693 : ";
00077                 m_sTagName += FEDM_TabItem::GetISO15693Manufacturer(FEDM_ISC_ISO_MFR_STM);
00078                 m_sTagName += " M24LR04E-R";
00079         }
00080         else
00081         {
00082                 m_sTagName = "ISO 15693 : ";
00083                 m_sTagName += FEDM_TabItem::GetISO15693Manufacturer(FEDM_ISC_ISO_MFR_STM);
00084                 m_sTagName += " M24LRxxE-R";
00085         }
00086 }
00087 
00088 FedmIscTagHandler_ISO15693_STM_M24LRxxER::FedmIscTagHandler_ISO15693_STM_M24LRxxER(
00089         FEDM_ISCReader* pReader,
00090         unsigned int uiTagHandlerType,
00091         FEDM_ISOTabItem* pTabItem )
00092         : FedmIscTagHandler_ISO15693_STM_M24LR64R(pReader, uiTagHandlerType, pTabItem)
00093 {
00094         if( (pTabItem->m_ucSnr[2]&0xFC) == 0x5C )       // M24LR64E-R
00095         {
00096                 m_sTagName = "ISO 15693 : ";
00097                 m_sTagName += FEDM_TabItem::GetISO15693Manufacturer(FEDM_ISC_ISO_MFR_STM);
00098                 m_sTagName += " M24LR64E-R";
00099         }
00100         else if( (pTabItem->m_ucSnr[2]&0xFC) == 0x4C )  // M24LR16E-R
00101         {
00102                 m_sTagName = "ISO 15693 : ";
00103                 m_sTagName += FEDM_TabItem::GetISO15693Manufacturer(FEDM_ISC_ISO_MFR_STM);
00104                 m_sTagName += " M24LR16E-R";
00105         }
00106         else if( (pTabItem->m_ucSnr[2]&0xFC) == 0x58 )  // M24LR04E-R
00107         {
00108                 m_sTagName = "ISO 15693 : ";
00109                 m_sTagName += FEDM_TabItem::GetISO15693Manufacturer(FEDM_ISC_ISO_MFR_STM);
00110                 m_sTagName += " M24LR04E-R";
00111         }
00112         else
00113         {
00114                 m_sTagName = "ISO 15693 : ";
00115                 m_sTagName += FEDM_TabItem::GetISO15693Manufacturer(FEDM_ISC_ISO_MFR_STM);
00116                 m_sTagName += " M24LRxxE-R";
00117         }
00118 }
00119 
00120 FedmIscTagHandler_ISO15693_STM_M24LRxxER::~FedmIscTagHandler_ISO15693_STM_M24LRxxER()
00121 {
00122 }
00123 
00124 // set all data members to 0
00125 /*void FedmIscTagHandler_ISO15693_STM_M24LRxxER::Init()
00126 {
00127 }*/
00128 
00129 
00130 // #########################################################################
00131 // #################### methods for energy harvesting mode
00132 // #########################################################################
00133 
00134 
00135 /***************************************************************************
00136   Begin                 :       25.09.2012 / M. Hultsch
00137 
00138   Version               :       04.03.01 / 25.09.2012 / M. Hultsch
00139 
00140   Function                      :       [0xB1][0xA0] Read Configuration Byte
00141 
00142   Parameters            :       unsigned char& ucData   - [out] reference to the configuration byte
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_M24LRxxER::ReadCfg(unsigned char& ucData)
00149 {
00150         int iErr = 0;
00151 
00152         ucData = 0;
00153         
00154         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA0));
00155         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00156 
00157         if(m_bNonAddressedMode)
00158         {
00159                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00160         }
00161         else if(m_pTabItem->m_bIsSelected)
00162         {
00163                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00164         }
00165         else
00166         {
00167                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00168                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00169         }
00170         
00171         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_STM));
00172         
00173         // ... and execute
00174         int iBack = m_pReader->SendProtocol(0xB1);
00175         if(iBack == 0)
00176         {
00177                 // return received data
00178                 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_RSP_STM_DATA, &ucData));
00179         }
00180 
00181         return iBack;
00182 }
00183 
00184 /***************************************************************************
00185   Begin                 :       25.09.2012 / M. Hultsch
00186 
00187   Version               :       04.03.01 / 25.09.2012 / M. Hultsch
00188 
00189   Function                      :       [0xB1][0xA1] Write Enegy Harvesting Configuration
00190 
00191   Parameters            :       unsigned char ucData    - [in] configuration byte
00192 
00193   Return value          :       0                               - if tramsmission was successful
00194                                                 status byte (>1)- if the reader signals a problem
00195                                                 error code (<0) - if something goes wrong
00196 ***************************************************************************/
00197 int FedmIscTagHandler_ISO15693_STM_M24LRxxER::WriteEHCfg(unsigned char ucData)
00198 {
00199         int iErr = 0;
00200         
00201         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA1));
00202         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00203 
00204         if(m_bNonAddressedMode)
00205         {
00206                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00207         }
00208         else if(m_pTabItem->m_bIsSelected)
00209         {
00210                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00211         }
00212         else
00213         {
00214                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00215                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00216         }
00217         
00218         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_STM));
00219 
00220         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_DATA, ucData));
00221         
00222         // ... and execute
00223         return m_pReader->SendProtocol(0xB1);
00224 }
00225 
00226 /***************************************************************************
00227   Begin                 :       25.09.2012 / M. Hultsch
00228 
00229   Version               :       04.03.01 / 25.09.2012 / M. Hultsch
00230 
00231   Function                      :       [0xB1][0xA2] Set or Reset Energy Harvesting Enable
00232 
00233   Parameters            :       unsigned char ucData    - [in] configuration byte
00234 
00235   Return value          :       0                               - if tramsmission was successful
00236                                                 status byte (>1)- if the reader signals a problem
00237                                                 error code (<0) - if something goes wrong
00238 ***************************************************************************/
00239 int FedmIscTagHandler_ISO15693_STM_M24LRxxER::SetRstEHEn(unsigned char ucData)
00240 {
00241         int iErr = 0;
00242         
00243         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA2));
00244         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00245 
00246         if(m_bNonAddressedMode)
00247         {
00248                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00249         }
00250         else if(m_pTabItem->m_bIsSelected)
00251         {
00252                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00253         }
00254         else
00255         {
00256                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00257                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00258         }
00259         
00260         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_STM));
00261 
00262         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_DATA, ucData));
00263         
00264         // ... and execute
00265         return m_pReader->SendProtocol(0xB1);
00266 }
00267 
00268 /***************************************************************************
00269   Begin                 :       25.09.2012 / M. Hultsch
00270 
00271   Version               :       04.03.01 / 25.09.2012 / M. Hultsch
00272 
00273   Function                      :       [0xB1][0xA3] Check Energy Harvesting Control Register
00274 
00275   Parameters            :       unsigned char& ucData   - [out] reference to the configuration byte
00276 
00277   Return value          :       0                               - if tramsmission was successful
00278                                                 status byte (>1)- if the reader signals a problem
00279                                                 error code (<0) - if something goes wrong
00280 ***************************************************************************/
00281 int FedmIscTagHandler_ISO15693_STM_M24LRxxER::CheckEHEn(unsigned char& ucData)
00282 {
00283         int iErr = 0;
00284 
00285         ucData = 0;
00286         
00287         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA3));
00288         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00289 
00290         if(m_bNonAddressedMode)
00291         {
00292                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00293         }
00294         else if(m_pTabItem->m_bIsSelected)
00295         {
00296                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00297         }
00298         else
00299         {
00300                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00301                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00302         }
00303         
00304         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_STM));
00305         
00306         // ... and execute
00307         int iBack = m_pReader->SendProtocol(0xB1);
00308         if(iBack == 0)
00309         {
00310                 // return received data
00311                 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_RSP_STM_DATA, &ucData));
00312         }
00313 
00314         return iBack;
00315 }
00316 
00317 /***************************************************************************
00318   Begin                 :       25.09.2012 / M. Hultsch
00319 
00320   Version               :       04.03.01 / 25.09.2012 / M. Hultsch
00321 
00322   Function                      :       [0xB1][0xA4] Write RF WIP/BUSY bit into Configuration Register
00323 
00324   Parameters            :       unsigned char ucData    - [in] configuration byte
00325 
00326   Return value          :       0                               - if tramsmission was successful
00327                                                 status byte (>1)- if the reader signals a problem
00328                                                 error code (<0) - if something goes wrong
00329 ***************************************************************************/
00330 int FedmIscTagHandler_ISO15693_STM_M24LRxxER::WriteDOCfg(unsigned char ucData)
00331 {
00332         int iErr = 0;
00333         
00334         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA4));
00335         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00336 
00337         if(m_bNonAddressedMode)
00338         {
00339                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00340         }
00341         else if(m_pTabItem->m_bIsSelected)
00342         {
00343                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00344         }
00345         else
00346         {
00347                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00348                 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00349         }
00350         
00351         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_STM));
00352 
00353         FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_STM_DATA, ucData));
00354         
00355         // ... and execute
00356         return m_pReader->SendProtocol(0xB1);
00357 }
00358 
00359 #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