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
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065 #include "FedmIscReport_ReaderInfo.h"
00066 #include "../FEDM_ISCReader.h"
00067 #include "../FEDM_ISCReaderID.h"
00068 #include "../../FEDM_Functions.h"
00069 #if !defined(_FEDM_NO_PD_SUPPORT)
00070 #include "../peripheral_devices/FedmIscPeripheralDevice.h"
00071 #endif
00072
00073
00074 FedmIscReport_ReaderInfo::FedmIscReport_ReaderInfo(FEDM_ISCReader* pReader)
00075 {
00076 m_pReader = pReader;
00077 }
00078
00079 FedmIscReport_ReaderInfo::~FedmIscReport_ReaderInfo()
00080 {
00081 }
00082
00083 string FedmIscReport_ReaderInfo::BuildReport(unsigned char ucMode)
00084 {
00085 #if _MSC_VER <= 1200
00086 m_sReport.erase(m_sReport.begin(), m_sReport.end());
00087 #else
00088 m_sReport.clear();
00089 #endif
00090 BuildReport(ucMode, m_sReport);
00091 return m_sReport;
00092 }
00093
00094 int FedmIscReport_ReaderInfo::BuildReport(unsigned char ucMode, string& sReport)
00095 {
00096 if(m_pReader == NULL)
00097 return FEDM_ERROR_NULL_POINTER;
00098
00099 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
00100
00101 switch(ucMode)
00102 {
00103 case 0x00:
00104 if(pInfo->bIsMode0x00Read)
00105 Add0x00InfoText(sReport);
00106 break;
00107
00108 case 0x01:
00109 if(pInfo->bIsMode0x01Read)
00110 Add0x01InfoText(sReport);
00111 break;
00112
00113 case 0x02:
00114 if(pInfo->bIsMode0x02Read)
00115 Add0x02InfoText(sReport);
00116 break;
00117
00118 case 0x03:
00119 if(pInfo->bIsMode0x03Read)
00120 Add0x03InfoText(sReport);
00121 break;
00122
00123 case 0x04:
00124 if(pInfo->bIsMode0x04Read)
00125 Add0x04InfoText(sReport);
00126 break;
00127
00128 case 0x05:
00129 if(pInfo->bIsMode0x05Read)
00130 Add0x05InfoText(sReport);
00131 break;
00132
00133 case 0x06:
00134 if(pInfo->bIsMode0x06Read)
00135 Add0x06InfoText(sReport);
00136 break;
00137
00138 case 0x07:
00139 if(pInfo->bIsMode0x07Read)
00140 Add0x07InfoText(sReport);
00141 break;
00142
00143 case 0x08:
00144 if(pInfo->bIsMode0x08Read)
00145 Add0x08InfoText(sReport);
00146 break;
00147
00148 case 0x09:
00149 if(pInfo->bIsMode0x09Read)
00150 Add0x09InfoText(sReport);
00151 break;
00152
00153 case 0x10:
00154 if(pInfo->bIsMode0x10Read)
00155 Add0x10InfoText(sReport);
00156 break;
00157
00158 case 0x11:
00159 if(pInfo->bIsMode0x11Read)
00160 Add0x11InfoText(sReport);
00161 break;
00162
00163 case 0x12:
00164 if(pInfo->bIsMode0x12Read)
00165 Add0x12InfoText(sReport);
00166 break;
00167
00168 case 0x40:
00169 if(pInfo->bIsMode0x40Read)
00170 Add0x40InfoText(sReport);
00171 break;
00172
00173 case 0x41:
00174 if(pInfo->bIsMode0x41Read)
00175 Add0x41InfoText(sReport);
00176 break;
00177
00178 case 0x50:
00179 if(pInfo->bIsMode0x50Read)
00180 Add0x50InfoText(sReport);
00181 break;
00182
00183 case 0x51:
00184 if(pInfo->bIsMode0x51Read)
00185 Add0x51InfoText(sReport);
00186 break;
00187
00188 case 0x52:
00189 if(pInfo->bIsMode0x52Read)
00190 Add0x52InfoText(sReport);
00191 break;
00192
00193 case 0x53:
00194 if(pInfo->bIsMode0x53Read)
00195 Add0x53InfoText(sReport);
00196 break;
00197
00198 case 0x54:
00199 if(pInfo->bIsMode0x54Read)
00200 Add0x54InfoText(sReport);
00201 break;
00202
00203 case 0x55:
00204 if(pInfo->bIsMode0x55Read)
00205 Add0x55InfoText(sReport);
00206 break;
00207
00208 case 0x56:
00209 if(pInfo->bIsMode0x56Read)
00210 Add0x56InfoText(sReport);
00211 break;
00212
00213 case 0x57:
00214 if(pInfo->bIsMode0x57Read)
00215 Add0x57InfoText(sReport);
00216 break;
00217
00218 case 0x60:
00219 if(pInfo->bIsMode0x60Read)
00220 Add0x60InfoText(sReport);
00221 break;
00222
00223 case 0x61:
00224 if(pInfo->bIsMode0x61Read)
00225 Add0x61InfoText(sReport);
00226 break;
00227
00228 case 0x80:
00229 if(pInfo->bIsMode0x80Read)
00230 Add0x80InfoText(sReport);
00231 break;
00232
00233 case 0xFF:
00234 AddAllInfoText(sReport);
00235 break;
00236
00237 default:
00238 break;
00239 }
00240
00241 return FEDM_OK;
00242 }
00243
00244
00245
00246 void FedmIscReport_ReaderInfo::Add0x00InfoText(string& sReport, bool bSingle)
00247 {
00248 char cBuffer[64];
00249 unsigned char ucSWRevHigh = 0;
00250 unsigned char ucSWRevLow = 0;
00251 unsigned char ucHWType = 0;
00252 unsigned char ucSWType = 0;
00253 unsigned char ucDRev = 0;
00254 unsigned char ucTrType[2];
00255 unsigned char ucTrTypeUhf[2];
00256 unsigned int uiRxBufLen = 0;
00257 unsigned int uiTxBufLen = 0;
00258 unsigned char ucReaderClassGen = 0;
00259 unsigned char ucReaderTypeOfClass = 0;
00260 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
00261
00262 if(bSingle)
00263 {
00264 m_pReader->GetData(FEDM_ISC_TMP_SOFTVER_D_REV, &ucDRev);
00265 m_pReader->GetData(FEDM_ISC_TMP_SOFTVER_SW_REV_HIGH, &ucSWRevHigh);
00266 m_pReader->GetData(FEDM_ISC_TMP_SOFTVER_SW_REV_LOW, &ucSWRevLow);
00267 m_pReader->GetData(FEDM_ISC_TMP_SOFTVER_HW_TYPE, &ucHWType);
00268 m_pReader->GetData(FEDM_ISC_TMP_SOFTVER_SW_TYPE, &ucSWType);
00269 m_pReader->GetData(FEDM_ISC_TMP_SOFTVER_TR_TYPE, ucTrType, 2);
00270 m_pReader->GetData(FEDM_ISC_TMP_SOFTVER_RX_BUF, &uiRxBufLen);
00271 m_pReader->GetData(FEDM_ISC_TMP_SOFTVER_TX_BUF, &uiTxBufLen);
00272 m_pReader->GetData(FEDM_ISC_TMP_SOFTVER_TR_TYPE_UHF, ucTrTypeUhf, 2);
00273 m_pReader->GetData(FEDM_ISC_TMP_SOFTVER_READER_CLASS_GEN, &ucReaderClassGen);
00274 m_pReader->GetData(FEDM_ISC_TMP_SOFTVER_READER_TYPE_OF_CLASS, &ucReaderTypeOfClass);
00275 }
00276 else
00277 {
00278 ucSWRevHigh = pInfo->ucRfcSwVer[0];
00279 ucSWRevLow = pInfo->ucRfcSwVer[1];
00280 ucDRev = pInfo->ucRfcDevVer;
00281 ucHWType = pInfo->ucRfcHwType;
00282 ucSWType = pInfo->ucReaderType;
00283 ucTrType[0] = pInfo->ucRfcTrType[0];
00284 ucTrType[1] = pInfo->ucRfcTrType[1];
00285 uiRxBufLen = (pInfo->ucRfcRxBufferSize[0]<<8) + pInfo->ucRfcRxBufferSize[1];
00286 uiTxBufLen = (pInfo->ucRfcTxBufferSize[0]<<8) + pInfo->ucRfcTxBufferSize[1];
00287 ucTrTypeUhf[0] = pInfo->ucRfcUhfTrType[0];
00288 ucTrTypeUhf[1] = pInfo->ucRfcUhfTrType[1];
00289 ucReaderClassGen = pInfo->ucReaderClassGen;
00290 ucReaderTypeOfClass = pInfo->ucReaderTypeOfClass;
00291 }
00292
00293
00294
00295 sReport += "Firmware Version of RF Communication Controller:";
00296 sReport += "\r\n";
00297 if(ucSWType==FEDM_ISC_TYPE_ISCLR200)
00298 sprintf(cBuffer, "%02d.%02d.%02d", (ucSWRevHigh&0x0F), ucSWRevLow, ucDRev);
00299 else
00300 sprintf(cBuffer, "%02d.%02d.%02d", ucSWRevHigh, ucSWRevLow, ucDRev);
00301
00302 sReport += "\tSoftware Revision:.....";
00303 sReport += cBuffer;
00304 if(pInfo->ucReaderType == FEDM_ISC_TYPE_ISCLRU3000)
00305 {
00306 if(ucSWRevHigh < 2)
00307 {
00308 sReport+= " (unsupported)";
00309 }
00310 }
00311 sReport += "\r\n";
00312 sprintf(cBuffer, "0x%02X", ucHWType);
00313 sReport += "\tHardware Type:.........";
00314 sReport += cBuffer;
00315 sReport += "\r\n";
00316
00317 switch(ucSWType)
00318 {
00319 case FEDM_ISC_TYPE_CPRM02:
00320 if(ucHWType & 0x01)
00321 sReport += "\t - with SAM socket\r\n";
00322 else
00323 sReport += "\t - without SAM socket\r\n";
00324
00325 if( (ucHWType & 0x03) == 0x03)
00326 sReport += "\t - SAM inserted\r\n";
00327 else if( (ucHWType & 0x01) && !(ucHWType & 0x02) )
00328 sReport += "\t - SAM not inserted\r\n";
00329
00330 if( (ucHWType & 0xC0) == 0x00)
00331 sReport += "\t - Model is -CA\r\n";
00332 else if( (ucHWType & 0xC0) == 0x40 )
00333 sReport += "\t - Model is -BA\r\n";
00334 else if( (ucHWType & 0xC0) == 0x80 )
00335 sReport += "\t - Model is -C\r\n";
00336 else if( (ucHWType & 0xC0) == 0xC0 )
00337 sReport += "\t - Model is -B\r\n";
00338
00339 break;
00340
00341 case FEDM_ISC_TYPE_CPR02:
00342 case FEDM_ISC_TYPE_CPR04_U:
00343 if(ucHWType & 0x01)
00344 sReport += "\t - with SAM socket\r\n";
00345 else
00346 sReport += "\t - without SAM socket\r\n";
00347
00348 if( (ucHWType & 0x03) == 0x03)
00349 sReport += "\t - SAM inserted\r\n";
00350 else if( (ucHWType & 0x01) && !(ucHWType & 0x02) )
00351 sReport += "\t - SAM not inserted\r\n";
00352
00353 break;
00354
00355 case FEDM_ISC_TYPE_CPR40_XX_U:
00356 case FEDM_ISC_TYPE_CPR40_XX:
00357 if(ucHWType & 0x01)
00358 sReport += "\t - with SAM sockets\r\n";
00359 else
00360 sReport += "\t - without SAM sockets\r\n";
00361
00362 if( (ucHWType & 0x03) == 0x03)
00363 sReport += "\t - SAM inserted in socket 1\r\n";
00364 else if( (ucHWType & 0x01) && !(ucHWType & 0x02) )
00365 sReport += "\t - SAM socket 1 is not used\r\n";
00366
00367 if( (ucHWType & 0x11) == 0x11)
00368 sReport += "\t - SAM inserted in socket 2\r\n";
00369 else if( (ucHWType & 0x01) && !(ucHWType & 0x02) )
00370 sReport += "\t - SAM socket 2 is not used\r\n";
00371
00372 break;
00373 }
00374
00375 if(ucSWType & 0x80)
00376 {
00377
00378 sReport += "\tReader Class:..........";
00379 sprintf(cBuffer, "%02d", ucSWType);
00380 sReport += cBuffer;
00381 sReport += "\tReader Class Gen:......";
00382 sprintf(cBuffer, "%02d", ucReaderClassGen);
00383 sReport += cBuffer;
00384 sReport += "\tReader Type:...........";
00385 sprintf(cBuffer, "%02d", ucReaderTypeOfClass);
00386 sReport += cBuffer;
00387 }
00388 else
00389 {
00390 sReport += "\tReader Type:...........";
00391 sprintf(cBuffer, "%02d", ucSWType);
00392 sReport += cBuffer;
00393 }
00394 sReport += " (";
00395 sReport += m_pReader->GetReaderName();
00396 sReport += ")";
00397 sReport += "\r\n";
00398 if(ucSWType == FEDM_ISC_TYPE_ISCPRHD102)
00399 {
00400 sprintf(cBuffer, "0x%02X 0x%02X", ucTrType[0], ucTrType[1]);
00401 sReport += "\tHF Transponder Types:.";
00402 sReport += cBuffer;
00403 sReport += "\r\n";
00404
00405 sprintf(cBuffer, "0x%02X 0x%02X", ucTrTypeUhf[0], ucTrTypeUhf[1]);
00406 sReport += "\tUHF Transponder Types:.";
00407 sReport += cBuffer;
00408 sReport += "\r\n";
00409 }
00410 else if(ucSWType == FEDM_ISC_TYPE_CPR46_XX || ucSWType == FEDM_ISC_TYPE_CPR47_XX || ucSWType == FEDM_ISC_TYPE_MAX_ONTOP)
00411 {
00412
00413 }
00414 else
00415 {
00416 sprintf(cBuffer, "0x%02X 0x%02X", ucTrType[0], ucTrType[1]);
00417 sReport += "\tTransponder Types:.....";
00418 sReport += cBuffer;
00419 sReport += "\r\n";
00420 }
00421
00422 sprintf(cBuffer, "%05d", uiRxBufLen);
00423 sReport += "\tMax. Rx buffer size:...";
00424 sReport += cBuffer;
00425 sReport += "\r\n";
00426 sprintf(cBuffer, "%05d", uiTxBufLen);
00427 sReport += "\tMax. Tx buffer size:...";
00428 sReport += cBuffer;
00429 sReport += "\r\n";
00430 }
00431
00432
00433 void FedmIscReport_ReaderInfo::Add0x01InfoText(string& sReport, bool bSingle)
00434 {
00435 char cBuffer[64];
00436 unsigned char ucSWMajor = 0;
00437 unsigned char ucSWMinor = 0;
00438 unsigned char ucSWDev = 0;
00439 unsigned char ucHWType = 0;
00440 unsigned char ucEmbAppSWMajor = 0;
00441 unsigned char ucEmbAppSWMinor = 0;
00442 unsigned char ucEmbAppSWDev = 0;
00443 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
00444
00445 if(bSingle)
00446 {
00447 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO_SW_MAJOR, &ucSWMajor);
00448 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO_SW_MINOR, &ucSWMinor);
00449 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO_SW_DEV, &ucSWDev);
00450 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO_HW_TYPE, &ucHWType);
00451 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO_SW_MAJOR_EMB_APP, &ucEmbAppSWMajor);
00452 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO_SW_MINOR_EMB_APP, &ucEmbAppSWMinor);
00453 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO_SW_DEV_EMB_APP, &ucEmbAppSWDev);
00454 }
00455 else
00456 {
00457 ucSWMajor = pInfo->ucAccSwVer[0];
00458 ucSWMinor = pInfo->ucAccSwVer[1];
00459 ucSWDev = pInfo->ucAccDevVer;
00460 ucHWType = pInfo->ucAccHwType;
00461 ucEmbAppSWMajor = pInfo->ucAccEmbAppSwVer[0];
00462 ucEmbAppSWMinor = pInfo->ucAccEmbAppSwVer[1];
00463 ucEmbAppSWDev = pInfo->ucAccEmbAppDevVer;
00464 }
00465
00466
00467 sReport += "Firmware Version of Application Communication Controller:";
00468 sReport += "\r\n";
00469 sReport += "\tSoftware Revision:.....";
00470 sprintf(cBuffer, "%02d.%02d.%02d", ucSWMajor, ucSWMinor, ucSWDev);
00471 sReport += cBuffer;
00472 if(pInfo->ucReaderType == FEDM_ISC_TYPE_ISCLRU3000)
00473 {
00474 if(ucSWMajor < 2)
00475 {
00476 sReport+= " (unsupported)";
00477 }
00478 }
00479 sReport += "\r\n";
00480 sprintf(cBuffer, "%02d (0x%02X)", ucHWType, ucHWType);
00481 sReport += "\tHardware Type:.........";
00482 sReport += cBuffer;
00483 sReport += "\r\n";
00484 if(ucEmbAppSWMajor != 0 || ucEmbAppSWMinor != 0 || ucEmbAppSWDev != 0)
00485 {
00486 sReport += "\tSoftware Revision 2:...";
00487 sprintf(cBuffer, "%02d.%02d.%02d", ucEmbAppSWMajor, ucEmbAppSWMinor, ucEmbAppSWDev);
00488 sReport += cBuffer;
00489 sReport += "\r\n";
00490 }
00491 }
00492
00493
00494
00495 void FedmIscReport_ReaderInfo::Add0x02InfoText(string& sReport, bool bSingle)
00496 {
00497 char cBuffer[64];
00498 unsigned char ucSWRevHigh = 0;
00499 unsigned char ucSWRevLow = 0;
00500 unsigned char ucHWType = 0;
00501 unsigned char ucDRev = 0;
00502 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
00503
00504 if(bSingle)
00505 {
00506 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO_SW_MAJOR, &ucSWRevHigh);
00507 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO_SW_MINOR, &ucSWRevLow);
00508 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO_SW_DEV, &ucDRev);
00509 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO_HW_TYPE, &ucHWType);
00510 }
00511 else
00512 {
00513 ucSWRevHigh = pInfo->ucUsbSwVer[0];
00514 ucSWRevLow = pInfo->ucUsbSwVer[1];
00515 ucDRev = pInfo->ucUsbDevVer;
00516 ucHWType = pInfo->ucUsbHwType;
00517 }
00518
00519
00520
00521 sReport += "Firmware Version of USB-Controller:";
00522 sReport += "\r\n";
00523 sprintf(cBuffer, "%02d.%02d.%02d", ucSWRevHigh, ucSWRevLow, ucDRev);
00524
00525 sReport += "\tSoftware Revision:.....";
00526 sReport += cBuffer;
00527 sReport += "\r\n";
00528 sprintf(cBuffer, "%02d", ucHWType);
00529 sReport += "\tHardware Type:.........";
00530 sReport += cBuffer;
00531 sReport += "\r\n";
00532 }
00533
00534
00535 void FedmIscReport_ReaderInfo::Add0x03InfoText(string& sReport, bool bSingle)
00536 {
00537 char cBuffer[64];
00538 unsigned char ucDecType[32];
00539 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
00540 unsigned int uiReaderType = m_pReader->GetReaderType();
00541
00542 if(bSingle)
00543 {
00544 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucDecType, 11);
00545 }
00546 else
00547 {
00548 memcpy(ucDecType, &pInfo->ucDecoderType[0], 6);
00549 }
00550
00551
00552
00553 switch(uiReaderType)
00554 {
00555 case FEDM_ISC_TYPE_ISCLR2000:
00556 case FEDM_ISC_TYPE_ISCLR2500_B:
00557 case FEDM_ISC_TYPE_ISCMRU200:
00558 case FEDM_ISC_TYPE_ISCLRU1000:
00559 case FEDM_ISC_TYPE_ISCLRU2000:
00560 sReport += "Firmware Version of FPGA-Controller:";
00561 sReport += "\r\n";
00562 sReport += "\tSoftware Revision:.....";
00563 sprintf(cBuffer, "%d.%d.%d", ucDecType[0], ucDecType[1], ucDecType[2]);
00564 sReport += cBuffer;
00565 sReport += "\r\n";
00566 sReport += "\tFPGA-Type:.............";
00567 sprintf(cBuffer, "%d", ucDecType[3]);
00568 sReport += cBuffer;
00569 sReport += "\r\n";
00570 break;
00571
00572 case FEDM_ISC_TYPE_ISCLR2500_A:
00573 case FEDM_ISC_TYPE_ISCLRU3000:
00574 sReport += "Firmware Version of FPGA-Controller:";
00575 sReport += "\r\n";
00576 sReport += "\tSoftware Revision:.....";
00577 sprintf(cBuffer, "%d.%d.%c.%d", ucDecType[0], ucDecType[1], ucDecType[2], ucDecType[3]);
00578 sReport += cBuffer;
00579 sReport += "\r\n";
00580 break;
00581
00582 case FEDM_ISC_TYPE_MAXU1002:
00583 case FEDM_ISC_TYPE_ISCLRU1002:
00584 sReport += "RF-Decoder information:";
00585 sReport += "\r\n";
00586 sprintf(cBuffer, "\t0x%02X-0x%02X-0x%02X-0x%02X",
00587 ucDecType[0],
00588 ucDecType[1],
00589 ucDecType[2],
00590 ucDecType[3] );
00591 sReport += cBuffer;
00592 sReport += "\r\n";
00593 break;
00594
00595 case FEDM_ISC_TYPE_CPRM02:
00596 case FEDM_ISC_TYPE_CPR02:
00597 case FEDM_ISC_TYPE_CPR04_U:
00598 sReport += "RF-Decoder information:";
00599 sReport += "\r\n";
00600 sprintf(cBuffer, "\t0x%02X-0x%02X-0x%02X-0x%02X-0x%02X",
00601 ucDecType[0],
00602 ucDecType[1],
00603 ucDecType[2],
00604 ucDecType[3],
00605 ucDecType[4] );
00606 sReport += cBuffer;
00607 sReport += "\r\n";
00608 break;
00609
00610 case FEDM_ISC_TYPE_CPR20_XX:
00611 case FEDM_ISC_TYPE_CPR40_XX_U:
00612 case FEDM_ISC_TYPE_CPR40_XX:
00613 case FEDM_ISC_TYPE_CPR44_XX:
00614 case FEDM_ISC_TYPE_CPR46_XX:
00615 case FEDM_ISC_TYPE_CPR47_XX:
00616 case FEDM_ISC_TYPE_MAX_ONTOP:
00617 sReport += "RF-Decoder information:";
00618 sReport += "\r\n";
00619 sReport += "\tDecoder Information:...";
00620 sprintf(cBuffer, "0x%02X-0x%02X-0x%02X-0x%02X-0x%02X",
00621 ucDecType[0],
00622 ucDecType[1],
00623 ucDecType[2],
00624 ucDecType[3],
00625 ucDecType[4] );
00626 sReport += cBuffer;
00627 sReport += "\r\n";
00628
00629 sReport += "\tSelf Test:.............";
00630 if(ucDecType[5])
00631 sReport += "OK";
00632 else
00633 sReport += "Not OK";
00634
00635 sReport += "\r\n";
00636 break;
00637 }
00638
00639 }
00640
00641
00642 void FedmIscReport_ReaderInfo::Add0x04InfoText(string& sReport, bool bSingle)
00643 {
00644 int i=0;
00645 char cBuffer[64];
00646 unsigned char ucDecType[32];
00647 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
00648 unsigned int uiReaderType = m_pReader->GetReaderType();
00649
00650 if(bSingle)
00651 {
00652 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucDecType, 11);
00653 }
00654 else
00655 {
00656 switch(uiReaderType)
00657 {
00658 case FEDM_ISC_TYPE_ISCMU02:
00659 case FEDM_ISC_TYPE_ISCLR2000:
00660 case FEDM_ISC_TYPE_ISCLR1002:
00661 case FEDM_ISC_TYPE_MAXU1002:
00662 case FEDM_ISC_TYPE_ISCLRU1002:
00663 case FEDM_ISC_TYPE_ISCLRU2000:
00664 case FEDM_ISC_TYPE_ISCLRU3000:
00665 ucDecType[0] = pInfo->ucReserved1;
00666 memcpy(&ucDecType[1], pInfo->ucFwIdentifierB, 10);
00667 break;
00668
00669 case FEDM_ISC_TYPE_CPR20_XX:
00670 case FEDM_ISC_TYPE_CPR30_XX:
00671 case FEDM_ISC_TYPE_CPR40_XX_U:
00672 case FEDM_ISC_TYPE_CPR40_XX:
00673 case FEDM_ISC_TYPE_CPR44_XX:
00674 case FEDM_ISC_TYPE_CPR46_XX:
00675 case FEDM_ISC_TYPE_CPR47_XX:
00676 case FEDM_ISC_TYPE_CPR50_XX:
00677 case FEDM_ISC_TYPE_CPR52_XX:
00678 case FEDM_ISC_TYPE_CPR60_XX:
00679
00680 case FEDM_ISC_TYPE_MAX50_XX:
00681 case FEDM_ISC_TYPE_MAX_STANDARD:
00682 case FEDM_ISC_TYPE_MAX_COMFORT:
00683 case FEDM_ISC_TYPE_MAX_ONTOP:
00684 ucDecType[0] = pInfo->ucCprFctTemplate;
00685 ucDecType[1] = pInfo->ucCprFctList0;
00686 ucDecType[2] = pInfo->ucCprFctList1;
00687 ucDecType[3] = pInfo->ucCprFctList2;
00688 ucDecType[4] = pInfo->ucCprRfu0;
00689 ucDecType[5] = pInfo->ucCprRfu1;
00690 ucDecType[6] = pInfo->ucCprRfu2;
00691 ucDecType[7] = pInfo->ucCprRfu3;
00692 ucDecType[8] = pInfo->ucCprRfu4;
00693 memcpy(&ucDecType[9], pInfo->ucFwIdentifierC, 2);
00694 break;
00695
00696 case FEDM_ISC_TYPE_CPRM02:
00697 case FEDM_ISC_TYPE_CPR02:
00698 case FEDM_ISC_TYPE_CPR04_U:
00699 ucDecType[0] = pInfo->ucCprFctTemplate;
00700 ucDecType[1] = pInfo->ucCprFctList;
00701 break;
00702
00703 default:
00704 return;
00705 }
00706 }
00707
00708 switch(uiReaderType)
00709 {
00710 case FEDM_ISC_TYPE_ISCMU02:
00711 sReport += "Additional Firmware Functions:";
00712 sReport += "\r\n\t";
00713 for(i=0; i<11; i++)
00714 {
00715 sprintf(cBuffer, "0x%02X ", ucDecType[i]);
00716 sReport += cBuffer;
00717 }
00718 sReport += "\r\n";
00719
00720 switch(ucDecType[10])
00721 {
00722 case 0x00: sReport += "\t - RFC Standard Firmware\r\n"; break;
00723 }
00724 break;
00725
00726 case FEDM_ISC_TYPE_ISCLR1002:
00727 case FEDM_ISC_TYPE_MAXU1002:
00728 case FEDM_ISC_TYPE_ISCLRU1002:
00729 sReport += "Additional Firmware Functions:";
00730 sReport += "\r\n\t";
00731 for(i=0; i<11; i++)
00732 {
00733 sprintf(cBuffer, "0x%02X ", ucDecType[i]);
00734 sReport += cBuffer;
00735 }
00736 sReport += "\r\n";
00737 break;
00738
00739 case FEDM_ISC_TYPE_ISCLR2000:
00740 case FEDM_ISC_TYPE_ISCLRU2000:
00741 case FEDM_ISC_TYPE_ISCLRU3000:
00742
00743 sReport += "Additional Firmware Functions:";
00744 sReport += "\r\n\t";
00745 for(i=0; i<11; i++)
00746 {
00747 sprintf(cBuffer, "0x%02X ", ucDecType[i]);
00748 sReport += cBuffer;
00749 }
00750 sReport += "\r\n";
00751
00752 if(ucDecType[1] == 0x80)
00753 {
00754 sReport += "\tSpecial Firmware\r\n";
00755 }
00756 else
00757 {
00758 switch(ucDecType[10])
00759 {
00760 case 0x00: sReport += "\t - RFC Standard Firmware\r\n"; break;
00761 case 0x01: sReport += "\t - RFC Firmware for ST Freedom\r\n"; break;
00762 case 0x02: sReport += "\t - RFC Firmware for NXP\r\n"; break;
00763 }
00764 }
00765
00766 switch(ucDecType[2])
00767 {
00768 case 0x00: sReport += "\t - ACC Standard Firmware\r\n"; break;
00769 }
00770 break;
00771
00772 case FEDM_ISC_TYPE_CPRM02:
00773 case FEDM_ISC_TYPE_CPR02:
00774 case FEDM_ISC_TYPE_CPR04_U:
00775
00776 sReport += "Additional Firmware Functions:";
00777 sReport += "\r\n";
00778 sReport += "\tTemplate:..............";
00779 sprintf(cBuffer, "0x%02X", ucDecType[0]);
00780 sReport += cBuffer;
00781 sReport += "\r\n";
00782 sReport += "\tFunctions:.............";
00783 sprintf(cBuffer, "0x%02X", ucDecType[1]);
00784 sReport += cBuffer;
00785 sReport += "\r\n";
00786 break;
00787
00788 case FEDM_ISC_TYPE_CPR20_XX:
00789 case FEDM_ISC_TYPE_CPR30_XX:
00790 case FEDM_ISC_TYPE_CPR40_XX_U:
00791 case FEDM_ISC_TYPE_CPR40_XX:
00792 case FEDM_ISC_TYPE_CPR44_XX:
00793 case FEDM_ISC_TYPE_CPR46_XX:
00794 case FEDM_ISC_TYPE_CPR47_XX:
00795 case FEDM_ISC_TYPE_CPR50_XX:
00796 case FEDM_ISC_TYPE_CPR52_XX:
00797 case FEDM_ISC_TYPE_CPR60_XX:
00798
00799 case FEDM_ISC_TYPE_MAX50_XX:
00800 case FEDM_ISC_TYPE_MAX_STANDARD:
00801 case FEDM_ISC_TYPE_MAX_COMFORT:
00802 case FEDM_ISC_TYPE_MAX_ONTOP:
00803 sReport += "Additional Firmware Functions:";
00804 sReport += "\r\n";
00805 sReport += "\tTemplate:..............";
00806 sprintf(cBuffer, "0x%02X", ucDecType[0]);
00807 sReport += cBuffer;
00808 sReport += "\r\n";
00809 sReport += "\tFunctions:.............";
00810 sprintf(cBuffer, "0x%02X 0x%02X 0x%02X", ucDecType[1], ucDecType[2], ucDecType[3]);
00811 sReport += cBuffer;
00812 if(ucDecType[1]&0x01)
00813 {
00814 sReport += "\r\n";
00815 sReport += "\t - with support for T=CL";
00816 }
00817 if(ucDecType[1]&0x02)
00818 {
00819 sReport += "\r\n";
00820 sReport += "\t - with support for MAD";
00821 }
00822 if(ucDecType[1]&0x04)
00823 {
00824 sReport += "\r\n";
00825 sReport += "\t - with support for DESFire Crypto";
00826 }
00827 if(ucDecType[1]&0x08)
00828 {
00829 sReport += "\r\n";
00830 sReport += "\t - with support for MIFARE Plus Crypto";
00831 }
00832 if(ucDecType[1]&0x10)
00833 {
00834 sReport += "\r\n";
00835 sReport += "\t - with support for Kovio";
00836 }
00837 if(ucDecType[1]&0x40)
00838 {
00839 sReport += "\r\n";
00840 sReport += "\t - with support for T=CL with APDU-Length and EXT-MODE";
00841 }
00842 if(ucDecType[1]&0x80)
00843 {
00844 sReport += "\r\n";
00845 sReport += "\t - with support for MAX (Access Control)";
00846 }
00847 if(ucDecType[2]&0x01)
00848 {
00849 sReport += "\r\n";
00850 sReport += "\t - with support for EMVco";
00851 }
00852 if(ucDecType[2]&0x02)
00853 {
00854 sReport += "\r\n";
00855 sReport += "\t - with support for EMV Slot1";
00856 }
00857 if(ucDecType[2]&0x04)
00858 {
00859 sReport += "\r\n";
00860 sReport += "\t - with support for EMV Slot2";
00861 }
00862 if(ucDecType[2]&0x08)
00863 {
00864 sReport += "\r\n";
00865 sReport += "\t - with support for EMV Slot3";
00866 }
00867 if(ucDecType[2]&0x10)
00868 {
00869 sReport += "\r\n";
00870 sReport += "\t - with support for EMV Slot4";
00871 }
00872 if(ucDecType[3]&0x01)
00873 {
00874 sReport += "\r\n";
00875 sReport += "\t - with support for SAM Presence Polling";
00876 }
00877 sReport += "\r\n";
00878 sReport += "\tFirmware-Identifier....";
00879 for(i=9; i<11; i++)
00880 {
00881 sprintf(cBuffer, "0x%02X ", ucDecType[i]);
00882 sReport += cBuffer;
00883 }
00884 sReport += "\r\n";
00885 break;
00886 }
00887 }
00888
00889
00890 void FedmIscReport_ReaderInfo::Add0x05InfoText(string& sReport, bool bSingle)
00891 {
00892 char cBuffer[64];
00893 unsigned char ucSWMajor = 0;
00894 unsigned char ucSWMinor = 0;
00895 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
00896
00897 if(bSingle)
00898 {
00899 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO_SW_MAJOR, &ucSWMajor);
00900 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO_SW_MINOR, &ucSWMinor);
00901 }
00902 else
00903 {
00904 ucSWMajor = pInfo->ucBootSwVer[0];
00905 ucSWMinor = pInfo->ucBootSwVer[1];
00906 }
00907
00908
00909
00910 sReport += "Firmware Version of RFC-Bootloader:";
00911 sReport += "\r\n";
00912 sReport += "\tSoftware Revision:.....";
00913 sprintf(cBuffer, "%02d.%02d", ucSWMajor, ucSWMinor);
00914 sReport += cBuffer;
00915 sReport += "\r\n";
00916 }
00917
00918
00919 void FedmIscReport_ReaderInfo::Add0x06InfoText(string& sReport, bool bSingle)
00920 {
00921 char cBuffer[64];
00922 unsigned char ucInfo[32];
00923 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
00924
00925 if(bSingle)
00926 {
00927 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucInfo, 8);
00928 }
00929 else
00930 {
00931 ucInfo[0] = pInfo->ucKeybStatus[0];
00932 ucInfo[1] = pInfo->ucKeybStatus[1];
00933 ucInfo[2] = pInfo->ucKeybSwVer[0];
00934 ucInfo[3] = pInfo->ucKeybSwVer[1];
00935 ucInfo[4] = pInfo->ucKeybHwVer[0];
00936 ucInfo[5] = pInfo->ucKeybHwVer[1];
00937 ucInfo[6] = pInfo->ucKeybHwVer[2];
00938 ucInfo[7] = pInfo->ucKeybHwVer[3];
00939 }
00940
00941
00942
00943 sReport += "Info about Keyboard-Controller:";
00944 sReport += "\r\n";
00945 sReport += "\tStatus:................";
00946 sprintf(cBuffer, "0x%02X 0x%02X", ucInfo[0], ucInfo[1]);
00947 sReport += cBuffer;
00948 sReport += "\r\n";
00949 if(ucInfo[0] & 0x01)
00950 {
00951 sReport += "\t - The Reader is equipped with a Keyboard\r\n";
00952 if(ucInfo[1] & 0x01)
00953 sReport += "\t - The Keyboard-Controller signals an error\r\n";
00954 if(ucInfo[1] & 0x02)
00955 sReport += "\t - The Keyboard-Controller is in update mode\r\n";
00956
00957 sReport += "\tSoftware Revision:.....";
00958 sprintf(cBuffer, "%02d.%02d", ucInfo[2], ucInfo[3]);
00959 sReport += cBuffer;
00960 sReport += "\r\n";
00961 sReport += "\tHardware Revision:.....";
00962 sprintf(cBuffer, "0x%02X%02X%02X%02X", ucInfo[4], ucInfo[5], ucInfo[6], ucInfo[7]);
00963 sReport += cBuffer;
00964 }
00965 else
00966 {
00967 sReport += "\t- The Reader is not equipped with a Keyboard";
00968 }
00969 sReport += "\r\n";
00970 }
00971
00972
00973 void FedmIscReport_ReaderInfo::Add0x07InfoText(string& sReport, bool bSingle)
00974 {
00975 char cBuffer[64];
00976 unsigned char ucInfo[32];
00977 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
00978
00979 if(bSingle)
00980 {
00981 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucInfo, 7);
00982 }
00983 else
00984 {
00985 ucInfo[0] = pInfo->ucCprioSwVer[0];
00986 ucInfo[1] = pInfo->ucCprioSwVer[1];
00987 ucInfo[2] = pInfo->ucCprioHwVer;
00988 ucInfo[3] = pInfo->ucCprioNoOfInputs;
00989 ucInfo[4] = pInfo->ucCprioNoOfOutputs;
00990 ucInfo[5] = pInfo->ucCprioNoOfRelays;
00991 ucInfo[6] = pInfo->ucCprioNoOfSignalers;
00992 }
00993
00994
00995 sReport += "Info about CPRIO unit:";
00996 sReport += "\r\n";
00997
00998 if( ucInfo[3] == 0 &&
00999 ucInfo[4] == 0 &&
01000 ucInfo[5] == 0 &&
01001 ucInfo[6] == 0 )
01002 {
01003 sReport += "\t - no CPRIO unit detected\r\n";
01004 }
01005 else
01006 {
01007 sReport += "\tSoftware Revision:.....";
01008 sprintf(cBuffer, "%02d.%02d", ucInfo[0], ucInfo[1]);
01009 sReport += cBuffer;
01010 sReport += "\r\n";
01011 sReport += "\tHardware Revision:.....";
01012 sprintf(cBuffer, "0x%02X", ucInfo[2]);
01013 sReport += cBuffer;
01014 sReport += "\r\n";
01015 sprintf(cBuffer, "\t%d Inputs\r\n", ucInfo[3]);
01016 sReport += cBuffer;
01017 sprintf(cBuffer, "\t%d Outputs\r\n", ucInfo[4]);
01018 sReport += cBuffer;
01019 sprintf(cBuffer, "\t%d Relays\r\n", ucInfo[5]);
01020 sReport += cBuffer;
01021 sprintf(cBuffer, "\t%d Signalers\r\n", ucInfo[6]);
01022 sReport += cBuffer;
01023 }
01024
01025 }
01026
01027
01028 void FedmIscReport_ReaderInfo::Add0x08InfoText(string& sReport, bool bSingle)
01029 {
01030 char cBuffer[64];
01031 unsigned char ucInfo[32];
01032 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
01033
01034 if(bSingle)
01035 {
01036 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucInfo, 14);
01037 }
01038 else
01039 {
01040 memcpy(ucInfo, pInfo->ucRfcSupportedTagDriver, 14);
01041 }
01042
01043
01044 sReport += "Info about supported Transponder Types:";
01045 sReport += "\r\n";
01046
01047 for(int i=0; i<14; i++)
01048 {
01049 if(ucInfo[i] != 0xFF)
01050 {
01051 sprintf(cBuffer, "\t0x%02X - %s\r\n", ucInfo[i], m_pReader->GetTagName(ucInfo[i]));
01052 sReport += cBuffer;
01053 }
01054 }
01055 }
01056
01057
01058 void FedmIscReport_ReaderInfo::Add0x09InfoText(string& sReport, bool bSingle)
01059 {
01060 char cBuffer[64];
01061 unsigned char ucInfo[32];
01062 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
01063
01064 if(bSingle)
01065 {
01066 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucInfo, 14);
01067 }
01068 else
01069 {
01070 memcpy(ucInfo, pInfo->ucWlanVer, 14);
01071 }
01072
01073
01074 sReport += "Info from WLAN-Module:";
01075 sReport += "\r\n\t";
01076
01077 for(int cnt=0; cnt<14; cnt++)
01078 {
01079 if(cnt > 0)
01080 {
01081 sReport += " - ";
01082 }
01083
01084 sprintf(cBuffer, "0x%02X", ucInfo[cnt]);
01085 sReport += cBuffer;
01086 }
01087 sReport += "\r\n";
01088 }
01089
01090
01091 void FedmIscReport_ReaderInfo::Add0x10InfoText(string& sReport, bool bSingle)
01092 {
01093 char cBuffer[64];
01094 unsigned char ucDecType[32];
01095 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
01096
01097 if(bSingle)
01098 {
01099 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucDecType, 11);
01100 }
01101 else
01102 {
01103 ucDecType[0] = pInfo->ucRfcHwInfo[0];
01104 ucDecType[1] = pInfo->ucRfcHwInfo[1];
01105 ucDecType[2] = pInfo->ucRfcDHw[0];
01106 ucDecType[3] = pInfo->ucRfcDHw[1];
01107 ucDecType[4] = pInfo->ucRfcAHw[0];
01108 ucDecType[5] = pInfo->ucRfcAHw[1];
01109 ucDecType[6] = pInfo->ucRfcFrequency;
01110 ucDecType[7] = pInfo->ucRfcPortTypes;
01111 ucDecType[8] = pInfo->ucReserved2;
01112 ucDecType[9] = pInfo->ucRfcInfo;
01113 ucDecType[10] = pInfo->ucBatteryStatus;
01114 }
01115
01116
01117
01118 sReport += "Hardware Information:";
01119 sReport += "\r\n";
01120 sprintf(cBuffer, "\t0x%02X%02X - 0x%02X%02X - 0x%02X%02X",
01121 ucDecType[0],
01122 ucDecType[1],
01123 ucDecType[2],
01124 ucDecType[3],
01125 ucDecType[4],
01126 ucDecType[5]);
01127
01128 sReport += cBuffer;
01129
01130
01131
01132
01133
01134
01135
01136
01137
01138
01139
01140
01141
01142
01143 {
01144 switch(m_pReader->GetReaderType())
01145 {
01146 case FEDM_ISC_TYPE_ISCLRU2000:
01147 if(pInfo->ucRfcSwVer[0] >= 2)
01148 {
01149 sReport += "\r\n";
01150 sReport += "\tFrequency Information:.";
01151 if((ucDecType[6]&0x03) == 1)
01152 sReport += "EU";
01153 else if((ucDecType[6]&0x03) == 2)
01154 sReport += "FCC";
01155 else
01156 sReport += "unknown";
01157
01158 sReport += "\r\n";
01159 sReport += "\tSupported Port Types:..";
01160 if(ucDecType[7] & 0x01)
01161 {
01162 sReport += "Serial";
01163 if(ucDecType[7] & 0xFE)
01164 sReport += ", ";
01165 }
01166 if(ucDecType[7] & 0x02)
01167 {
01168 sReport += "RS4xx";
01169 if(ucDecType[7] & 0xFC)
01170 sReport += ", ";
01171 }
01172 if(ucDecType[7] & 0x04)
01173 {
01174 sReport += "LAN";
01175 if(ucDecType[7] & 0xF8)
01176 sReport += ", ";
01177 }
01178 if(ucDecType[7] & 0x08)
01179 {
01180 sReport += "WLAN";
01181 if(ucDecType[7] & 0xF0)
01182 sReport += ", ";
01183 }
01184 }
01185 break;
01186
01187 case FEDM_ISC_TYPE_ISCPRHD102:
01188 case FEDM_ISC_TYPE_ISCMRU102:
01189 case FEDM_ISC_TYPE_ISCMU02:
01190 case FEDM_ISC_TYPE_MAXU1002:
01191 case FEDM_ISC_TYPE_ISCLRU1002:
01192 case FEDM_ISC_TYPE_ISCLRU3000:
01193 sReport += "\r\n";
01194 sReport += "\tFrequency Information:.";
01195 if((ucDecType[6]&0x03) == 1)
01196 sReport += "EU";
01197 else if((ucDecType[6]&0x03) == 2)
01198 sReport += "FCC";
01199 else if((ucDecType[6]&0x03) == 3)
01200 sReport += "EU and FCC";
01201 else
01202 sReport += "unknown";
01203
01204 sReport += "\r\n";
01205 sReport += "\tSupported Port Types:..";
01206 if(ucDecType[7] & 0x01)
01207 {
01208 sReport += "Serial";
01209 if(ucDecType[7] & 0xFE)
01210 sReport += ", ";
01211 }
01212 if(ucDecType[7] & 0x02)
01213 {
01214 sReport += "RS4xx";
01215 if(ucDecType[7] & 0xFC)
01216 sReport += ", ";
01217 }
01218 if(ucDecType[7] & 0x04)
01219 {
01220 sReport += "LAN";
01221 if(ucDecType[7] & 0xF8)
01222 sReport += ", ";
01223 }
01224 if(ucDecType[7] & 0x08)
01225 {
01226 sReport += "WLAN";
01227 if(ucDecType[7] & 0xF0)
01228 sReport += ", ";
01229 }
01230 if(ucDecType[7] & 0x10)
01231 {
01232 sReport += "USB";
01233 if(ucDecType[7] & 0xE0)
01234 sReport += ", ";
01235 }
01236 if(ucDecType[7] & 0x20)
01237 {
01238 sReport += "Bluetooth";
01239 if(ucDecType[7] & 0xC0)
01240 sReport += ", ";
01241 }
01242 if(ucDecType[7] & 0x80)
01243 {
01244 sReport += "Discovery";
01245 }
01246
01247 break;
01248
01249 case FEDM_ISC_TYPE_ISCMRU200:
01250 sReport += "\r\n";
01251 sReport += "\tFrequency Information:.";
01252 if((ucDecType[6]&0x03) == 1)
01253 sReport += "EU";
01254 else if((ucDecType[6]&0x03) == 2)
01255 sReport += "FCC";
01256 else
01257 sReport += "unknown";
01258
01259 break;
01260
01261
01262 case FEDM_ISC_TYPE_MLC_COM:
01263 sReport += "\r\n";
01264 sReport += "\tSupported Port Types:..";
01265 if(ucDecType[7] & 0x10)
01266 {
01267 sReport += "USB";
01268 if(ucDecType[7] & 0xE0)
01269 sReport += ", ";
01270 }
01271
01272 sReport += "\r\n";
01273 sReport += "\tBattery Status:........";
01274 sprintf(cBuffer, "%d", (int)ucDecType[10]);
01275 sReport += cBuffer;
01276
01277 break;
01278
01279
01280 default:
01281 sReport += "\r\n";
01282 sReport += "\tSupported Port Types:..";
01283 if(ucDecType[7] & 0x01)
01284 {
01285 sReport += "Serial";
01286 if(ucDecType[7] & 0xFE)
01287 sReport += ", ";
01288 }
01289 if(ucDecType[7] & 0x02)
01290 {
01291 sReport += "RS4xx";
01292 if(ucDecType[7] & 0xFC)
01293 sReport += ", ";
01294 }
01295 if(ucDecType[7] & 0x04)
01296 {
01297 sReport += "LAN";
01298 if(ucDecType[7] & 0xF8)
01299 sReport += ", ";
01300 }
01301 if(ucDecType[7] & 0x08)
01302 {
01303 sReport += "WLAN";
01304 if(ucDecType[7] & 0xF0)
01305 sReport += ", ";
01306 }
01307 if(ucDecType[7] & 0x10)
01308 {
01309 sReport += "USB";
01310 if(ucDecType[7] & 0xE0)
01311 sReport += ", ";
01312 }
01313 if(ucDecType[7] & 0x20)
01314 {
01315 sReport += "Bluetooth";
01316 if(ucDecType[7] & 0xC0)
01317 sReport += ", ";
01318 }
01319 if(ucDecType[7] & 0x80)
01320 {
01321 sReport += "Discovery";
01322 }
01323
01324 break;
01325 }
01326 }
01327
01328 sReport += "\r\n";
01329 }
01330
01331
01332 void FedmIscReport_ReaderInfo::Add0x11InfoText(string& sReport, bool bSingle)
01333 {
01334 char cBuffer[64];
01335 unsigned char ucSlotInfo[32];
01336 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
01337
01338 if(bSingle)
01339 {
01340 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucSlotInfo, 5);
01341 }
01342 else
01343 {
01344 ucSlotInfo[0] = pInfo->ucNoOfSlots;
01345 ucSlotInfo[1] = pInfo->ucSlotInfo[0];
01346 ucSlotInfo[2] = pInfo->ucSlotInfo[1];
01347 ucSlotInfo[3] = pInfo->ucSlotInfo[2];
01348 ucSlotInfo[4] = pInfo->ucSlotInfo[3];
01349 }
01350
01351
01352
01353 sReport += "SAM Information:";
01354 sReport += "\r\n";
01355 sReport += "\tNumber of SAM Slots:...";
01356 sprintf(cBuffer, "%u", (unsigned int)ucSlotInfo[0]);
01357 sReport += cBuffer;
01358 sReport += "\r\n";
01359
01360 if(ucSlotInfo[0] >= 1)
01361 {
01362 if(ucSlotInfo[1] & 0x01)
01363 {
01364 sReport += "\t - SAM inserted in socket 1\r\n";
01365 sReport += "\t Slot-Type: ";
01366 switch( ((ucSlotInfo[1] & 0xF0) >> 4) )
01367 {
01368 case 0x00:
01369 sReport += "smartcard holder slot\r\n";
01370 break;
01371 case 0x01:
01372 sReport += "NXP SAM\r\n";
01373 break;
01374 case 0x02:
01375 sReport += "Infineon SAM\r\n";
01376 break;
01377 }
01378 }
01379 else
01380 {
01381 sReport += "\t - SAM socket 1 is not used\r\n";
01382 }
01383 }
01384
01385 if(ucSlotInfo[0] >= 2)
01386 {
01387 if(ucSlotInfo[2] & 0x01)
01388 {
01389 sReport += "\t - SAM inserted in socket 2\r\n";
01390 sReport += "\t Slot-Type: ";
01391 switch( ((ucSlotInfo[2] & 0xF0) >> 4) )
01392 {
01393 case 0x00:
01394 sReport += "smartcard holder slot\r\n";
01395 break;
01396 case 0x01:
01397 sReport += "NXP SAM\r\n";
01398 break;
01399 case 0x02:
01400 sReport += "Infineon SAM\r\n";
01401 break;
01402 }
01403 }
01404 else
01405 {
01406 sReport += "\t - SAM socket 2 is not used\r\n";
01407 }
01408 }
01409
01410 if(ucSlotInfo[0] >= 3)
01411 {
01412 if(ucSlotInfo[3] & 0x01)
01413 {
01414 sReport += "\t - SAM inserted in socket 3\r\n";
01415 sReport += "\t Slot-Type: ";
01416 switch( ((ucSlotInfo[3] & 0xF0) >> 4) )
01417 {
01418 case 0x00:
01419 sReport += "smartcard holder slot\r\n";
01420 break;
01421 case 0x01:
01422 sReport += "NXP SAM\r\n";
01423 break;
01424 case 0x02:
01425 sReport += "Infineon SAM\r\n";
01426 break;
01427 }
01428 }
01429 else
01430 {
01431 sReport += "\t - SAM socket 3 is not used\r\n";
01432 }
01433 }
01434
01435 if(ucSlotInfo[0] >= 4)
01436 {
01437 if(ucSlotInfo[4] & 0x01)
01438 {
01439 sReport += "\t - SAM inserted in socket 4\r\n";
01440 sReport += "\t Slot-Type: ";
01441 switch( ((ucSlotInfo[4] & 0xF0) >> 4) )
01442 {
01443 case 0x00:
01444 sReport += "smartcard holder slot\r\n";
01445 break;
01446 case 0x01:
01447 sReport += "NXP SAM\r\n";
01448 break;
01449 case 0x02:
01450 sReport += "Infineon SAM\r\n";
01451 break;
01452 }
01453 }
01454 else
01455 {
01456 sReport += "\t - SAM socket 4 is not used\r\n";
01457 }
01458 }
01459 }
01460
01461
01462 void FedmIscReport_ReaderInfo::Add0x12InfoText(string& sReport, bool bSingle)
01463 {
01464 char cBuffer[64];
01465 unsigned char ucInfo[32];
01466 unsigned int uiFlashSize = 0;
01467 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
01468
01469 if(bSingle)
01470 {
01471 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucInfo, 8);
01472 }
01473 else
01474 {
01475 memcpy(&ucInfo[0], &pInfo->ucRfcCpuManufacturer, 8);
01476 }
01477
01478 uiFlashSize = (((unsigned int)ucInfo[4])<<24);
01479 uiFlashSize |= (((unsigned int)ucInfo[5])<<16);
01480 uiFlashSize |= (((unsigned int)ucInfo[6])<< 8);
01481 uiFlashSize |= (unsigned int)ucInfo[7];
01482
01483 sReport += "CPU Information of RF Communication Controller:";
01484 sReport += "\r\n";
01485 sprintf(cBuffer, "\tManufacturer:...%d\r\n", ucInfo[0]);
01486 sReport += cBuffer;
01487 sprintf(cBuffer, "\tType:...........0x%02X%02X\r\n", ucInfo[1], ucInfo[2]);
01488 sReport += cBuffer;
01489 sprintf(cBuffer, "\tRevision:.......%d\r\n", ucInfo[3]);
01490 sReport += cBuffer;
01491 sprintf(cBuffer, "\tFlash-Size:.....%u KB\r\n", uiFlashSize);
01492 sReport += cBuffer;
01493 }
01494
01495
01496 void FedmIscReport_ReaderInfo::Add0x40InfoText(string& sReport, bool bSingle)
01497 {
01498 char cBuffer[64];
01499 unsigned char ucInfo[32];
01500 unsigned int uiNoOfCfgPages = 0;
01501 string sFormat = "";
01502 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
01503
01504 if(bSingle)
01505 {
01506 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucInfo, 18);
01507 }
01508 else
01509 {
01510 ucInfo[0] = pInfo->ucNoOfCfgPages[0];
01511 ucInfo[1] = pInfo->ucNoOfCfgPages[1];
01512
01513 for(int i=0; i<16; i++)
01514 {
01515 ucInfo[2+i] = pInfo->ucCfgReadPermissions[i];
01516 }
01517 }
01518
01519 uiNoOfCfgPages = (ucInfo[0]<<8) + ucInfo[1];
01520
01521 for(unsigned int i=0; i<uiNoOfCfgPages/8; i++)
01522 sFormat += "%02X";
01523
01524 if(uiNoOfCfgPages%8)
01525 sFormat += "%02X";
01526
01527
01528
01529 sReport += "Configuration Information for read";
01530 sReport += "\r\n";
01531
01532 sReport += "\tCFG Pages:.............";
01533 sprintf(cBuffer, "%u", uiNoOfCfgPages);
01534 sReport += cBuffer;
01535 sReport += "\r\n";
01536
01537 sReport += "\tCFG read permission:...";
01538 sprintf(cBuffer,
01539 sFormat.c_str(),
01540 ucInfo[2],
01541 ucInfo[3],
01542 ucInfo[4],
01543 ucInfo[5],
01544 ucInfo[6],
01545 ucInfo[7],
01546 ucInfo[8],
01547 ucInfo[9],
01548 ucInfo[10],
01549 ucInfo[11],
01550 ucInfo[12],
01551 ucInfo[13],
01552 ucInfo[14],
01553 ucInfo[15],
01554 ucInfo[16],
01555 ucInfo[17] );
01556
01557 sReport += cBuffer;
01558 sReport += "\r\n";
01559 }
01560
01561
01562 void FedmIscReport_ReaderInfo::Add0x41InfoText(string& sReport, bool bSingle)
01563 {
01564 char cBuffer[64];
01565 unsigned char ucInfo[32];
01566 unsigned int uiNoOfCfgPages = 0;
01567 string sFormat = "";
01568 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
01569
01570 if(bSingle)
01571 {
01572 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucInfo, 18);
01573 }
01574 else
01575 {
01576 ucInfo[0] = pInfo->ucNoOfCfgPages[0];
01577 ucInfo[1] = pInfo->ucNoOfCfgPages[1];
01578
01579 for(int i=0; i<16; i++)
01580 {
01581 ucInfo[2+i] = pInfo->ucCfgReadPermissions[i];
01582 }
01583 }
01584
01585 uiNoOfCfgPages = (ucInfo[0]<<8) + ucInfo[1];
01586
01587 for(unsigned int i=0; i<uiNoOfCfgPages/8; i++)
01588 sFormat += "%02X";
01589
01590 if(uiNoOfCfgPages%8)
01591 sFormat += "%02X";
01592
01593
01594
01595 sReport += "Configuration Information for write";
01596 sReport += "\r\n";
01597
01598 sReport += "\tCFG Pages:.............";
01599 sprintf(cBuffer, "%u", uiNoOfCfgPages);
01600 sReport += cBuffer;
01601 sReport += "\r\n";
01602
01603 sReport += "\tCFG write permission:..";
01604 sprintf(cBuffer,
01605 sFormat.c_str(),
01606 ucInfo[2],
01607 ucInfo[3],
01608 ucInfo[4],
01609 ucInfo[5],
01610 ucInfo[6],
01611 ucInfo[7],
01612 ucInfo[8],
01613 ucInfo[9],
01614 ucInfo[10],
01615 ucInfo[11],
01616 ucInfo[12],
01617 ucInfo[13],
01618 ucInfo[14],
01619 ucInfo[15],
01620 ucInfo[16],
01621 ucInfo[17] );
01622
01623 sReport += cBuffer;
01624 sReport += "\r\n";
01625 }
01626
01627
01628 void FedmIscReport_ReaderInfo::Add0x50InfoText(string& sReport, bool bSingle)
01629 {
01630 char cBuffer[64];
01631 unsigned char ucInfo[32];
01632 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
01633
01634 if(bSingle)
01635 {
01636 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucInfo, 30);
01637 sReport += "LAN-Information\n";
01638 }
01639 else
01640 {
01641 ucInfo[0] = pInfo->ucLanFlags;
01642 memcpy(&ucInfo[1], &pInfo->ucLanMac[0], 6);
01643 ucInfo[7] = pInfo->ucLanLinkInfo;
01644 }
01645
01646
01647 if( (ucInfo[0] & 0x02) ||
01648 (ucInfo[0] & 0x01) )
01649 {
01650 if( ucInfo[0] & ((ucInfo[0]&0x03)<<2) )
01651 {
01652 sReport += "\tLAN disabled";
01653 }
01654 else
01655 {
01656 sReport += "\tMAC-Address:...........";
01657 sprintf(cBuffer,
01658 "%02X:%02X:%02X:%02X:%02X:%02X",
01659 ucInfo[1],
01660 ucInfo[2],
01661 ucInfo[3],
01662 ucInfo[4],
01663 ucInfo[5],
01664 ucInfo[6] );
01665
01666 sReport += cBuffer;
01667 }
01668 }
01669
01670 sReport += "\r\n";
01671
01672 if (ucInfo[7] & 0x01)
01673 {
01674 sReport += "\tAuto-Negotiation:......Off";
01675 sReport += "\r\n";
01676
01677 if (ucInfo[7] & 0x02)
01678 {
01679 sReport += "\tDuplexmode:............Full Duplex";
01680 sReport += "\r\n";
01681 }
01682 else
01683 {
01684 sReport += "\tDuplexmode:............Half Duplex";
01685 sReport += "\r\n";
01686 }
01687
01688 if (ucInfo[7] & 0x04)
01689 {
01690 sReport += "\tSpeed:.................100 Mbit";
01691 sReport += "\r\n";
01692 }
01693 else
01694 {
01695 sReport += "\tSpeed:.................10 Mbit";
01696 sReport += "\r\n";
01697 }
01698 }
01699 }
01700
01701
01702 void FedmIscReport_ReaderInfo::Add0x51InfoText(string& sReport, bool bSingle)
01703 {
01704 char cBuffer[256];
01705 unsigned char ucInfo[32];
01706 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
01707
01708 if(bSingle)
01709 {
01710 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucInfo, 30);
01711 sReport += "LAN-Information\n";
01712 }
01713 else
01714 {
01715 ucInfo[0] = pInfo->ucLanFlags;
01716 memcpy(&ucInfo[1], &pInfo->ucLanIpV4[0], 4);
01717 memcpy(&ucInfo[5], &pInfo->ucLanIpV6[0], 16);
01718 }
01719
01720
01721
01722 if(ucInfo[0] & 0x02)
01723 {
01724 if(ucInfo[0] & 0x08)
01725 {
01726 sReport += "\tIPv4-Channel disabled";
01727 }
01728 else
01729 {
01730 if(ucInfo[0] & 0x20)
01731 sReport += "\tIPv4-Address:..[DHCP]..";
01732 else
01733 sReport += "\tIPv4-Address:..........";
01734
01735 sprintf(cBuffer,
01736 "%d.%d.%d.%d",
01737 ucInfo[1],
01738 ucInfo[2],
01739 ucInfo[3],
01740 ucInfo[4] );
01741
01742 sReport += cBuffer;
01743 }
01744 }
01745
01746 if(ucInfo[0] & 0x01)
01747 {
01748 if(ucInfo[0] & 0x04)
01749 {
01750 sReport += "\tIPv6-Channel disabled";
01751 }
01752 else
01753 {
01754 if(ucInfo[0] & 0x10)
01755 sReport += "\tIPv6-Address:..[DHCP]..";
01756 else
01757 sReport += "\tIPv6-Address:..........";
01758
01759 sprintf(cBuffer,
01760 "%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X",
01761 ucInfo[5],
01762 ucInfo[6],
01763 ucInfo[7],
01764 ucInfo[8],
01765 ucInfo[9],
01766 ucInfo[10],
01767 ucInfo[11],
01768 ucInfo[12],
01769 ucInfo[13],
01770 ucInfo[14],
01771 ucInfo[15],
01772 ucInfo[16],
01773 ucInfo[17],
01774 ucInfo[18],
01775 ucInfo[19],
01776 ucInfo[20] );
01777
01778 sReport += cBuffer;
01779 }
01780 }
01781
01782 sReport += "\r\n";
01783 }
01784
01785
01786 void FedmIscReport_ReaderInfo::Add0x52InfoText(string& sReport, bool bSingle)
01787 {
01788 char cBuffer[256];
01789 unsigned char ucInfo[32];
01790 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
01791
01792 if(bSingle)
01793 {
01794 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucInfo, 30);
01795 sReport += "LAN-Information\n";
01796 }
01797 else
01798 {
01799 ucInfo[0] = pInfo->ucLanFlags;
01800 memcpy(&ucInfo[1], &pInfo->ucLanNetmaskV4[0], 4);
01801 memcpy(&ucInfo[5], &pInfo->ucLanNetmaskV6[0], 16);
01802 }
01803
01804
01805
01806 if(ucInfo[0] & 0x02)
01807 {
01808 if(ucInfo[0] & 0x08)
01809 {
01810 sReport += "\tIPv4-Channel disabled";
01811 }
01812 else
01813 {
01814 if(ucInfo[0] & 0x20)
01815 sReport += "\tIPv4-Netmask:..[DHCP]..";
01816 else
01817 sReport += "\tIPv4-Netmask:..........";
01818
01819 sprintf(cBuffer,
01820 "%d.%d.%d.%d",
01821 ucInfo[1],
01822 ucInfo[2],
01823 ucInfo[3],
01824 ucInfo[4] );
01825
01826 sReport += cBuffer;
01827 }
01828 }
01829
01830 if(ucInfo[0] & 0x01)
01831 {
01832 if(ucInfo[0] & 0x04)
01833 {
01834 sReport += "\tIPv6-Channel disabled";
01835 }
01836 else
01837 {
01838 if(ucInfo[0] & 0x10)
01839 sReport += "\tIPv6-Netmask:..[DHCP]..";
01840 else
01841 sReport += "\tIPv6-Netmask:..........";
01842
01843 sprintf(cBuffer,
01844 "%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X",
01845 ucInfo[5],
01846 ucInfo[6],
01847 ucInfo[7],
01848 ucInfo[8],
01849 ucInfo[9],
01850 ucInfo[10],
01851 ucInfo[11],
01852 ucInfo[12],
01853 ucInfo[13],
01854 ucInfo[14],
01855 ucInfo[15],
01856 ucInfo[16],
01857 ucInfo[17],
01858 ucInfo[18],
01859 ucInfo[19],
01860 ucInfo[20] );
01861
01862 sReport += cBuffer;
01863 }
01864 }
01865
01866 sReport += "\r\n";
01867 }
01868
01869
01870 void FedmIscReport_ReaderInfo::Add0x53InfoText(string& sReport, bool bSingle)
01871 {
01872 char cBuffer[256];
01873 unsigned char ucInfo[32];
01874 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
01875
01876 if(bSingle)
01877 {
01878 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucInfo, 30);
01879 sReport += "LAN-Information\n";
01880 }
01881 else
01882 {
01883 ucInfo[0] = pInfo->ucLanFlags;
01884 memcpy(&ucInfo[1], &pInfo->ucLanGatewayV4[0], 4);
01885 memcpy(&ucInfo[5], &pInfo->ucLanGatewayV6[0], 16);
01886 }
01887
01888
01889
01890 if(ucInfo[0] & 0x02)
01891 {
01892 if(ucInfo[0] & 0x08)
01893 {
01894 sReport += "\tIPv4-Channel disabled";
01895 }
01896 else
01897 {
01898 if(ucInfo[0] & 0x20)
01899 sReport += "\tIPv4-Gateway:..[DHCP]..";
01900 else
01901 sReport += "\tIPv4-Gateway:..........";
01902
01903 sprintf(cBuffer,
01904 "%d.%d.%d.%d",
01905 ucInfo[1],
01906 ucInfo[2],
01907 ucInfo[3],
01908 ucInfo[4] );
01909
01910 sReport += cBuffer;
01911 }
01912 }
01913
01914 if(ucInfo[0] & 0x01)
01915 {
01916 if(ucInfo[0] & 0x04)
01917 {
01918 sReport += "\tIPv6-Channel disabled";
01919 }
01920 else
01921 {
01922 if(ucInfo[0] & 0x10)
01923 sReport += "\tIPv6-Gateway:..[DHCP]..";
01924 else
01925 sReport += "\tIPv6-Gateway:..........";
01926
01927 sprintf(cBuffer,
01928 "%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X",
01929 ucInfo[5],
01930 ucInfo[6],
01931 ucInfo[7],
01932 ucInfo[8],
01933 ucInfo[9],
01934 ucInfo[10],
01935 ucInfo[11],
01936 ucInfo[12],
01937 ucInfo[13],
01938 ucInfo[14],
01939 ucInfo[15],
01940 ucInfo[16],
01941 ucInfo[17],
01942 ucInfo[18],
01943 ucInfo[19],
01944 ucInfo[20] );
01945
01946 sReport += cBuffer;
01947 }
01948 }
01949
01950 sReport += "\r\n";
01951 }
01952
01953
01954 void FedmIscReport_ReaderInfo::Add0x54InfoText(string& sReport, bool bSingle)
01955 {
01956 char cBuffer[64];
01957 unsigned char ucInfo[32];
01958 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
01959
01960 if(bSingle)
01961 {
01962 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucInfo, 30);
01963 sReport += "WLAN-Information\n";
01964 }
01965 else
01966 {
01967 ucInfo[0] = pInfo->ucWlanFlags;
01968 memcpy(&ucInfo[1], &pInfo->ucWlanMac[0], 6);
01969 }
01970
01971 if( (ucInfo[0] & 0x02) ||
01972 (ucInfo[0] & 0x01) )
01973 {
01974 if( ucInfo[0] & ((ucInfo[0]&0x03)<<2) )
01975 {
01976 sReport += "\tWLAN disabled";
01977 }
01978 else
01979 {
01980 sReport += "\tMAC-Address:...........";
01981 sprintf(cBuffer,
01982 "%02X:%02X:%02X:%02X:%02X:%02X",
01983 ucInfo[1],
01984 ucInfo[2],
01985 ucInfo[3],
01986 ucInfo[4],
01987 ucInfo[5],
01988 ucInfo[6] );
01989
01990 sReport += cBuffer;
01991 }
01992 }
01993
01994 sReport += "\r\n";
01995 }
01996
01997
01998 void FedmIscReport_ReaderInfo::Add0x55InfoText(string& sReport, bool bSingle)
01999 {
02000 char cBuffer[256];
02001 unsigned char ucInfo[32];
02002 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
02003
02004 if(bSingle)
02005 {
02006 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucInfo, 30);
02007 sReport += "WLAN-Information\n";
02008 }
02009 else
02010 {
02011 ucInfo[0] = pInfo->ucWlanFlags;
02012 memcpy(&ucInfo[1], &pInfo->ucWlanIpV4[0], 4);
02013 memcpy(&ucInfo[5], &pInfo->ucWlanIpV6[0], 16);
02014 }
02015
02016
02017
02018 if(ucInfo[0] & 0x02)
02019 {
02020 if(ucInfo[0] & 0x08)
02021 {
02022 sReport += "\tIPv4-Channel disabled";
02023 }
02024 else
02025 {
02026 if(ucInfo[0] & 0x20)
02027 sReport += "\tIPv4-Address:..[DHCP]..";
02028 else
02029 sReport += "\tIPv4-Address:..........";
02030
02031 sprintf(cBuffer,
02032 "%d.%d.%d.%d",
02033 ucInfo[1],
02034 ucInfo[2],
02035 ucInfo[3],
02036 ucInfo[4] );
02037
02038 sReport += cBuffer;
02039 }
02040 }
02041
02042 if(ucInfo[0] & 0x01)
02043 {
02044 if(ucInfo[0] & 0x04)
02045 {
02046 sReport += "\tIPv6-Channel disabled";
02047 }
02048 else
02049 {
02050 if(ucInfo[0] & 0x10)
02051 sReport += "\tIPv6-Address:..[DHCP]..";
02052 else
02053 sReport += "\tIPv6-Address:..........";
02054
02055 sprintf(cBuffer,
02056 "%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X",
02057 ucInfo[5],
02058 ucInfo[6],
02059 ucInfo[7],
02060 ucInfo[8],
02061 ucInfo[9],
02062 ucInfo[10],
02063 ucInfo[11],
02064 ucInfo[12],
02065 ucInfo[13],
02066 ucInfo[14],
02067 ucInfo[15],
02068 ucInfo[16],
02069 ucInfo[17],
02070 ucInfo[18],
02071 ucInfo[19],
02072 ucInfo[20] );
02073
02074 sReport += cBuffer;
02075 }
02076 }
02077
02078 sReport += "\r\n";
02079 }
02080
02081
02082 void FedmIscReport_ReaderInfo::Add0x56InfoText(string& sReport, bool bSingle)
02083 {
02084 char cBuffer[256];
02085 unsigned char ucInfo[32];
02086 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
02087
02088 if(bSingle)
02089 {
02090 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucInfo, 30);
02091 sReport += "WLAN-Information\n";
02092 }
02093 else
02094 {
02095 ucInfo[0] = pInfo->ucWlanFlags;
02096 memcpy(&ucInfo[1], &pInfo->ucWlanNetmaskV4[0], 4);
02097 memcpy(&ucInfo[5], &pInfo->ucWlanNetmaskV6[0], 16);
02098 }
02099
02100
02101 if(ucInfo[0] & 0x02)
02102 {
02103 if(ucInfo[0] & 0x08)
02104 {
02105 sReport += "\tIPv4-Channel disabled";
02106 }
02107 else
02108 {
02109 if(ucInfo[0] & 0x20)
02110 sReport += "\tIPv4-Netmask:..[DHCP]..";
02111 else
02112 sReport += "\tIPv4-Netmask:..........";
02113
02114 sprintf(cBuffer,
02115 "%d.%d.%d.%d",
02116 ucInfo[1],
02117 ucInfo[2],
02118 ucInfo[3],
02119 ucInfo[4] );
02120
02121 sReport += cBuffer;
02122 }
02123 }
02124
02125 if(ucInfo[0] & 0x01)
02126 {
02127 if(ucInfo[0] & 0x04)
02128 {
02129 sReport += "\tIPv6-Channel disabled";
02130 }
02131 else
02132 {
02133 if(ucInfo[0] & 0x10)
02134 sReport += "\tIPv6-Netmask:..[DHCP]..";
02135 else
02136 sReport += "\tIPv6-Netmask:..........";
02137
02138 sprintf(cBuffer,
02139 "%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X",
02140 ucInfo[5],
02141 ucInfo[6],
02142 ucInfo[7],
02143 ucInfo[8],
02144 ucInfo[9],
02145 ucInfo[10],
02146 ucInfo[11],
02147 ucInfo[12],
02148 ucInfo[13],
02149 ucInfo[14],
02150 ucInfo[15],
02151 ucInfo[16],
02152 ucInfo[17],
02153 ucInfo[18],
02154 ucInfo[19],
02155 ucInfo[20] );
02156
02157 sReport += cBuffer;
02158 }
02159 }
02160
02161 sReport += "\r\n";
02162 }
02163
02164
02165 void FedmIscReport_ReaderInfo::Add0x57InfoText(string& sReport, bool bSingle)
02166 {
02167 char cBuffer[256];
02168 unsigned char ucInfo[32];
02169 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
02170
02171 if(bSingle)
02172 {
02173 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucInfo, 30);
02174 sReport += "WLAN-Information\n";
02175 }
02176 else
02177 {
02178 ucInfo[0] = pInfo->ucWlanFlags;
02179 memcpy(&ucInfo[1], &pInfo->ucWlanGatewayV4[0], 4);
02180 memcpy(&ucInfo[5], &pInfo->ucWlanGatewayV6[0], 16);
02181 }
02182
02183
02184 if(ucInfo[0] & 0x02)
02185 {
02186 if(ucInfo[0] & 0x08)
02187 {
02188 sReport += "\tIPv4-Channel disabled";
02189 }
02190 else
02191 {
02192 if(ucInfo[0] & 0x20)
02193 sReport += "\tIPv4-Gateway:..[DHCP]..";
02194 else
02195 sReport += "\tIPv4-Gateway:..........";
02196
02197 sprintf(cBuffer,
02198 "%d.%d.%d.%d",
02199 ucInfo[1],
02200 ucInfo[2],
02201 ucInfo[3],
02202 ucInfo[4] );
02203
02204 sReport += cBuffer;
02205 }
02206 }
02207
02208 if(ucInfo[0] & 0x01)
02209 {
02210 if(ucInfo[0] & 0x04)
02211 {
02212 sReport += "\tIPv6-Channel disabled";
02213 }
02214 else
02215 {
02216 if(ucInfo[0] & 0x10)
02217 sReport += "\tIPv6-Gateway:..[DHCP]..";
02218 else
02219 sReport += "\tIPv6-Gateway:..........";
02220
02221 sprintf(cBuffer,
02222 "%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X",
02223 ucInfo[5],
02224 ucInfo[6],
02225 ucInfo[7],
02226 ucInfo[8],
02227 ucInfo[9],
02228 ucInfo[10],
02229 ucInfo[11],
02230 ucInfo[12],
02231 ucInfo[13],
02232 ucInfo[14],
02233 ucInfo[15],
02234 ucInfo[16],
02235 ucInfo[17],
02236 ucInfo[18],
02237 ucInfo[19],
02238 ucInfo[20] );
02239
02240 sReport += cBuffer;
02241 }
02242 }
02243
02244 sReport += "\r\n";
02245 }
02246
02247 void FedmIscReport_ReaderInfo::Add0x60InfoText(string& sReport, bool bSingle)
02248 {
02249 char cBuffer[64];
02250 unsigned char ucInfo[32];
02251 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
02252
02253 if(bSingle)
02254 {
02255 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucInfo, 18);
02256 }
02257 else
02258 {
02259 ucInfo[0] = pInfo->ucNoOfInputs;
02260 ucInfo[1] = pInfo->ucNoOfOutputs;
02261 ucInfo[2] = pInfo->ucNoOfRelays;
02262 }
02263
02264 sReport += "Input/Output capabilities";
02265 sReport += "\r\n";
02266
02267 sReport += "\tNumber of Inputs:......";
02268 sprintf(cBuffer, "%d", ucInfo[0]);
02269 sReport += cBuffer;
02270 sReport += "\r\n";
02271
02272 sReport += "\tNumber of Outputs:.....";
02273 sprintf(cBuffer, "%d", ucInfo[1]);
02274 sReport += cBuffer;
02275 sReport += "\r\n";
02276
02277 sReport += "\tNumber of Relays:......";
02278 sprintf(cBuffer, "%d", ucInfo[2]);
02279 sReport += cBuffer;
02280 sReport += "\r\n";
02281 }
02282
02283 void FedmIscReport_ReaderInfo::Add0x61InfoText(string& sReport, bool bSingle)
02284 {
02285 #if !defined(_FEDM_NO_PD_SUPPORT)
02286 char cBuffer[64];
02287 unsigned char ucInfo[32];
02288 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
02289 memset(ucInfo, 0, 32);
02290
02291 if(bSingle)
02292 {
02293 m_pReader->GetData(FEDM_ISC_TMP_READER_INFO, ucInfo, 7);
02294 }
02295 else
02296 {
02297 ucInfo[0] = pInfo->ucNoOfPeripheralDevices;
02298 if(pInfo->ucNoOfPeripheralDevices >= 1)
02299 {
02300 ucInfo[1] = pInfo->aPeripheralDevice[0].ucPDType;
02301 ucInfo[2] = pInfo->aPeripheralDevice[0].ucPDBusAdr;
02302 }
02303 if(pInfo->ucNoOfPeripheralDevices >= 2)
02304 {
02305 ucInfo[3] = pInfo->aPeripheralDevice[1].ucPDType;
02306 ucInfo[4] = pInfo->aPeripheralDevice[1].ucPDBusAdr;
02307 }
02308 if(pInfo->ucNoOfPeripheralDevices >= 3)
02309 {
02310 ucInfo[5] = pInfo->aPeripheralDevice[2].ucPDType;
02311 ucInfo[6] = pInfo->aPeripheralDevice[2].ucPDBusAdr;
02312 }
02313 }
02314
02315 sReport += "Peripheral Devices";
02316 sReport += "\r\n";
02317
02318 sReport += "\tNumber of Devices:.....";
02319 sprintf(cBuffer, "%d", ucInfo[0]);
02320 sReport += cBuffer;
02321 sReport += "\r\n";
02322
02323 for(unsigned char ucCnt=0; ucCnt<ucInfo[0]; ucCnt++)
02324 {
02325 sprintf(cBuffer, "\t%d. Device:.............", ucCnt+1);
02326 sReport += cBuffer;
02327 switch(ucInfo[1+2*ucCnt])
02328 {
02329 case FEDM_ISC_PD_TYPE_PEOPLE_COUNTER:
02330 sReport += "People Counter";
02331 break;
02332 case FEDM_ISC_PD_TYPE_EXTERNAL_IO:
02333 sReport += "External I/O-Board";
02334 break;
02335 }
02336 sReport += "\r\n";
02337
02338 sprintf(cBuffer, "\t Bus-Address:........", ucCnt);
02339 sReport += cBuffer;
02340 sprintf(cBuffer, "%d", ucInfo[2+2*ucCnt]);
02341 sReport += cBuffer;
02342 sReport += "\r\n";
02343 }
02344 #endif
02345 }
02346
02347
02348 void FedmIscReport_ReaderInfo::Add0x80InfoText(string& sReport, bool bSingle)
02349 {
02350 char cBuffer[64];
02351 unsigned char ucVersion[30];
02352 unsigned long nDeviceID = 0;
02353 string sDeviceID;
02354 string sOldCusID;
02355 string sOldFWVersion;
02356 string sOldRdrFunction;
02357 string sOldTrDriver;
02358 string sOldUhfRdrFunction;
02359 string sOldUhfTrDriver;
02360 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
02361
02362 if(bSingle)
02363 {
02364 m_pReader->GetData(FEDM_GetAdrOfID(FEDM_ISC_TMP_READER_INFO, 32), &ucVersion[0], 30, FEDM_TMPDATA_MEM);
02365 }
02366 else
02367 {
02368 memcpy(&ucVersion[ 0], pInfo->ucRfcDevID, 4);
02369 memcpy(&ucVersion[ 4], pInfo->ucRfcLicenseCustom, 4);
02370 memcpy(&ucVersion[ 8], pInfo->ucRfcLicenseFw, 2);
02371 memcpy(&ucVersion[10], pInfo->ucRfcLicenseTrType, 2);
02372 memcpy(&ucVersion[12], pInfo->ucRfcLicenseFct, 2);
02373 memcpy(&ucVersion[14], pInfo->ucRfcLicenseUhfTrType, 2);
02374 memcpy(&ucVersion[16], pInfo->ucRfcLicenseUhfFct, 2);
02375 }
02376
02377 FEDM_ConvHexUCharToHexStr(&ucVersion[ 0], 4, sDeviceID);
02378 FEDM_ConvHexUCharToHexStr(&ucVersion[ 4], 4, sOldCusID);
02379 FEDM_ConvHexUCharToHexStr(&ucVersion[ 8], 2, sOldFWVersion);
02380 FEDM_ConvHexUCharToHexStr(&ucVersion[10], 2, sOldTrDriver);
02381 FEDM_ConvHexUCharToHexStr(&ucVersion[12], 2, sOldRdrFunction);
02382 FEDM_ConvHexUCharToHexStr(&ucVersion[14], 2, sOldUhfTrDriver);
02383 FEDM_ConvHexUCharToHexStr(&ucVersion[16], 2, sOldUhfRdrFunction);
02384
02385
02386 sReport += "Serial Number and licensed options";
02387 sReport += "\r\n";
02388 sReport += "\tDevice-ID...............0x";
02389 sReport += sDeviceID;
02390 sReport += " (";
02391 sscanf(sDeviceID.c_str(), "%lx", &nDeviceID);
02392 sprintf(cBuffer, "%lu)", nDeviceID);
02393 sReport += cBuffer;
02394 sReport += "\r\n";
02395 sReport += "\tCustomer ID.............0x";
02396 sReport += sOldCusID;
02397 sReport += "\r\n";
02398 sReport += "\tFirmware Version........0x";
02399 sReport += sOldFWVersion;
02400
02401 if(m_pReader->GetReaderType() == FEDM_ISC_TYPE_ISCPRHD102)
02402 {
02403 sReport += "\r\n";
02404 sReport += "\tHF-Transponder-Driver...0x";
02405 sReport += sOldTrDriver;
02406 sReport += "\r\n";
02407 sReport += "\tHF Firmware Functions...0x";
02408 sReport += sOldRdrFunction;
02409 sReport += "\r\n";
02410 sReport += "\tUHF-Transponder-Driver..0x";
02411 sReport += sOldUhfTrDriver;
02412 sReport += "\r\n";
02413 sReport += "\tUHF Firmware Functions..0x";
02414 sReport += sOldUhfRdrFunction;
02415 }
02416 else
02417 {
02418 sReport += "\r\n";
02419 sReport += "\tTransponder-Driver......0x";
02420 sReport += sOldTrDriver;
02421 sReport += "\r\n";
02422 sReport += "\tFirmware Functions......0x";
02423 sReport += sOldRdrFunction;
02424 switch(m_pReader->GetReaderType())
02425 {
02426 case FEDM_ISC_TYPE_ISCLRU3000:
02427 if(ucVersion[13] & 0x01)
02428 {
02429
02430 sReport += " (with ISO 18000-6-C support)";
02431 }
02432 break;
02433 }
02434 }
02435
02436
02437
02438
02439
02440
02441
02442
02443
02444
02445
02446
02447
02448
02449
02450
02451
02452
02453
02454
02455
02456
02457
02458
02459
02460
02461
02462
02463
02464
02465
02466
02467
02468
02469
02470
02471
02472
02473
02474
02475
02476
02477
02478 sReport += "\r\n";
02479 }
02480
02481 void FedmIscReport_ReaderInfo::AddAllInfoText(string& sReport)
02482 {
02483 FEDM_ISC_READER_INFO* pInfo = m_pReader->GetReaderInfo();
02484
02485 if(pInfo->bIsMode0x00Read)
02486 Add0x00InfoText(sReport, false);
02487
02488 if(pInfo->bIsMode0x01Read)
02489 {
02490 sReport += "\n";
02491 Add0x01InfoText(sReport, false);
02492 }
02493
02494 if(pInfo->bIsMode0x02Read)
02495 {
02496 sReport += "\n";
02497 Add0x02InfoText(sReport, false);
02498 }
02499
02500 if(pInfo->bIsMode0x03Read)
02501 {
02502 sReport += "\n";
02503 Add0x03InfoText(sReport, false);
02504 }
02505
02506 if(pInfo->bIsMode0x04Read)
02507 {
02508 sReport += "\n";
02509 Add0x04InfoText(sReport, false);
02510 }
02511
02512 if(pInfo->bIsMode0x05Read)
02513 {
02514 sReport += "\n";
02515 Add0x05InfoText(sReport, false);
02516 }
02517
02518 if(pInfo->bIsMode0x06Read)
02519 {
02520 sReport += "\n";
02521 Add0x06InfoText(sReport, false);
02522 }
02523
02524 if(pInfo->bIsMode0x07Read)
02525 {
02526 sReport += "\n";
02527 Add0x07InfoText(sReport, false);
02528 }
02529
02530 if(pInfo->bIsMode0x08Read)
02531 {
02532 sReport += "\n";
02533 Add0x08InfoText(sReport, false);
02534 }
02535
02536 if(pInfo->bIsMode0x09Read)
02537 {
02538 sReport += "\n";
02539 Add0x09InfoText(sReport, false);
02540 }
02541
02542 if(pInfo->bIsMode0x10Read)
02543 {
02544 sReport += "\n";
02545 Add0x10InfoText(sReport, false);
02546 }
02547
02548 if(pInfo->bIsMode0x11Read)
02549 {
02550 sReport += "\n";
02551 Add0x11InfoText(sReport, false);
02552 }
02553
02554 if(pInfo->bIsMode0x12Read)
02555 {
02556 sReport += "\n";
02557 Add0x12InfoText(sReport, false);
02558 }
02559
02560 if(pInfo->bIsMode0x40Read)
02561 {
02562 sReport += "\n";
02563 Add0x40InfoText(sReport, false);
02564 }
02565
02566 if(pInfo->bIsMode0x41Read)
02567 {
02568 sReport += "\n";
02569 Add0x41InfoText(sReport, false);
02570 }
02571
02572 if( pInfo->bIsMode0x50Read ||
02573 pInfo->bIsMode0x51Read ||
02574 pInfo->bIsMode0x52Read ||
02575 pInfo->bIsMode0x53Read )
02576 {
02577 sReport += "\n";
02578 sReport += "LAN-Information\n";
02579 }
02580
02581 if(pInfo->bIsMode0x50Read)
02582 Add0x50InfoText(sReport, false);
02583
02584 if( (pInfo->ucLanFlags & ((pInfo->ucLanFlags&0x03)<<2) ) == 0 )
02585 {
02586 if(pInfo->bIsMode0x51Read)
02587 Add0x51InfoText(sReport, false);
02588
02589 if(pInfo->bIsMode0x52Read)
02590 Add0x52InfoText(sReport, false);
02591
02592 if(pInfo->bIsMode0x53Read)
02593 Add0x53InfoText(sReport, false);
02594 }
02595
02596 if( pInfo->bIsMode0x54Read ||
02597 pInfo->bIsMode0x55Read ||
02598 pInfo->bIsMode0x56Read ||
02599 pInfo->bIsMode0x57Read )
02600 {
02601 sReport += "\n";
02602 sReport += "WLAN-Information\n";
02603 }
02604
02605 if(pInfo->bIsMode0x54Read)
02606 Add0x54InfoText(sReport, false);
02607
02608
02609 if( (pInfo->ucWlanFlags & ((pInfo->ucWlanFlags&0x03)<<2) ) == 0 )
02610 {
02611 if(pInfo->bIsMode0x55Read)
02612 Add0x55InfoText(sReport, false);
02613
02614 if(pInfo->bIsMode0x56Read)
02615 Add0x56InfoText(sReport, false);
02616
02617 if(pInfo->bIsMode0x57Read)
02618 Add0x57InfoText(sReport, false);
02619 }
02620
02621 if(pInfo->bIsMode0x60Read)
02622 {
02623 sReport += "\n";
02624 Add0x60InfoText(sReport, false);
02625 }
02626
02627 if(pInfo->bIsMode0x61Read)
02628 {
02629 sReport += "\n";
02630 Add0x61InfoText(sReport, false);
02631 }
02632
02633 if(pInfo->bIsMode0x80Read)
02634 {
02635 sReport += "\n";
02636 Add0x80InfoText(sReport, false);
02637 }
02638 }