00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
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
00054
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 )
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 )
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 )
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 )
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 )
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 )
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
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
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
00174 int iBack = m_pReader->SendProtocol(0xB1);
00175 if(iBack == 0)
00176 {
00177
00178 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_RSP_STM_DATA, &ucData));
00179 }
00180
00181 return iBack;
00182 }
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
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
00223 return m_pReader->SendProtocol(0xB1);
00224 }
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
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
00265 return m_pReader->SendProtocol(0xB1);
00266 }
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
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
00307 int iBack = m_pReader->SendProtocol(0xB1);
00308 if(iBack == 0)
00309 {
00310
00311 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_RSP_STM_DATA, &ucData));
00312 }
00313
00314 return iBack;
00315 }
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
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
00356 return m_pReader->SendProtocol(0xB1);
00357 }
00358
00359 #endif // #if !defined(_FEDM_NO_TAG_HANDLER_ISO15693)