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
00037
00038
00039
00040
00041
00042 #if !defined(_FEDM_NO_TAG_HANDLER_ISO15693)
00043
00044 #include "FedmIscTagHandler_ISO15693_NXP_ICODE_SLI_L.h"
00045 #include "../FEDM_ISCReader.h"
00046 #include "../FEDM_ISOTabItem.h"
00047 #include "../FEDM_ISCReaderID.h"
00048 #include "../FEDM_ISC.h"
00049 #include "../../FEDM_Functions.h"
00050
00051
00052 #if _MSC_VER >= 1400
00053 #pragma warning(disable : 4996)
00054 #endif
00055
00056
00057
00058
00059
00060
00061
00062
00063 FedmIscTagHandler_ISO15693_NXP_ICODE_SLI_L::FedmIscTagHandler_ISO15693_NXP_ICODE_SLI_L(
00064 FEDM_ISCReader* pReader,
00065 FEDM_ISOTabItem* pTabItem )
00066 : FedmIscTagHandler_ISO15693_NXP_ICODE_SLI(pReader, FedmIscTagHandler::TYPE_ISO15693_NXP_ICODE_SLI_L, pTabItem)
00067 {
00068 m_sTagName = "ISO 15693 : ";
00069 m_sTagName += FEDM_TabItem::GetISO15693Manufacturer(FEDM_ISC_ISO_MFR_NXP);
00070 m_sTagName += " I-Code SLI-L";
00071 }
00072
00073 FedmIscTagHandler_ISO15693_NXP_ICODE_SLI_L::FedmIscTagHandler_ISO15693_NXP_ICODE_SLI_L(
00074 FEDM_ISCReader* pReader,
00075 unsigned int uiTagHandlerType,
00076 FEDM_ISOTabItem* pTabItem )
00077 : FedmIscTagHandler_ISO15693_NXP_ICODE_SLI(pReader, uiTagHandlerType, pTabItem)
00078 {
00079 m_sTagName = "ISO 15693 : ";
00080 m_sTagName += FEDM_TabItem::GetISO15693Manufacturer(FEDM_ISC_ISO_MFR_NXP);
00081 m_sTagName += " I-Code SLI-L";
00082 }
00083
00084 FedmIscTagHandler_ISO15693_NXP_ICODE_SLI_L::~FedmIscTagHandler_ISO15693_NXP_ICODE_SLI_L()
00085 {
00086 }
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106 int FedmIscTagHandler_ISO15693_NXP_ICODE_SLI_L::PasswordProtectEAS()
00107 {
00108 int iErr = 0;
00109
00110 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA6));
00111 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00112
00113 if(m_bNonAddressedMode)
00114 {
00115 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00116 }
00117 else if(m_pTabItem->m_bIsSelected)
00118 {
00119 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00120 }
00121 else
00122 {
00123 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00124 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00125 }
00126
00127 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA6));
00128 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_NXP));
00129
00130
00131 return m_pReader->SendProtocol(0xB1);
00132 }
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147 int FedmIscTagHandler_ISO15693_NXP_ICODE_SLI_L::WriteEASID(
00148 string sEASID)
00149 {
00150 int iErr = 0;
00151
00152 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA7));
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_NXP_EAS_ID, sEASID));
00170
00171 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA7));
00172 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_NXP));
00173
00174
00175 return m_pReader->SendProtocol(0xB1);
00176 }
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191 int FedmIscTagHandler_ISO15693_NXP_ICODE_SLI_L::GetRandomNumber(
00192 unsigned char* ucRandomNo,
00193 unsigned int uiRandomNoBufferLen )
00194 {
00195 FEDM_CHK3(ucRandomNo);
00196
00197 if(uiRandomNoBufferLen < 2)
00198 return FEDM_ERROR_BUFFER_LENGTH;
00199
00200 int iErr = 0;
00201
00202 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xB2));
00203 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00204
00205 if(m_bNonAddressedMode)
00206 {
00207 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00208 }
00209 else if(m_pTabItem->m_bIsSelected)
00210 {
00211 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00212 }
00213 else
00214 {
00215 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00216 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00217 }
00218
00219 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xB2));
00220 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_NXP));
00221
00222
00223 int iBack = m_pReader->SendProtocol(0xB1);
00224 if(iBack)
00225 return iBack;
00226
00227 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_RSP_NXP_RANDOM_NUMBER, ucRandomNo, 2));
00228
00229 return FEDM_OK;
00230 }
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245 int FedmIscTagHandler_ISO15693_NXP_ICODE_SLI_L::SetPassword(
00246 unsigned char ucPasswordIdentifier,
00247 string sPassword)
00248 {
00249 int iErr = 0;
00250
00251 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xB3));
00252 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00253
00254 if(m_bNonAddressedMode)
00255 {
00256 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00257 }
00258 else if(m_pTabItem->m_bIsSelected)
00259 {
00260 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00261 }
00262 else
00263 {
00264 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00265 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00266 }
00267
00268 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_NXP_PASSWORD_ID, ucPasswordIdentifier));
00269 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_NXP_PASSWORD, sPassword));
00270
00271 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xB3));
00272 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_NXP));
00273
00274
00275 return m_pReader->SendProtocol(0xB1);
00276 }
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290 int FedmIscTagHandler_ISO15693_NXP_ICODE_SLI_L::WritePassword(
00291 unsigned char ucPasswordIdentifier,
00292 string sPassword)
00293 {
00294 int iErr = 0;
00295
00296 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xB4));
00297 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00298
00299 if(m_bNonAddressedMode)
00300 {
00301 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00302 }
00303 else if(m_pTabItem->m_bIsSelected)
00304 {
00305 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00306 }
00307 else
00308 {
00309 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00310 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00311 }
00312
00313 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_NXP_PASSWORD_ID, ucPasswordIdentifier));
00314 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_NXP_PASSWORD, sPassword));
00315
00316 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xB4));
00317 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_NXP));
00318
00319
00320 return m_pReader->SendProtocol(0xB1);
00321 }
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336 int FedmIscTagHandler_ISO15693_NXP_ICODE_SLI_L::LockPassword(
00337 unsigned char ucPasswordIdentifier)
00338 {
00339 int iErr = 0;
00340
00341 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xB5));
00342 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00343
00344 if(m_bNonAddressedMode)
00345 {
00346 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00347 }
00348 else if(m_pTabItem->m_bIsSelected)
00349 {
00350 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00351 }
00352 else
00353 {
00354 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00355 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00356 }
00357
00358 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_NXP_PASSWORD_ID, ucPasswordIdentifier));
00359
00360 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xB5));
00361 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_NXP));
00362
00363
00364 return m_pReader->SendProtocol(0xB1);
00365 }
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378
00379
00380 int FedmIscTagHandler_ISO15693_NXP_ICODE_SLI_L::DestroySLI_L()
00381 {
00382 int iErr = 0;
00383
00384 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xB9));
00385 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00386
00387 if(m_bNonAddressedMode)
00388 {
00389 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00390 }
00391 else if(m_pTabItem->m_bIsSelected)
00392 {
00393 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00394 }
00395 else
00396 {
00397 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00398 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00399 }
00400
00401 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xB9));
00402 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_NXP));
00403
00404
00405 return m_pReader->SendProtocol(0xB1);
00406 }
00407
00408
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421 int FedmIscTagHandler_ISO15693_NXP_ICODE_SLI_L::EnablePrivacy()
00422 {
00423 int iErr = 0;
00424
00425 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xBA));
00426 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00427
00428 if(m_bNonAddressedMode)
00429 {
00430 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00431 }
00432 else if(m_pTabItem->m_bIsSelected)
00433 {
00434 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_SEL));
00435 }
00436 else
00437 {
00438 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00439 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00440 }
00441
00442 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xBA));
00443 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_NXP));
00444
00445
00446 return m_pReader->SendProtocol(0xB1);
00447 }
00448
00449 #endif // #if !defined(_FEDM_NO_TAG_HANDLER_ISO15693)