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_IDS_SL13A.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 #if _MSC_VER <= 1200 // for Visual Studio 6
00052
00053 static const unsigned char PW_LEVEL_SYSTEM = 0x01;
00054 static const unsigned char PW_LEVEL_USER = 0x02;
00055 static const unsigned char PW_LEVEL_MEASUREMENT = 0x03;
00056 static const unsigned char PW_LEVEL_STORAGE_EEPROM = 0x80;
00057
00058 static const unsigned char LOG_MODE_DENSE = 0x00;
00059 static const unsigned char LOG_MODE_ALL_VALUES_OUT_OF_LIMITS = 0x01;
00060 static const unsigned char LOG_MODE_LIMITS_CROSSING = 0x03;
00061 #endif
00062
00063
00064
00065
00066
00067
00068
00069 FedmIscTagHandler_ISO15693_IDS_SL13A::FedmIscTagHandler_ISO15693_IDS_SL13A(
00070 FEDM_ISCReader* pReader,
00071 FEDM_ISOTabItem* pTabItem )
00072 : FedmIscTagHandler_ISO15693(pReader, FedmIscTagHandler::TYPE_ISO15693_KSW, pTabItem)
00073 {
00074 m_sTagName = "ISO 15693 : ";
00075 m_sTagName += FEDM_TabItem::GetISO15693Manufacturer(FEDM_ISC_ISO_MFR_IDS);
00076 m_sTagName += " SL13A";
00077 Init();
00078 }
00079
00080 FedmIscTagHandler_ISO15693_IDS_SL13A::FedmIscTagHandler_ISO15693_IDS_SL13A(
00081 FEDM_ISCReader* pReader,
00082 unsigned int uiTagHandlerType,
00083 FEDM_ISOTabItem* pTabItem )
00084 : FedmIscTagHandler_ISO15693(pReader, uiTagHandlerType, pTabItem)
00085 {
00086 m_sTagName = "ISO 15693 : ";
00087 m_sTagName += FEDM_TabItem::GetISO15693Manufacturer(FEDM_ISC_ISO_MFR_IDS);
00088 m_sTagName += " SL13A";
00089 Init();
00090 }
00091
00092 FedmIscTagHandler_ISO15693_IDS_SL13A::~FedmIscTagHandler_ISO15693_IDS_SL13A()
00093 {
00094 }
00095
00096
00097 void FedmIscTagHandler_ISO15693_IDS_SL13A::Init()
00098 {
00099 FedmIscTagHandler_ISO15693::Init();
00100
00101 m_ucTagError = 0;
00102 }
00103
00104 unsigned char FedmIscTagHandler_ISO15693_IDS_SL13A::GetTagError()
00105 {
00106 return m_ucTagError;
00107 }
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123 int FedmIscTagHandler_ISO15693_IDS_SL13A::SetPassword(
00124 unsigned char ucPasswordLevel,
00125 string sPassword )
00126 {
00127 int iBack = 0;
00128 int iErr = 0;
00129
00130 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA0));
00131 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00132
00133 if(m_bNonAddressedMode)
00134 {
00135 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00136 }
00137 else if(m_pTabItem->m_bIsSelected)
00138 {
00139 return FEDM_ERROR_UNSUPPORTED;
00140 }
00141 else
00142 {
00143 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00144 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00145 }
00146
00147 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_0xB1_REQ_IDS_PASSWORD_LEVEL, ucPasswordLevel));
00148 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_0xB1_REQ_IDS_PASSWORD, sPassword));
00149
00150 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_IDS));
00151
00152
00153 iBack = m_pReader->SendProtocol(0xB1);
00154 if(iBack == 0x95)
00155 {
00156 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_ISO_ERROR, &m_ucTagError));
00157 }
00158
00159 return iBack;
00160 }
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177 int FedmIscTagHandler_ISO15693_IDS_SL13A::SetLogMode(
00178 unsigned int uiLogMode )
00179 {
00180 int iBack = 0;
00181 int iErr = 0;
00182
00183 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA1));
00184 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00185
00186 if(m_bNonAddressedMode)
00187 {
00188 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00189 }
00190 else if(m_pTabItem->m_bIsSelected)
00191 {
00192 return FEDM_ERROR_UNSUPPORTED;
00193 }
00194 else
00195 {
00196 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00197 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00198 }
00199
00200 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_0xB1_REQ_IDS_LOG_MODE, uiLogMode));
00201
00202 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_IDS));
00203
00204
00205 iBack = m_pReader->SendProtocol(0xB1);
00206 if(iBack == 0x95)
00207 {
00208 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_ISO_ERROR, &m_ucTagError));
00209 }
00210
00211 return iBack;
00212 }
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234 int FedmIscTagHandler_ISO15693_IDS_SL13A::SetLogMode(
00235 bool bExternalSensor,
00236 unsigned char ucLogFormat,
00237 bool bBatteryCheck,
00238 bool bStorageRule,
00239 unsigned int uiLogInterval,
00240 unsigned int uiExtremeUpperLimit )
00241 {
00242 int iBack = 0;
00243 int iErr = 0;
00244 unsigned int uiLogMode = 0;
00245
00246 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA1));
00247 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00248
00249 if(m_bNonAddressedMode)
00250 {
00251 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00252 }
00253 else if(m_pTabItem->m_bIsSelected)
00254 {
00255 return FEDM_ERROR_UNSUPPORTED;
00256 }
00257 else
00258 {
00259 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00260 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00261 }
00262
00263
00264 uiLogMode = (uiExtremeUpperLimit & 0x000003FF);
00265 uiLogMode |= ((uiLogInterval & 0x00007FFF) << 10);
00266 if(bStorageRule)
00267 uiLogMode |= 0x08000000;
00268 if(bBatteryCheck)
00269 uiLogMode |= 0x10000000;
00270 uiLogMode |= (((unsigned int)(ucLogFormat & 0x03)) << 29);
00271 if(bExternalSensor)
00272 uiLogMode |= 0x80000000;
00273
00274 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_0xB1_REQ_IDS_LOG_MODE, uiLogMode));
00275
00276 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_IDS));
00277
00278
00279 iBack = m_pReader->SendProtocol(0xB1);
00280 if(iBack == 0x95)
00281 {
00282 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_ISO_ERROR, &m_ucTagError));
00283 }
00284
00285 return iBack;
00286 }
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304 int FedmIscTagHandler_ISO15693_IDS_SL13A::SetLogLimits(
00305 unsigned int uiExtremeLowerLimit,
00306 unsigned int uiLowerLimit,
00307 unsigned int uiUpperLimit )
00308 {
00309 int iBack = 0;
00310 int iErr = 0;
00311 unsigned int uiLogLimits = 0;
00312
00313 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA2));
00314 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00315
00316 if(m_bNonAddressedMode)
00317 {
00318 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00319 }
00320 else if(m_pTabItem->m_bIsSelected)
00321 {
00322 return FEDM_ERROR_UNSUPPORTED;
00323 }
00324 else
00325 {
00326 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00327 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00328 }
00329
00330
00331 uiLogLimits = (uiExtremeLowerLimit & 0x000003FF);
00332 uiLogLimits |= ((uiLowerLimit & 0x000003FF) << 10);
00333 uiLogLimits |= ((uiUpperLimit & 0x000003FF) << 20);
00334
00335 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_0xB1_REQ_IDS_LOG_LIMITS, uiLogLimits));
00336
00337 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_IDS));
00338
00339
00340 iBack = m_pReader->SendProtocol(0xB1);
00341 if(iBack == 0x95)
00342 {
00343 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_ISO_ERROR, &m_ucTagError));
00344 }
00345
00346 return iBack;
00347 }
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366 int FedmIscTagHandler_ISO15693_IDS_SL13A::GetMeasurementSetup(
00367 unsigned int& uiStartTime,
00368 unsigned int& uiLogLimits,
00369 unsigned int& uiLogMode,
00370 unsigned int& uiDelayTime )
00371 {
00372 int iBack = 0;
00373 int iErr = 0;
00374 unsigned int uiLogLimit = 0;
00375
00376 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA3));
00377 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00378
00379 if(m_bNonAddressedMode)
00380 {
00381 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00382 }
00383 else if(m_pTabItem->m_bIsSelected)
00384 {
00385 return FEDM_ERROR_UNSUPPORTED;
00386 }
00387 else
00388 {
00389 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00390 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00391 }
00392
00393 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_IDS));
00394
00395
00396 iBack = m_pReader->SendProtocol(0xB1);
00397 if(iBack == 0)
00398 {
00399
00400 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_0xB1_RSP_IDS_START_TIME, &uiStartTime));
00401 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_0xB1_RSP_IDS_LOG_LIMITS, &uiLogLimits));
00402 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_0xB1_RSP_IDS_LOG_MODE, &uiLogMode));
00403 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_0xB1_RSP_IDS_DELAY_TIME, &uiDelayTime));
00404 }
00405 else if(iBack == 0x95)
00406 {
00407 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_ISO_ERROR, &m_ucTagError));
00408 }
00409
00410 return iBack;
00411 }
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427 int FedmIscTagHandler_ISO15693_IDS_SL13A::SetExternalCalibrationData(
00428 unsigned int uiCalibrationData )
00429 {
00430 int iBack = 0;
00431 int iErr = 0;
00432
00433 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA4));
00434 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00435
00436 if(m_bNonAddressedMode)
00437 {
00438 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00439 }
00440 else if(m_pTabItem->m_bIsSelected)
00441 {
00442 return FEDM_ERROR_UNSUPPORTED;
00443 }
00444 else
00445 {
00446 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00447 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00448 }
00449
00450 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_0xB1_REQ_IDS_EXT_CAL_DATA, uiCalibrationData));
00451
00452 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_IDS));
00453
00454
00455 iBack = m_pReader->SendProtocol(0xB1);
00456 if(iBack == 0x95)
00457 {
00458 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_ISO_ERROR, &m_ucTagError));
00459 }
00460
00461 return iBack;
00462 }
00463
00464
00465
00466
00467
00468
00469
00470
00471
00472
00473
00474
00475
00476
00477
00478 int FedmIscTagHandler_ISO15693_IDS_SL13A::SetInternalCalibrationData(
00479 unsigned int uiCalibrationData )
00480 {
00481 int iBack = 0;
00482 int iErr = 0;
00483
00484 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA5));
00485 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00486
00487 if(m_bNonAddressedMode)
00488 {
00489 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00490 }
00491 else if(m_pTabItem->m_bIsSelected)
00492 {
00493 return FEDM_ERROR_UNSUPPORTED;
00494 }
00495 else
00496 {
00497 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00498 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00499 }
00500
00501 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_0xB1_REQ_IDS_INT_CAL_DATA, uiCalibrationData));
00502
00503 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_IDS));
00504
00505
00506 iBack = m_pReader->SendProtocol(0xB1);
00507 if(iBack == 0x95)
00508 {
00509 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_ISO_ERROR, &m_ucTagError));
00510 }
00511
00512 return iBack;
00513 }
00514
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529 int FedmIscTagHandler_ISO15693_IDS_SL13A::SetPassive()
00530 {
00531 int iBack = 0;
00532 int iErr = 0;
00533
00534 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA6));
00535 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00536
00537 if(m_bNonAddressedMode)
00538 {
00539 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00540 }
00541 else if(m_pTabItem->m_bIsSelected)
00542 {
00543 return FEDM_ERROR_UNSUPPORTED;
00544 }
00545 else
00546 {
00547 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00548 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00549 }
00550
00551 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_IDS));
00552
00553
00554 iBack = m_pReader->SendProtocol(0xB1);
00555 if(iBack == 0x95)
00556 {
00557 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_ISO_ERROR, &m_ucTagError));
00558 }
00559
00560 return iBack;
00561 }
00562
00563
00564
00565
00566
00567
00568
00569
00570
00571
00572
00573
00574
00575
00576
00577
00578 int FedmIscTagHandler_ISO15693_IDS_SL13A::StartLog(
00579 unsigned int uiStartTime )
00580 {
00581 int iBack = 0;
00582 int iErr = 0;
00583
00584 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA7));
00585 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00586
00587 if(m_bNonAddressedMode)
00588 {
00589 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00590 }
00591 else if(m_pTabItem->m_bIsSelected)
00592 {
00593 return FEDM_ERROR_UNSUPPORTED;
00594 }
00595 else
00596 {
00597 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00598 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00599 }
00600
00601 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_0xB1_REQ_IDS_START_TIME, uiStartTime));
00602
00603 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_IDS));
00604
00605
00606 iBack = m_pReader->SendProtocol(0xB1);
00607 if(iBack == 0x95)
00608 {
00609 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_ISO_ERROR, &m_ucTagError));
00610 }
00611
00612 return iBack;
00613 }
00614
00615
00616
00617
00618
00619
00620
00621
00622
00623
00624
00625
00626
00627
00628
00629
00630
00631
00632
00633
00634
00635 int FedmIscTagHandler_ISO15693_IDS_SL13A::StartLog(
00636 unsigned char ucYear,
00637 unsigned char ucMonth,
00638 unsigned char ucDay,
00639 unsigned char ucHour,
00640 unsigned char ucMinute,
00641 unsigned char ucSecond )
00642 {
00643 int iBack = 0;
00644 int iErr = 0;
00645 unsigned int uiStartTime = 0;
00646
00647 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA7));
00648 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00649
00650 if(m_bNonAddressedMode)
00651 {
00652 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00653 }
00654 else if(m_pTabItem->m_bIsSelected)
00655 {
00656 return FEDM_ERROR_UNSUPPORTED;
00657 }
00658 else
00659 {
00660 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00661 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00662 }
00663
00664
00665 uiStartTime = (ucSecond & 0x3F);
00666 uiStartTime |= (((unsigned int)(ucMinute & 0x3F)) << 6);
00667 uiStartTime |= (((unsigned int)(ucHour & 0x1F)) << 12);
00668 uiStartTime |= (((unsigned int)(ucDay & 0x1F)) << 17);
00669 uiStartTime |= (((unsigned int)(ucMonth & 0x0F)) << 22);
00670 uiStartTime |= (((unsigned int)(ucYear & 0x3F)) << 26);
00671
00672 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_0xB1_REQ_IDS_START_TIME, uiStartTime));
00673
00674 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_IDS));
00675
00676
00677 iBack = m_pReader->SendProtocol(0xB1);
00678 if(iBack == 0x95)
00679 {
00680 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_ISO_ERROR, &m_ucTagError));
00681 }
00682
00683 return iBack;
00684 }
00685
00686
00687
00688
00689
00690
00691
00692
00693
00694
00695
00696
00697
00698
00699
00700
00701
00702
00703
00704
00705
00706
00707
00708 int FedmIscTagHandler_ISO15693_IDS_SL13A::GetLogState(
00709 bool& bActiveFlag,
00710 unsigned int& uiErrorsAndEvents,
00711 unsigned char& ucNoOfMemReplacements,
00712 unsigned int& uiNoOfMeasurements,
00713 unsigned char& ucMeasurementAddressPointer,
00714 unsigned char& ucExtremeLowerLimitCounter,
00715 unsigned char& ucLowerLimitCounter,
00716 unsigned char& ucHigherLimitCounter,
00717 unsigned char& ucExtremeHigherLimitCounter )
00718 {
00719 int iBack = 0;
00720 int iErr = 0;
00721 unsigned int uiMeasurementStatus = 0;
00722 unsigned int uiLimitsCounter = 0;
00723
00724 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA8));
00725 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00726
00727 if(m_bNonAddressedMode)
00728 {
00729 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00730 }
00731 else if(m_pTabItem->m_bIsSelected)
00732 {
00733 return FEDM_ERROR_UNSUPPORTED;
00734 }
00735 else
00736 {
00737 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00738 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00739 }
00740
00741 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_IDS));
00742
00743
00744 iBack = m_pReader->SendProtocol(0xB1);
00745 if(iBack == 0)
00746 {
00747
00748 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_0xB1_RSP_IDS_MEAS_STATE, &uiMeasurementStatus));
00749 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_0xB1_RSP_IDS_LIMITS_COUNTER, &uiLimitsCounter));
00750
00751 if(uiMeasurementStatus & 0x00000001)
00752 bActiveFlag = true;
00753 else
00754 bActiveFlag = false;
00755
00756 uiErrorsAndEvents = ((uiMeasurementStatus & 0x000007FE) >> 1);
00757 ucNoOfMemReplacements = (unsigned char)((uiMeasurementStatus & 0x00003800) >> 11);
00758 uiNoOfMeasurements = ((uiMeasurementStatus & 0x00FFC000) >> 14);
00759 ucMeasurementAddressPointer = (unsigned char)((uiMeasurementStatus & 0xFF000000) >> 24);
00760
00761 ucExtremeLowerLimitCounter = (unsigned char) (uiLimitsCounter & 0x000000FF);
00762 ucLowerLimitCounter = (unsigned char)((uiLimitsCounter & 0x0000FF00) >> 8);
00763 ucHigherLimitCounter = (unsigned char)((uiLimitsCounter & 0x00FF0000) >> 16);
00764 ucExtremeHigherLimitCounter = (unsigned char)((uiLimitsCounter & 0xFF000000) >> 24);
00765 }
00766 else if(iBack == 0x95)
00767 {
00768 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_ISO_ERROR, &m_ucTagError));
00769 }
00770
00771 return iBack;
00772 }
00773
00774
00775
00776
00777
00778
00779
00780
00781
00782
00783
00784
00785
00786
00787
00788
00789 int FedmIscTagHandler_ISO15693_IDS_SL13A::GetLogState(
00790 unsigned int& uiMeasurementStatus,
00791 unsigned int& uiLimitCounters )
00792 {
00793 int iBack = 0;
00794 int iErr = 0;
00795
00796 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA8));
00797 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00798
00799 if(m_bNonAddressedMode)
00800 {
00801 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00802 }
00803 else if(m_pTabItem->m_bIsSelected)
00804 {
00805 return FEDM_ERROR_UNSUPPORTED;
00806 }
00807 else
00808 {
00809 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00810 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00811 }
00812
00813 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_IDS));
00814
00815
00816 iBack = m_pReader->SendProtocol(0xB1);
00817 if(iBack == 0)
00818 {
00819
00820 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_0xB1_RSP_IDS_MEAS_STATE, &uiMeasurementStatus));
00821 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_0xB1_RSP_IDS_LIMITS_COUNTER, &uiLimitCounters));
00822 }
00823 else if(iBack == 0x95)
00824 {
00825 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_ISO_ERROR, &m_ucTagError));
00826 }
00827
00828 return iBack;
00829 }
00830
00831
00832
00833
00834
00835
00836
00837
00838
00839
00840
00841
00842
00843
00844
00845
00846 int FedmIscTagHandler_ISO15693_IDS_SL13A::GetCalibrationData(
00847 unsigned int& uiInternalCalibrationData,
00848 unsigned int& uiExternalCalibrationData )
00849 {
00850 int iBack = 0;
00851 int iErr = 0;
00852
00853 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xA9));
00854 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00855
00856 if(m_bNonAddressedMode)
00857 {
00858 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00859 }
00860 else if(m_pTabItem->m_bIsSelected)
00861 {
00862 return FEDM_ERROR_UNSUPPORTED;
00863 }
00864 else
00865 {
00866 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00867 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00868 }
00869
00870 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_IDS));
00871
00872
00873 iBack = m_pReader->SendProtocol(0xB1);
00874 if(iBack == 0)
00875 {
00876
00877 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_0xB1_RSP_IDS_INT_CAL_DATA, &uiInternalCalibrationData));
00878 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_0xB1_RSP_IDS_EXT_CAL_DATA, &uiExternalCalibrationData));
00879 }
00880 else if(iBack == 0x95)
00881 {
00882 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_ISO_ERROR, &m_ucTagError));
00883 }
00884
00885 return iBack;
00886 }
00887
00888
00889
00890
00891
00892
00893
00894
00895
00896
00897
00898
00899
00900
00901
00902 int FedmIscTagHandler_ISO15693_IDS_SL13A::GetBatteryLevel(
00903 unsigned char& ucBatteryLevel )
00904 {
00905 int iBack = 0;
00906 int iErr = 0;
00907
00908 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xAA));
00909 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00910
00911 if(m_bNonAddressedMode)
00912 {
00913 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00914 }
00915 else if(m_pTabItem->m_bIsSelected)
00916 {
00917 return FEDM_ERROR_UNSUPPORTED;
00918 }
00919 else
00920 {
00921 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00922 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00923 }
00924
00925 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_IDS));
00926
00927
00928 iBack = m_pReader->SendProtocol(0xB1);
00929 if(iBack == 0)
00930 {
00931
00932 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_0xB1_RSP_IDS_BATTERY_LEVEL, &ucBatteryLevel));
00933 }
00934 else if(iBack == 0x95)
00935 {
00936 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_ISO_ERROR, &m_ucTagError));
00937 }
00938
00939 return iBack;
00940 }
00941
00942
00943
00944
00945
00946
00947
00948
00949
00950
00951
00952
00953
00954
00955
00956 int FedmIscTagHandler_ISO15693_IDS_SL13A::VerifyPassword(
00957 unsigned char ucPasswordLevel )
00958 {
00959 int iBack = 0;
00960 int iErr = 0;
00961
00962 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xAB));
00963 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
00964
00965 if(m_bNonAddressedMode)
00966 {
00967 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
00968 }
00969 else if(m_pTabItem->m_bIsSelected)
00970 {
00971 return FEDM_ERROR_UNSUPPORTED;
00972 }
00973 else
00974 {
00975 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
00976 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
00977 }
00978
00979 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_0xB1_REQ_IDS_PASSWORD_LEVEL, ucPasswordLevel));
00980
00981 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_IDS));
00982
00983
00984 iBack = m_pReader->SendProtocol(0xB1);
00985 if(iBack == 0x95)
00986 {
00987 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_ISO_ERROR, &m_ucTagError));
00988 }
00989
00990 return iBack;
00991 }
00992
00993
00994
00995
00996
00997
00998
00999
01000
01001
01002
01003
01004
01005
01006
01007
01008
01009 int FedmIscTagHandler_ISO15693_IDS_SL13A::Initialize(
01010 unsigned char ucNoOfUserBlocks,
01011 unsigned int uiDelayTime,
01012 bool bSingleUse )
01013 {
01014 int iBack = 0;
01015 int iErr = 0;
01016 unsigned int uiIniData = 0;
01017
01018 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xAC));
01019 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
01020
01021 if(m_bNonAddressedMode)
01022 {
01023 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
01024 }
01025 else if(m_pTabItem->m_bIsSelected)
01026 {
01027 return FEDM_ERROR_UNSUPPORTED;
01028 }
01029 else
01030 {
01031 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
01032 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
01033 }
01034
01035
01036 uiIniData = ucNoOfUserBlocks;
01037 uiIniData |= ((uiDelayTime & 0x00000FFF) << 8);
01038 if(bSingleUse)
01039 uiIniData |= 0x80000000;
01040
01041 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_0xB1_REQ_IDS_INIT_DATA, uiIniData));
01042
01043 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_IDS));
01044
01045
01046 iBack = m_pReader->SendProtocol(0xB1);
01047 if(iBack == 0x95)
01048 {
01049 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_ISO_ERROR, &m_ucTagError));
01050 }
01051
01052 return iBack;
01053 }
01054
01055
01056
01057
01058
01059
01060
01061
01062
01063
01064
01065
01066
01067
01068
01069 int FedmIscTagHandler_ISO15693_IDS_SL13A::GetTemperature(
01070 unsigned int& uiTemperature )
01071 {
01072 int iBack = 0;
01073 int iErr = 0;
01074
01075 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_CMD, (unsigned char)0xAD));
01076 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE, (unsigned char)0));
01077
01078 if(m_bNonAddressedMode)
01079 {
01080 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_NONADR));
01081 }
01082 else if(m_pTabItem->m_bIsSelected)
01083 {
01084 return FEDM_ERROR_UNSUPPORTED;
01085 }
01086 else
01087 {
01088 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MODE_ADR, (unsigned char)FEDM_ISC_ISO_MODE_ADR));
01089 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_REQ_UID, m_pTabItem->m_ucSnr, m_pTabItem->m_ucSnrLen));
01090 }
01091
01092 FEDM_CHK1(iErr, m_pReader->SetData(FEDM_ISC_TMP_B1_MFR, (unsigned char)FEDM_ISC_ISO_MFR_IDS));
01093
01094
01095 iBack = m_pReader->SendProtocol(0xB1);
01096 if(iBack == 0)
01097 {
01098
01099 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_0xB1_RSP_IDS_MEAS_TEMP, &uiTemperature));
01100 }
01101 else if(iBack == 0x95)
01102 {
01103 FEDM_CHK1(iErr, m_pReader->GetData(FEDM_ISC_TMP_B1_ISO_ERROR, &m_ucTagError));
01104 }
01105
01106 return iBack;
01107 }
01108
01109 #endif // #if !defined(_FEDM_NO_TAG_HANDLER_ISO15693)