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 #include "FedmIscReport_ReaderDiagnostic.h"
00049 #include "../FEDM_ISCReader.h"
00050 #include "../FEDM_ISCReaderID.h"
00051 #include "../../FEDM_Functions.h"
00052 
00053 
00054 FedmIscReport_ReaderDiagnostic::FedmIscReport_ReaderDiagnostic(FEDM_ISCReader* pReader)
00055 {
00056         m_pReader = pReader;
00057 }
00058 
00059 FedmIscReport_ReaderDiagnostic::~FedmIscReport_ReaderDiagnostic()
00060 {
00061 }
00062 
00063 string FedmIscReport_ReaderDiagnostic::BuildReport(unsigned char ucMode)
00064 {
00065 #if _MSC_VER <= 1200
00066         m_sReport.erase(m_sReport.begin(), m_sReport.end());
00067 #else
00068         m_sReport.clear();
00069 #endif
00070         BuildReport(ucMode, m_sReport);
00071         return m_sReport;
00072 }
00073 
00074 string FedmIscReport_ReaderDiagnostic::BuildReport(unsigned char ucMode, FEDM_ISC_READER_DIAGNOSTIC* pInfo)
00075 {
00076 #if _MSC_VER <= 1200
00077         m_sReport.erase(m_sReport.begin(), m_sReport.end());
00078 #else
00079         m_sReport.clear();
00080 #endif
00081         BuildReport(ucMode, m_sReport, pInfo);
00082         return m_sReport;
00083 }
00084 
00085 int FedmIscReport_ReaderDiagnostic::BuildReport(unsigned char ucMode, string& sReport)
00086 {
00087         if(m_pReader == NULL)
00088                 return FEDM_ERROR_NULL_POINTER;
00089 
00090         FEDM_ISC_READER_DIAGNOSTIC* pInfo = m_pReader->GetReaderDiagnostic();
00091 
00092         switch(ucMode)
00093         {
00094         case 0x01:
00095                 if(pInfo->bIsMode0x01Read)
00096                         Add0x01InfoText(sReport);
00097                 break;
00098 
00099         case 0x02:
00100                 if(pInfo->bIsMode0x02Read)
00101                         Add0x02InfoText(sReport);
00102                 break;
00103 
00104         case 0x03:
00105                 if(pInfo->bIsMode0x03Read)
00106                         Add0x03InfoText(sReport);
00107                 break;
00108 
00109         case 0x04:
00110                 if(pInfo->bIsMode0x04Read)
00111                         Add0x04InfoText(sReport);
00112                 break;
00113 
00114         case 0x05:
00115                 if(pInfo->bIsMode0x05Read)
00116                         Add0x05InfoText(sReport);
00117                 break;
00118 
00119         case 0x06:
00120                 if(pInfo->bIsMode0x06Read)
00121                         Add0x06InfoText(sReport);
00122                 break;
00123 
00124         case 0x07:
00125                 if(pInfo->bIsMode0x07Read)
00126                         Add0x07InfoText(sReport);
00127                 break;
00128 
00129         case 0x20:
00130                 if(pInfo->bIsMode0x20Read)
00131                         Add0x20InfoText(sReport);
00132                 break;
00133 
00134         case 0x21:
00135                 if(pInfo->bIsMode0x21Read)
00136                         Add0x21InfoText(sReport);
00137                 break;
00138 
00139         case 0xFF:
00140                 AddAllInfoText(sReport);
00141                 break;
00142 
00143         default:
00144                 break;
00145         }
00146 
00147         return FEDM_OK;
00148 }
00149 
00150 int FedmIscReport_ReaderDiagnostic::BuildReport(unsigned char ucMode, string& sReport, FEDM_ISC_READER_DIAGNOSTIC* pInfo)
00151 {
00152         if(pInfo == NULL)
00153                 return FEDM_ERROR_NULL_POINTER;
00154 
00155         switch(ucMode)
00156         {
00157         case 0x01:
00158                 if(pInfo->bIsMode0x01Read)
00159                         Add0x01InfoText(sReport, pInfo);
00160                 break;
00161 
00162         case 0x02:
00163                 if(pInfo->bIsMode0x02Read)
00164                         Add0x02InfoText(sReport, pInfo);
00165                 break;
00166 
00167         case 0x03:
00168                 if(pInfo->bIsMode0x03Read)
00169                         Add0x03InfoText(sReport, pInfo);
00170                 break;
00171 
00172         case 0x04:
00173                 if(pInfo->bIsMode0x04Read)
00174                         Add0x04InfoText(sReport, pInfo);
00175                 break;
00176 
00177         case 0x05:
00178                 if(pInfo->bIsMode0x05Read)
00179                         Add0x05InfoText(sReport, pInfo);
00180                 break;
00181 
00182         case 0x06:
00183                 if(pInfo->bIsMode0x06Read)
00184                         Add0x06InfoText(sReport, pInfo);
00185                 break;
00186 
00187         case 0x07:
00188                 if(pInfo->bIsMode0x07Read)
00189                         Add0x07InfoText(sReport, pInfo);
00190                 break;
00191 
00192         case 0x20:
00193                 if(pInfo->bIsMode0x20Read)
00194                         Add0x20InfoText(sReport, pInfo);
00195                 break;
00196 
00197         case 0x21:
00198                 if(pInfo->bIsMode0x21Read)
00199                         Add0x21InfoText(sReport, pInfo);
00200                 break;
00201 
00202         case 0xFF:
00203                 AddAllInfoText(sReport, pInfo);
00204                 break;
00205 
00206         default:
00207                 break;
00208         }
00209 
00210         return FEDM_OK;
00211 }
00212 
00213 void FedmIscReport_ReaderDiagnostic::Add0x01InfoText(string& sReport, bool bSingle)
00214 {
00215         FEDM_ISC_READER_DIAGNOSTIC* pInfo = m_pReader->GetReaderDiagnostic();
00216         unsigned int uiReaderType = m_pReader->GetReaderType();
00217         pInfo->ucReserved3                      = ((uiReaderType & 0xFF000000)>>24);
00218         pInfo->ucReaderTypeOfClass      = ((uiReaderType & 0x00FF0000)>>16);
00219         pInfo->ucReaderClassGen         = ((uiReaderType & 0x0000FF00)>> 8);
00220         pInfo->ucReaderClass            = ((uiReaderType & 0x000000FF));
00221 
00222         Add0x01InfoText(sReport, pInfo, bSingle);
00223 }
00224 
00225 void FedmIscReport_ReaderDiagnostic::Add0x01InfoText(string& sReport, FEDM_ISC_READER_DIAGNOSTIC* pInfo, bool bSingle)
00226 {
00227         switch(pInfo->GetReaderType())
00228         {
00229         case FEDM_ISC_TYPE_ISCMR102:
00230         case FEDM_ISC_TYPE_ISCMR10X:
00231                 Add0x01InfoText_MR102(sReport, pInfo, bSingle);
00232                 break;
00233         
00234         case FEDM_ISC_TYPE_ISCMR200:
00235                 Add0x01InfoText_MR200(sReport, pInfo, bSingle);
00236                 break;
00237         
00238         case FEDM_ISC_TYPE_ISCPRH200:
00239                 Add0x01InfoText_PRH200(sReport, pInfo, bSingle);
00240                 break;
00241         
00242         case FEDM_ISC_TYPE_ISCLR200:
00243                 Add0x01InfoText_LR200(sReport, pInfo, bSingle);
00244                 break;
00245         
00246         case FEDM_ISC_TYPE_ISCLR1002:
00247                 Add0x01InfoText_LR1002(sReport, pInfo, bSingle);
00248                 break;
00249 
00250         case FEDM_ISC_TYPE_ISCLR2000:
00251         case FEDM_ISC_TYPE_ISCLR2500_A:
00252         case FEDM_ISC_TYPE_ISCLR2500_B:
00253                 Add0x01InfoText_LR2000(sReport, pInfo, bSingle);
00254                 break;
00255         
00256         case FEDM_ISC_TYPE_ISCMRU200:
00257         case FEDM_ISC_TYPE_MAXU1002:
00258         case FEDM_ISC_TYPE_ISCLRU1002:
00259         case FEDM_ISC_TYPE_ISCLRU1000:
00260         case FEDM_ISC_TYPE_ISCLRU2000:
00261         case FEDM_ISC_TYPE_ISCLRU3000:
00262                 Add0x01InfoText_LRU1000(sReport, pInfo, bSingle);
00263                 break;
00264 
00265         default:
00266                 break;
00267         }
00268 }
00269 
00270 
00271 void FedmIscReport_ReaderDiagnostic::Add0x01InfoText_MR102(string& sReport, bool bSingle)
00272 {
00273         FEDM_ISC_READER_DIAGNOSTIC* pInfo = m_pReader->GetReaderDiagnostic();
00274         Add0x01InfoText_MR102(sReport, pInfo, bSingle);
00275 }
00276 
00277 void FedmIscReport_ReaderDiagnostic::Add0x01InfoText_MR102(string& sReport, FEDM_ISC_READER_DIAGNOSTIC* pInfo, bool bSingle)
00278 {
00279         bool bTmpAlarm          = false;
00280         bool bZAnt                      = false;
00281         bool bNoise                     = false;
00282         bool bControl           = false;
00283         bool bDCAntError        = false;
00284         unsigned char   ucData[13];
00285 
00286         if(bSingle)
00287         {
00288                 m_pReader->GetData(FEDM_ISC_TMP_DIAG_DATA, &ucData[0], 13);
00289         }
00290         else
00291         {
00292                 ucData[0] = pInfo->ucFlagsA;
00293                 ucData[1] = pInfo->ucFlagsB;
00294         }
00295 
00296         
00297         if(ucData[0] & 0x80)
00298                 bTmpAlarm = true;
00299         if(ucData[0] & 0x04)
00300                 bZAnt = true;
00301         if(ucData[0] & 0x02)
00302                 bNoise = true;
00303         if(ucData[0] & 0x10)
00304                 bControl = true;
00305 
00306         if(ucData[1] & 0x04)
00307                 bDCAntError = true;
00308 
00309         sReport += " ";
00310         sReport += "General RF Status:";
00311         sReport += "\r\n";
00312 
00313         if(bNoise)
00314                 sReport += "\t1: Noise-Level..........Error\r\n";
00315         else
00316                 sReport += "\t1: Noise-Level..........OK\r\n";
00317 
00318         if(bZAnt)
00319                 sReport += "\t2: Ant |Z| <> 50 Ohm....Yes\r\n";
00320         else
00321                 sReport += "\t2: Ant |Z| <> 50 Ohm....No\r\n";
00322 
00323         if(bControl)
00324                 sReport += "\t4:  False Power.........Yes\r\n";
00325         else
00326                 sReport += "\t4:  False Power.........No\r\n";
00327 
00328 
00329         if(bDCAntError)
00330                 sReport += "\t10: DC-Power Antenna....Error\r\n";
00331         else
00332                 sReport += "\t10: DC-Power Antenna....OK\r\n";
00333 }
00334 
00335 
00336 void FedmIscReport_ReaderDiagnostic::Add0x01InfoText_MR200(string& sReport, bool bSingle)
00337 {
00338         FEDM_ISC_READER_DIAGNOSTIC* pInfo = m_pReader->GetReaderDiagnostic();
00339         Add0x01InfoText_MR200(sReport, pInfo, bSingle);
00340 }
00341 
00342 void FedmIscReport_ReaderDiagnostic::Add0x01InfoText_MR200(string& sReport, FEDM_ISC_READER_DIAGNOSTIC* pInfo, bool bSingle)
00343 {
00344         bool bG50                       = false;
00345         bool bL50                       = false;
00346         bool bNoise                     = false;
00347         bool bRFHardware        = false;
00348         bool bMux                       = false;
00349         bool bDat                       = false;
00350         unsigned char   ucData[13];
00351 
00352         if(bSingle)
00353         {
00354                 m_pReader->GetData(FEDM_ISC_TMP_DIAG_DATA, &ucData[0], 13);
00355         }
00356         else
00357         {
00358                 ucData[0] = pInfo->ucFlagsA;
00359                 ucData[1] = pInfo->ucFlagsB;
00360         }
00361 
00362         
00363         if(ucData[0] & 0x08)
00364                 bG50 = true;
00365         if(ucData[0] & 0x04)
00366                 bL50 = true;
00367         if(ucData[0] & 0x02)
00368                 bNoise = true;
00369         if(ucData[0] & 0x01)
00370                 bRFHardware = true;
00371 
00372         if(ucData[1] & 0x01)
00373                 bMux = true;
00374         if(ucData[1] & 0x02)
00375                 bDat = true;
00376 
00377         sReport += " ";
00378         sReport += "General RF Status:";
00379         sReport += "\r\n";
00380 
00381         if(bRFHardware)
00382                 sReport += "\t0: RF-Hardware..........Error\r\n";
00383         else
00384                 sReport += "\t0: RF-Hardware..........OK\r\n";
00385 
00386         if(bNoise)
00387                 sReport += "\t1: Noise-Level..........Error\r\n";
00388         else
00389                 sReport += "\t1: Noise-Level..........OK\r\n";
00390 
00391         if(!bL50 && !bG50)
00392         {
00393                 sReport += "\t2:.|Z|..................OK\r\n";
00394         }
00395         else
00396         {
00397                 if(bG50)
00398                         sReport += "\t2:.|Z|..................> 50 Ohm\r\n";
00399                 else if(bL50)
00400                         sReport += "\t2:.|Z|..................< 50 Ohm\r\n";
00401         }
00402 
00403         if(bMux)
00404                 sReport += "\t8: Mux-Status...........OK\r\n";
00405         else
00406                 sReport += "\t8: Mux-Status...........NOK\r\n";
00407 
00408         if(bDat)
00409                 sReport += "\t8: DAT-Status...........OK\r\n";
00410         else
00411                 sReport += "\t8: DAT-Status...........NOK\r\n";
00412 }
00413 
00414 void FedmIscReport_ReaderDiagnostic::Add0x01InfoText_PRH200(string& sReport, bool bSingle)
00415 {
00416         FEDM_ISC_READER_DIAGNOSTIC* pInfo = m_pReader->GetReaderDiagnostic();
00417         Add0x01InfoText_PRH200(sReport, pInfo, bSingle);
00418 }
00419 
00420 void FedmIscReport_ReaderDiagnostic::Add0x01InfoText_PRH200(string& sReport, FEDM_ISC_READER_DIAGNOSTIC* pInfo, bool bSingle)
00421 {
00422         bool bTmpAlarm                          = false;
00423         bool bTmpWarn                           = false;
00424         unsigned char ucBatAlarm        = 0x00;
00425         unsigned char   ucData[13];
00426 
00427         if(bSingle)
00428         {
00429                 m_pReader->GetData(FEDM_ISC_TMP_DIAG_DATA, &ucData[0], 13);
00430         }
00431         else
00432         {
00433                 ucData[0] = pInfo->ucFlagsA;
00434                 ucData[1] = pInfo->ucFlagsB;
00435         }
00436 
00437         
00438         if(ucData[0] & 0x80)
00439                 bTmpAlarm = true;
00440         if(ucData[0] & 0x20)
00441                 bTmpWarn = true;
00442 
00443         ucBatAlarm = ((ucData[1] & 0x30) >> 4);
00444 
00445         sReport += " ";
00446         sReport += "Alarm Status:";
00447         sReport += "\r\n";
00448 
00449         if(bTmpWarn)
00450                 sReport += "\t5: Temp-Warning.........Yes\r\n";
00451         else
00452                 sReport += "\t5: Temp-Warning.........No\r\n";
00453 
00454         if(bTmpAlarm)
00455                 sReport += "\t7: Temp-Alarm...........Yes\r\n";
00456         else
00457                 sReport += "\t7: Temp-Alarm...........No\r\n";
00458 
00459         switch(ucBatAlarm)
00460         {
00461         case 0:
00462                 sReport += "\t8: Battery-Level........OK\r\n";
00463                 break;
00464         case 1:
00465                 sReport += "\t8: Battery-Level.......<10%\r\n";
00466                 break;
00467         case 2:
00468                 sReport += "\t8: Battery-Level.......<5%\r\n";
00469                 break;
00470         case 3:
00471                 sReport += "\t8: Battery-Level.......<1%\r\n";
00472                 break;
00473         }
00474 }
00475 
00476 void FedmIscReport_ReaderDiagnostic::Add0x01InfoText_LR200(string& sReport, bool bSingle)
00477 {
00478         FEDM_ISC_READER_DIAGNOSTIC* pInfo = m_pReader->GetReaderDiagnostic();
00479         Add0x01InfoText_LR200(sReport, pInfo, bSingle);
00480 }
00481 
00482 void FedmIscReport_ReaderDiagnostic::Add0x01InfoText_LR200(string& sReport, FEDM_ISC_READER_DIAGNOSTIC* pInfo, bool bSingle)
00483 {
00484         bool bTmpAlarm          = false;
00485         bool bBit6                      = false;
00486         bool bTmpWarn           = false;
00487         bool bControl           = false;
00488         bool bG50                       = false;
00489         bool bL50                       = false;
00490         bool bNoise                     = false;
00491         bool bRFHardware        = false;
00492         bool bMux                       = false;
00493         unsigned char   ucData[13];
00494 
00495         if(bSingle)
00496         {
00497                 m_pReader->GetData(FEDM_ISC_TMP_DIAG_DATA, &ucData[0], 13);
00498         }
00499         else
00500         {
00501                 ucData[0] = pInfo->ucFlagsA;
00502                 ucData[1] = pInfo->ucFlagsB;
00503         }
00504 
00505         
00506         if(ucData[0] & 0x80)
00507                 bTmpAlarm = true;
00508         if(ucData[0] & 0x40)
00509                 bBit6 = true;
00510         if(ucData[0] & 0x20)
00511                 bTmpWarn = true;
00512         if(ucData[0] & 0x10)
00513                 bControl = true;
00514         if(ucData[0] & 0x08)
00515                 bG50 = true;
00516         if(ucData[0] & 0x04)
00517                 bL50 = true;
00518         if(ucData[0] & 0x02)
00519                 bNoise = true;
00520         if(ucData[0] & 0x01)
00521                 bRFHardware = true;
00522 
00523         if(ucData[1] & 0x01)
00524                 bMux = true;
00525 
00526         sReport += " ";
00527         sReport += "General RF Status:";
00528         sReport += "\r\n";
00529 
00530         if(bRFHardware)
00531                 sReport += "\t0: RF-Hardware..........Error\r\n";
00532         else
00533                 sReport += "\t0: RF-Hardware..........OK\r\n";
00534 
00535         if(bNoise)
00536                 sReport += "\t1: Noise-Level..........Error\r\n";
00537         else
00538                 sReport += "\t1: Noise-Level..........OK\r\n";
00539 
00540         if(!bL50 && !bG50)
00541         {
00542                 sReport += "\t2:.|Z|..................OK\r\n";
00543         }
00544         else
00545         {
00546                 if(bG50)
00547                         sReport += "\t2:.|Z|..................> 50 Ohm\r\n";
00548                 else if(bL50)
00549                         sReport += "\t2:.|Z|..................< 50 Ohm\r\n";
00550         }
00551 
00552         if(bControl)
00553                 sReport += "\t4: False Power..........Yes\r\n";
00554         else
00555                 sReport += "\t4: False Power..........No\r\n";
00556 
00557         if(bTmpWarn)
00558                 sReport += "\t5: Temp-Warning.........Yes\r\n";
00559         else
00560                 sReport += "\t5: Temp-Warning.........No\r\n";
00561 
00562         if(bBit6)
00563                 sReport += "\t6: .....................True\r\n";
00564         else
00565                 sReport += "\t6: .....................False\r\n";
00566 
00567         if(bTmpAlarm)
00568                 sReport += "\t7: Temp-Alarm...........Yes\r\n";
00569         else
00570                 sReport += "\t7: Temp-Alarm...........No\r\n";
00571 
00572         if(bMux)
00573                 sReport += "\t8: MUX-Status...........NOK\r\n";
00574         else
00575                 sReport += "\t8: MUX-Status...........OK\r\n";
00576 }
00577 
00578 
00579 void FedmIscReport_ReaderDiagnostic::Add0x01InfoText_LR1002(string& sReport, bool bSingle)
00580 {
00581         FEDM_ISC_READER_DIAGNOSTIC* pInfo = m_pReader->GetReaderDiagnostic();
00582         Add0x01InfoText_LR1002(sReport, pInfo, bSingle);
00583 }
00584 
00585 void FedmIscReport_ReaderDiagnostic::Add0x01InfoText_LR1002(string& sReport, FEDM_ISC_READER_DIAGNOSTIC* pInfo, bool bSingle)
00586 {
00587         bool bTmpAlarm          = false;
00588         bool bTmpWarn           = false;
00589         bool bControl           = false;
00590         bool bZAnt                      = false;
00591         bool bNoise                     = false;
00592         bool bRFHardware        = false;
00593         bool bMux                       = false;
00594         bool bDat                       = false;
00595         bool bDCAntError        = false;
00596         unsigned char   ucData[13];
00597 
00598         if(bSingle)
00599         {
00600                 m_pReader->GetData(FEDM_ISC_TMP_DIAG_DATA, &ucData[0], 13);
00601         }
00602         else
00603         {
00604                 ucData[0] = pInfo->ucFlagsA;
00605                 ucData[1] = pInfo->ucFlagsB;
00606         }
00607 
00608         
00609         if(ucData[0] & 0x80)
00610                 bTmpAlarm = true;
00611         if(ucData[0] & 0x20)
00612                 bTmpWarn = true;
00613         if(ucData[0] & 0x10)
00614                 bControl = true;
00615         if(ucData[0] & 0x04)
00616                 bZAnt = true;
00617         if(ucData[0] & 0x02)
00618                 bNoise = true;
00619         if(ucData[0] & 0x01)
00620                 bRFHardware = true;
00621 
00622         if(ucData[1] & 0x01)
00623                 bMux = true;
00624         if(ucData[1] & 0x02)
00625                 bDat = true;
00626         if(ucData[1] & 0x04)
00627                 bDCAntError = true;
00628 
00629         sReport += " ";
00630         sReport += "General RF Status:";
00631         sReport += "\r\n";
00632 
00633         if(bRFHardware)
00634                 sReport += "\t0:  RF-Hardware.........Error\r\n";
00635         else
00636                 sReport += "\t0:  RF-Hardware.........OK\r\n";
00637 
00638         if(bNoise)
00639                 sReport += "\t1:  Noise-Level.........Error\r\n";
00640         else
00641                 sReport += "\t1:  Noise-Level.........OK\r\n";
00642 
00643         if(bZAnt)
00644                 sReport += "\t2:  Ant |Z| <> 50 Ohm...Yes\r\n";
00645         else
00646                 sReport += "\t2:  Ant |Z| <> 50 Ohm...No\r\n";
00647 
00648         if(bControl)
00649                 sReport += "\t4:  False Power.........Yes\r\n";
00650         else
00651                 sReport += "\t4:  False Power.........No\r\n";
00652 
00653         if(bTmpWarn)
00654                 sReport += "\t5:  Temp-Warning........Yes\r\n";
00655         else
00656                 sReport += "\t5:  Temp-Warning........No\r\n";
00657 
00658         if(bTmpAlarm)
00659                 sReport += "\t7:  Temp-Alarm..........Yes\r\n";
00660         else
00661                 sReport += "\t7:  Temp-Alarm..........No\r\n";
00662 
00663         if(bMux)
00664                 sReport += "\t8:  MUX-Status..........NOK\r\n";
00665         else
00666                 sReport += "\t8:  MUX-Status..........OK\r\n";
00667 
00668         if(bDat)
00669                 sReport += "\t9:  DAT-Status..........NOK\r\n";
00670         else
00671                 sReport += "\t9:  DAT-Status..........OK\r\n";
00672 
00673 
00674         if(bDCAntError)
00675                 sReport += "\t10: DC-Power Antenna....Error\r\n";
00676         else
00677                 sReport += "\t10: DC-Power Antenna....OK\r\n";
00678 }
00679 
00680 void FedmIscReport_ReaderDiagnostic::Add0x01InfoText_LR2000(string& sReport, bool bSingle)
00681 {
00682         FEDM_ISC_READER_DIAGNOSTIC* pInfo = m_pReader->GetReaderDiagnostic();
00683         Add0x01InfoText_LR2000(sReport, pInfo, bSingle);
00684 }
00685 
00686 void FedmIscReport_ReaderDiagnostic::Add0x01InfoText_LR2000(string& sReport, FEDM_ISC_READER_DIAGNOSTIC* pInfo, bool bSingle)
00687 {
00688         bool bTmpAlarm          = false;
00689         bool bSync                      = false;
00690         bool bTmpWarn           = false;
00691         bool bControl           = false;
00692         bool bG50                       = false;
00693         bool bL50                       = false;
00694         bool bNoise                     = false;
00695         bool bRFHardware        = false;
00696         bool bMux                       = false;
00697         bool bDat                       = false;
00698         unsigned char   ucData[13];
00699 
00700         if(bSingle)
00701         {
00702                 m_pReader->GetData(FEDM_ISC_TMP_DIAG_DATA, &ucData[0], 13);
00703         }
00704         else
00705         {
00706                 ucData[0] = pInfo->ucFlagsA;
00707                 ucData[1] = pInfo->ucFlagsB;
00708         }
00709 
00710         
00711         if(ucData[0] & 0x80)
00712                 bTmpAlarm = true;
00713         if(ucData[0] & 0x40)
00714                 bSync = true;
00715         if(ucData[0] & 0x20)
00716                 bTmpWarn = true;
00717         if(ucData[0] & 0x10)
00718                 bControl = true;
00719         if(ucData[0] & 0x08)
00720                 bG50 = true;
00721         if(ucData[0] & 0x04)
00722                 bL50 = true;
00723         if(ucData[0] & 0x02)
00724                 bNoise = true;
00725         if(ucData[0] & 0x01)
00726                 bRFHardware = true;
00727 
00728         if(ucData[1] & 0x01)
00729                 bMux = true;
00730         if(ucData[1] & 0x02)
00731                 bDat = true;
00732 
00733         sReport += " ";
00734         sReport += "General RF Status:";
00735         sReport += "\r\n";
00736 
00737         if(bRFHardware)
00738                 sReport += "\t0: RF-Hardware..........Error\r\n";
00739         else
00740                 sReport += "\t0: RF-Hardware..........OK\r\n";
00741 
00742         if(bNoise)
00743                 sReport += "\t1: .....................Error\r\n";
00744         else
00745                 sReport += "\t1: .....................OK\r\n";
00746 
00747         if(!bL50 && !bG50)
00748         {
00749                 sReport += "\t2:.|Z|..................OK\r\n";
00750         }
00751         else
00752         {
00753                 if(bG50 && bL50)
00754                 {
00755                         sReport += "\t2:.|Z|..................Phase Error\r\n";
00756                 }
00757                 else
00758                 {
00759                         if(bG50)
00760                                 sReport += "\t2:.|Z|..................> 50 Ohm\r\n";
00761                         else if(bL50)
00762                                 sReport += "\t2:.|Z|..................< 50 Ohm\r\n";
00763                 }
00764         }
00765 
00766         if(bControl)
00767                 sReport += "\t4: False Power..........Yes\r\n";
00768         else
00769                 sReport += "\t4: False Power..........No\r\n";
00770 
00771         if(bTmpWarn)
00772                 sReport += "\t5: Temp-Warning.........Yes\r\n";
00773         else
00774                 sReport += "\t5: Temp-Warning.........No\r\n";
00775 
00776         if(bSync)
00777                 sReport += "\t6: Sync.................Timeout\r\n";
00778         else
00779                 sReport += "\t6: Sync.................OK\r\n";
00780 
00781         if(bTmpAlarm)
00782                 sReport += "\t7: Temp-Alarm...........Yes\r\n";
00783         else
00784                 sReport += "\t7: Temp-Alarm...........No\r\n";
00785 
00786         if(bMux)
00787                 sReport += "\t8: MUX-Status...........NOK\r\n";
00788         else
00789                 sReport += "\t8: MUX-Status...........OK\r\n";
00790 
00791         if(bDat)
00792                 sReport += "\t9: DAT-Status...........NOK\r\n";
00793         else
00794                 sReport += "\t9: DAT-Status...........OK\r\n";
00795 }
00796 
00797 void FedmIscReport_ReaderDiagnostic::Add0x01InfoText_LRU1000(string& sReport, bool bSingle)
00798 {
00799         FEDM_ISC_READER_DIAGNOSTIC* pInfo = m_pReader->GetReaderDiagnostic();
00800         Add0x01InfoText_LRU1000(sReport, pInfo, bSingle);
00801 }
00802 
00803 void FedmIscReport_ReaderDiagnostic::Add0x01InfoText_LRU1000(string& sReport, FEDM_ISC_READER_DIAGNOSTIC* pInfo, bool bSingle)
00804 {
00805         bool bChAlloc           = false;
00806         bool bControl           = false;
00807         bool bNoise                     = false;
00808         bool bRFHardware        = false;
00809         bool bZAnt4                     = false;
00810         bool bZAnt3                     = false;
00811         bool bZAnt2                     = false;
00812         bool bZAnt1                     = false;
00813         unsigned char   ucData[13];
00814 
00815         if(bSingle)
00816         {
00817                 m_pReader->GetData(FEDM_ISC_TMP_DIAG_DATA, &ucData[0], 13);
00818         }
00819         else
00820         {
00821                 ucData[0] = pInfo->ucFlagsA;
00822                 ucData[1] = pInfo->ucFlagsB;
00823         }
00824         
00825         if(ucData[0] & 0x20)
00826                 bChAlloc = true;
00827         if(ucData[0] & 0x10)
00828                 bControl = true;
00829         if(ucData[0] & 0x02)
00830                 bNoise = true;
00831         if(ucData[0] & 0x01)
00832                 bRFHardware = true;
00833 
00834         if(ucData[1] & 0x08)
00835                 bZAnt4 = true;
00836         if(ucData[1] & 0x04)
00837                 bZAnt3 = true;
00838         if(ucData[1] & 0x02)
00839                 bZAnt2 = true;
00840         if(ucData[1] & 0x01)
00841                 bZAnt1 = true;
00842 
00843         sReport += " ";
00844         sReport += "General RF Status:";
00845         sReport += "\r\n";
00846 
00847         if(bRFHardware)
00848                 sReport += "\t0: RF-Hardware..........Error\r\n";
00849         else
00850                 sReport += "\t0: RF-Hardware..........OK\r\n";
00851 
00852         if(bNoise)
00853                 sReport += "\t1: Noise-Level..........Error\r\n";
00854         else
00855                 sReport += "\t1: Noise-Level..........OK\r\n";
00856 
00857         if(bControl)
00858                 sReport += "\t4: False Power..........Yes\r\n";
00859         else
00860                 sReport += "\t4: False Power..........No\r\n";
00861 
00862         if(bChAlloc)
00863                 sReport += "\t5: Channel Allocation...Yes\r\n";
00864         else
00865                 sReport += "\t5: Channel Allocation...No\r\n";
00866 
00867         sReport += "\r\n";
00868 
00869         if(bZAnt1)
00870                 sReport += "\t0: Ant1 |Z| <> 50 Ohm...Yes\r\n";
00871         else
00872                 sReport += "\t0: Ant1 |Z| <> 50 Ohm...No\r\n";
00873 
00874         if(bZAnt2)
00875                 sReport += "\t1: Ant2 |Z| <> 50 Ohm...Yes\r\n";
00876         else
00877                 sReport += "\t1: Ant2 |Z| <> 50 Ohm...No\r\n";
00878 
00879         if(m_pReader->GetReaderType() != FEDM_ISC_TYPE_ISCMRU200)
00880         {
00881                 if(bZAnt3)
00882                         sReport += "\t2: Ant3 |Z| <> 50 Ohm...Yes\r\n";
00883                 else
00884                         sReport += "\t2: Ant3 |Z| <> 50 Ohm...No\r\n";
00885 
00886                 if(bZAnt4)
00887                         sReport += "\t3: Ant4 |Z| <> 50 Ohm...Yes\r\n";
00888                 else
00889                         sReport += "\t3: Ant4 |Z| <> 50 Ohm...No\r\n";
00890         }
00891 }
00892 
00893 void FedmIscReport_ReaderDiagnostic::Add0x02InfoText(string& sReport, bool bSingle)
00894 {
00895         FEDM_ISC_READER_DIAGNOSTIC* pInfo = m_pReader->GetReaderDiagnostic();
00896         Add0x02InfoText(sReport, pInfo, bSingle);
00897 }
00898 
00899 void FedmIscReport_ReaderDiagnostic::Add0x02InfoText(string& sReport, FEDM_ISC_READER_DIAGNOSTIC* pInfo, bool bSingle)
00900 {
00901         char cBuffer[16];
00902         unsigned char   ucData[13];
00903         unsigned int uiImpedance = 0;
00904 
00905         unsigned int uiReaderType = m_pReader->GetReaderType();
00906 
00907         if(bSingle)
00908         {
00909                 m_pReader->GetData(FEDM_ISC_TMP_DIAG_DATA, &ucData[0], 13);
00910                 if(uiReaderType == FEDM_ISC_TYPE_ISCMR200)
00911                 {
00912                         uiImpedance = (((unsigned int)ucData[0])<<8) + ucData[1];
00913                 }
00914         }
00915         else
00916         {
00917                 switch(uiReaderType)
00918                 {
00919                 case FEDM_ISC_TYPE_ISCMR200:
00920                         uiImpedance = pInfo->uiImpedance;
00921                         break;
00922 
00923                 case FEDM_ISC_TYPE_ISCLR200:
00924                 case FEDM_ISC_TYPE_ISCLR2000:
00925                         ucData[0] = pInfo->ucRfPower;
00926                         ucData[1] = pInfo->ucRfModulation;
00927                         ucData[2] = pInfo->ucAmpTemp;
00928                         break;
00929                 }
00930         }
00931 
00932 
00933         if(!bSingle)
00934                 sReport += "\r\n";
00935 
00936         switch(uiReaderType)
00937         {
00938         case FEDM_ISC_TYPE_ISCLR2000:
00939                 sprintf(cBuffer, "%u", (unsigned int)ucData[2]);
00940                 sReport += "\tTemperature of RF final stage.: ";
00941                 sReport += cBuffer;
00942                 sReport += " (°C)\r\n";
00943                 break;
00944         }
00945 }
00946 
00947 void FedmIscReport_ReaderDiagnostic::Add0x03InfoText(string& sReport, bool bSingle)
00948 {
00949         FEDM_ISC_READER_DIAGNOSTIC* pInfo = m_pReader->GetReaderDiagnostic();
00950         Add0x03InfoText(sReport, pInfo, bSingle);
00951 }
00952 
00953 void FedmIscReport_ReaderDiagnostic::Add0x03InfoText(string& sReport, FEDM_ISC_READER_DIAGNOSTIC* pInfo, bool bSingle)
00954 {
00955         char cBuffer[16];
00956         unsigned char   ucData[13];
00957 
00958         if(bSingle)
00959         {
00960                 m_pReader->GetData(FEDM_ISC_TMP_DIAG_DATA, &ucData[0], 13);
00961         }
00962         else
00963         {
00964                 ucData[0] = pInfo->ucMuxStatusCh1;
00965                 ucData[1] = pInfo->ucMuxStatusCh2;
00966                 ucData[2] = pInfo->ucMuxStatusCh3;
00967                 ucData[3] = pInfo->ucMuxStatusCh4;
00968                 ucData[4] = pInfo->ucMuxStatusCh5;
00969                 ucData[5] = pInfo->ucMuxStatusCh6;
00970                 ucData[6] = pInfo->ucMuxStatusCh7;
00971                 ucData[7] = pInfo->ucMuxStatusCh8;
00972         }
00973 
00974 
00975         if(!bSingle)
00976                 sReport += "\r\n";
00977 
00978         sReport += " ";
00979         sReport += "Multiplexer Status:";
00980         sReport += "\r\n";
00981 
00982         sprintf(cBuffer, "0x%02X\r\n", ucData[0]);
00983         sReport += "\tMUX-Status Channel 1....";
00984         sReport += cBuffer;
00985         sprintf(cBuffer, "0x%02X\r\n", ucData[1]);
00986         sReport += "\tMUX-Status Channel 2....";
00987         sReport += cBuffer;
00988         sprintf(cBuffer, "0x%02X\r\n", ucData[2]);
00989         sReport += "\tMUX-Status Channel 3....";
00990         sReport += cBuffer;
00991         sprintf(cBuffer, "0x%02X\r\n", ucData[3]);
00992         sReport += "\tMUX-Status Channel 4....";
00993         sReport += cBuffer;
00994         sprintf(cBuffer, "0x%02X\r\n", ucData[4]);
00995         sReport += "\tMUX-Status Channel 5....";
00996         sReport += cBuffer;
00997         sprintf(cBuffer, "0x%02X\r\n", ucData[5]);
00998         sReport += "\tMUX-Status Channel 6....";
00999         sReport += cBuffer;
01000         sprintf(cBuffer, "0x%02X\r\n", ucData[6]);
01001         sReport += "\tMUX-Status Channel 7....";
01002         sReport += cBuffer;
01003         sprintf(cBuffer, "0x%02X\r\n", ucData[7]);
01004         sReport += "\tMUX-Status Channel 8....";
01005         sReport += cBuffer;
01006 }
01007 
01008 void FedmIscReport_ReaderDiagnostic::Add0x04InfoText(string& sReport, bool bSingle)
01009 {
01010         FEDM_ISC_READER_DIAGNOSTIC* pInfo = m_pReader->GetReaderDiagnostic();
01011         Add0x04InfoText(sReport, pInfo, bSingle);
01012 }
01013 
01014 void FedmIscReport_ReaderDiagnostic::Add0x04InfoText(string& sReport, FEDM_ISC_READER_DIAGNOSTIC* pInfo, bool bSingle)
01015 {
01016         bool bEEDev1            = false;
01017         bool bEEDev2            = false;
01018         bool bFilter            = false;
01019         bool bRFDecoder         = false;
01020         bool bParaMismatch      = false;
01021         bool bPeopleCounterError        = false;
01022         bool bExt_ADC_DAC_Error = false;
01023         unsigned char   ucData[13];
01024 
01025         unsigned int uiReaderType = m_pReader->GetReaderType();
01026 
01027         if(bSingle)
01028         {
01029                 m_pReader->GetData(FEDM_ISC_TMP_DIAG_DATA, &ucData[0], 13);
01030         }
01031         else
01032         {
01033                 ucData[0] = pInfo->ucIntErrorA;
01034                 ucData[1] = pInfo->ucIntErrorB;
01035         }
01036 
01037         
01038         if(ucData[1] & 0x01)
01039                 bEEDev1 = true;
01040         if(ucData[1] & 0x02)
01041                 bEEDev2 = true;
01042         if(ucData[1] & 0x04)
01043                 bFilter = true;
01044         if(ucData[1] & 0x08)
01045                 bRFDecoder = true;
01046         if(ucData[1] & 0x10)
01047                 bParaMismatch = true;
01048         if(ucData[1] & 0x20)
01049                 bPeopleCounterError = true;
01050         if(ucData[1] & 0x40)
01051                 bExt_ADC_DAC_Error = true;
01052 
01053         if(!bSingle)
01054                 sReport += "\r\n";
01055 
01056         sReport += " ";
01057         sReport += "Hardware and Configuration Status:";
01058         sReport += "\r\n";
01059 
01060         sReport += "\tCommunication with...\r\n";
01061 
01062         if(bEEDev1)
01063                 sReport += "\t0: EEPROM-Device1.......Error\r\n";
01064         else
01065                 sReport += "\t0: EEPROM-Device1.......OK\r\n";
01066 
01067         switch(uiReaderType)
01068         {
01069         case FEDM_ISC_TYPE_ISCPRH102:
01070         case FEDM_ISC_TYPE_ISCPRH200:
01071         case FEDM_ISC_TYPE_ISCPRHD102:
01072         case FEDM_ISC_TYPE_ISCMU02:
01073         case FEDM_ISC_TYPE_ISCMR102:
01074         case FEDM_ISC_TYPE_ISCMR10X:
01075         case FEDM_ISC_TYPE_MAXU1002:
01076         case FEDM_ISC_TYPE_ISCLRU1002:
01077                 break;
01078 
01079         default:
01080                 if(bEEDev2)
01081                         sReport += "\t1: EEPROM-Device2.......Error\r\n";
01082                 else
01083                         sReport += "\t1: EEPROM-Device2.......OK\r\n";
01084                 break;
01085         }
01086 
01087         switch(uiReaderType)
01088         {
01089         case FEDM_ISC_TYPE_MAXU1002:
01090         case FEDM_ISC_TYPE_ISCLRU1002:
01091                 break;
01092 
01093         case FEDM_ISC_TYPE_ISCLR2000:
01094         case FEDM_ISC_TYPE_ISCLR2500_A:
01095         case FEDM_ISC_TYPE_ISCLR2500_B:
01096                 if(bFilter)
01097                         sReport += "\t2: RF-Power.............Out of Control Range\r\n";
01098                 else
01099                         sReport += "\t2: RF-Power.............OK\r\n";
01100                 break;
01101 
01102         case FEDM_ISC_TYPE_ISCLRU2000:
01103         case FEDM_ISC_TYPE_ISCLRU3000:
01104                 if(bFilter)
01105                         sReport += "\t2: Hardware-Filter......Error\r\n";
01106                 else
01107                         sReport += "\t2: Hardware-Filter......OK\r\n";
01108                 break;
01109         }
01110 
01111         switch(uiReaderType)
01112         {
01113         case FEDM_ISC_TYPE_ISCPRH200:
01114         case FEDM_ISC_TYPE_ISCMR102:
01115         case FEDM_ISC_TYPE_ISCMR10X:
01116                 break;
01117 
01118         default:
01119                 if(bRFDecoder)
01120                         sReport += "\t3: RF-Decoder...........Error\r\n";
01121                 else
01122                         sReport += "\t3: RF-Decoder...........OK\r\n";
01123                 break;
01124         }
01125 
01126         switch(uiReaderType)
01127         {
01128         case FEDM_ISC_TYPE_MAXU1002:
01129         case FEDM_ISC_TYPE_ISCLRU1002:
01130                 break;
01131 
01132         case FEDM_ISC_TYPE_ISCLRU2000:
01133         case FEDM_ISC_TYPE_ISCLRU3000:
01134                 if(bParaMismatch)
01135                         sReport += "\t4: Parameter Mismatch detected\r\n";
01136                 break;
01137         }
01138 
01139         switch(uiReaderType)
01140         {
01141         case FEDM_ISC_TYPE_MAXU1002:
01142         case FEDM_ISC_TYPE_ISCLRU1002:
01143                 break;
01144 
01145         case FEDM_ISC_TYPE_ISCLR2500_A:
01146         case FEDM_ISC_TYPE_ISCLR2500_B:
01147                 if(bPeopleCounterError)
01148                         sReport += "\t5: People Counter.......Error\r\n";
01149                 else
01150                         sReport += "\t5: People Counter.......OK\r\n";
01151                 break;
01152         }
01153 
01154 
01155         switch(uiReaderType)
01156         {
01157         case FEDM_ISC_TYPE_ISCLRU3000:
01158                 if(bExt_ADC_DAC_Error)
01159                         sReport += "\t6: Peripheral DAC/ADC Error detected\r\n";
01160                 break;
01161         }
01162 }
01163 
01164 void FedmIscReport_ReaderDiagnostic::Add0x05InfoText(string& sReport, bool bSingle)
01165 {
01166         FEDM_ISC_READER_DIAGNOSTIC* pInfo = m_pReader->GetReaderDiagnostic();
01167         Add0x05InfoText(sReport, pInfo, bSingle);
01168 }
01169 
01170 void FedmIscReport_ReaderDiagnostic::Add0x05InfoText(string& sReport, FEDM_ISC_READER_DIAGNOSTIC* pInfo, bool bSingle)
01171 {
01172         char cBuffer[16];
01173         unsigned char   ucData[13];
01174         
01175         unsigned int uiReaderType = m_pReader->GetReaderType();
01176 
01177         if(bSingle)
01178         {
01179                 m_pReader->GetData(FEDM_ISC_TMP_DIAG_DATA, &ucData[0], 13);
01180         }
01181         else
01182         {
01183                 ucData[0] = pInfo->CNTRL_OUT1.ucMux_PowerAmp;
01184                 ucData[1] = pInfo->PHASE_LT50_OUT1.ucMux_PhaseError_Less;
01185                 ucData[2] = pInfo->PHASE_GT50_OUT1.ucMux_PhaseError_More;
01186                 ucData[3] = pInfo->CNTRL_OUT2.ucMux_PowerAmp;
01187                 ucData[4] = pInfo->PHASE_LT50_OUT2.ucMux_PhaseError_Less;
01188                 ucData[5] = pInfo->PHASE_GT50_OUT2.ucMux_PhaseError_More;
01189                 ucData[6] = pInfo->CNTRL_OUT3.ucMux_PowerAmp;
01190                 ucData[7] = pInfo->PHASE_LT50_OUT3.ucMux_PhaseError_Less;
01191                 ucData[8] = pInfo->PHASE_GT50_OUT3.ucMux_PhaseError_More;
01192                 ucData[9] = pInfo->CNTRL_OUT4.ucMux_PowerAmp;
01193                 ucData[10] = pInfo->PHASE_LT50_OUT4.ucMux_PhaseError_Less;
01194                 ucData[11] = pInfo->PHASE_GT50_OUT4.ucMux_PhaseError_More;
01195         }
01196 
01197 
01198         if(!bSingle)
01199                 sReport += "\r\n";
01200 
01201         sReport += " ";
01202         sReport += "Status of external Multiplexer:";
01203         sReport += "\r\n";
01204 
01205         switch(uiReaderType)
01206         {
01207         case FEDM_ISC_TYPE_ISCLR1002:
01208         case FEDM_ISC_TYPE_ISCLR2000:
01209         case FEDM_ISC_TYPE_ISCLR2500_A:
01210         case FEDM_ISC_TYPE_ISCLR2500_B:
01211                 sprintf(cBuffer, "0x%02X\r\n", ucData[0]);
01212                 sReport += "\tPower-Status for ext. MUX at Output1...............";
01213                 sReport += cBuffer;
01214                 sprintf(cBuffer, "0x%02X\r\n", ucData[1]);
01215                 sReport += "\tImpedance-Status (<50R) for ext. MUX at Output1....";
01216                 sReport += cBuffer;
01217                 sprintf(cBuffer, "0x%02X\r\n", ucData[2]);
01218                 sReport += "\tImpedance-Status (>50R) for ext. MUX at Output1....";
01219                 sReport += cBuffer;
01220                 break;
01221         case FEDM_ISC_TYPE_ISCLRU2000:
01222         case FEDM_ISC_TYPE_ISCLRU3000:
01223                 sprintf(cBuffer, "0x%02X\r\n", ucData[0]);
01224                 sReport += "\tPower-Status for ext. MUX at Output1...............";
01225                 sReport += cBuffer;
01226                 sprintf(cBuffer, "0x%02X\r\n", ucData[3]);
01227                 sReport += "\tPower-Status for ext. MUX at Output2...............";
01228                 sReport += cBuffer;
01229                 sprintf(cBuffer, "0x%02X\r\n", ucData[6]);
01230                 sReport += "\tPower-Status for ext. MUX at Output3...............";
01231                 sReport += cBuffer;
01232                 sprintf(cBuffer, "0x%02X\r\n", ucData[9]);
01233                 sReport += "\tPower-Status for ext. MUX at Output4...............";
01234                 sReport += cBuffer;
01235                 break;
01236         }
01237 }
01238 
01239 void FedmIscReport_ReaderDiagnostic::Add0x06InfoText(string& sReport, bool bSingle)
01240 {
01241         FEDM_ISC_READER_DIAGNOSTIC* pInfo = m_pReader->GetReaderDiagnostic();
01242         Add0x06InfoText(sReport, pInfo, bSingle);
01243 }
01244 
01245 void FedmIscReport_ReaderDiagnostic::Add0x06InfoText(string& sReport, FEDM_ISC_READER_DIAGNOSTIC* pInfo, bool bSingle)
01246 {
01247         char cBuffer[16];
01248         unsigned char   ucData[13];
01249 
01250         if(bSingle)
01251         {
01252                 m_pReader->GetData(FEDM_ISC_TMP_DIAG_DATA, &ucData[0], 13);
01253         }
01254         else
01255         {
01256                 memcpy(&ucData[0], (char*)&pInfo->usErrorFlags, 6);
01257         }
01258 
01259         if(!bSingle)
01260                 sReport += "\r\n";
01261 
01262         sReport += " ";
01263         sReport += "MAX Status:";
01264         sReport += "\r\n";
01265 
01266         sReport += "\tError Flags...\r\n";
01267 
01268         if(ucData[1] & 0x01)
01269                 sReport += "\t 0: Real-Time Clock........Error\r\n";
01270         else
01271                 sReport += "\t 0: Real-Time Clock........OK\r\n";
01272 
01273         if(ucData[1] & 0x02)
01274                 sReport += "\t 1: Metadata...............Error\r\n";
01275         else
01276                 sReport += "\t 1: Metadata...............OK\r\n";
01277 
01278         if(ucData[1] & 0x04)
01279                 sReport += "\t 2: Timezone Table.........Error\r\n";
01280         else
01281                 sReport += "\t 2: Timezone Table.........OK\r\n";
01282 
01283         if(ucData[1] & 0x08)
01284                 sReport += "\t 3: Holiday Table..........Error\r\n";
01285         else
01286                 sReport += "\t 3: Holiday Table..........OK\r\n";
01287 
01288         if(ucData[1] & 0x10)
01289                 sReport += "\t 4: Access Table...........Error\r\n";
01290         else
01291                 sReport += "\t 4: Access Table...........OK\r\n";
01292 
01293         if(ucData[1] & 0x40)
01294                 sReport += "\t 6: Reader Config..........Error\r\n";
01295         else
01296                 sReport += "\t 6: Reader Config..........OK\r\n";
01297 
01298         if(ucData[1] & 0x80)
01299                 sReport += "\t 7: Table Update...........Error\r\n";
01300         else
01301                 sReport += "\t 7: Table Update...........OK\r\n";
01302 
01303         if(ucData[0] & 0x01)
01304                 sReport += "\t15: Event-Table Overflow...Yes\r\n";
01305         else
01306                 sReport += "\t15: Event-Table Overflow...No\r\n";
01307 
01308         sReport += "\r\n";
01309         sprintf(cBuffer, "%u\r\n", (((unsigned int)ucData[2])<<8) + ucData[3]);
01310         sReport += "\tEvent-Table-Size...........";
01311         sReport += cBuffer;
01312 
01313         sprintf(cBuffer, "%u\r\n", (((unsigned int)ucData[4])<<8) + ucData[5]);
01314         sReport += "\tEvent-Table-Length.........";
01315         sReport += cBuffer;
01316 }
01317 
01318 void FedmIscReport_ReaderDiagnostic::Add0x07InfoText(string& sReport, bool bSingle)
01319 {
01320         FEDM_ISC_READER_DIAGNOSTIC* pInfo = m_pReader->GetReaderDiagnostic();
01321         Add0x07InfoText(sReport, pInfo, bSingle);
01322 }
01323 
01324 void FedmIscReport_ReaderDiagnostic::Add0x07InfoText(string& sReport, FEDM_ISC_READER_DIAGNOSTIC* pInfo, bool bSingle)
01325 {
01326         unsigned char ucData[30];
01327 
01328         if(bSingle)
01329         {
01330                 m_pReader->GetData(FEDM_ISC_TMP_DIAG_DATA, &ucData[0], 30);
01331         }
01332         else
01333         {
01334                 memcpy(&ucData[0], (char*)&pInfo->ucNoOfLEDs, 30);
01335         }
01336 
01337         if(!bSingle)
01338                 sReport += "\r\n";
01339 
01340         sReport += " ";
01341         sReport += "LED Status:";
01342         sReport += "\r\n";
01343 
01344 
01345         
01346         switch(ucData[1] & 0x03)
01347         {
01348         case 0: 
01349                 sReport += "\tRF-On (green)...............off";
01350                 break;
01351         case 1: 
01352                 sReport += "\tRF-On (green)...............on";
01353                 break;
01354         case 2: 
01355                 sReport += "\tRF-On (green)...............(flashing)";
01356                 break;
01357         default: 
01358                 sReport += "\tRF-On (green)...............(unknown value)";
01359         }
01360         sReport += "\r\n";
01361 
01362         
01363         switch( (ucData[1] & 0x30) >> 4)
01364         {
01365         case 0: 
01366                 sReport += "\tTag detected (blue).........no";
01367                 break;
01368         case 1: 
01369                 sReport += "\tTag detected (blue).........yes";
01370                 break;
01371         case 2: 
01372                 sReport += "\tTag detected (blue).........(flashing)";
01373                 break;
01374         default: 
01375                 sReport += "\tTag detected (blue).........(unknown value)";
01376         }
01377         sReport += "\r\n";
01378 
01379         
01380         switch(ucData[2] & 0x03)
01381         {
01382         case 0: 
01383                 sReport += "\tSpecial Function (green)....disabled";
01384                 break;
01385         case 1: 
01386                 sReport += "\tSpecial Function (green)....enabled";
01387                 break;
01388         case 2: 
01389                 sReport += "\tSpecial Function (green)....(flashing)";
01390                 break;
01391         default: 
01392                 sReport += "\tSpecial Function (green)....(unknown value)";
01393         }
01394         sReport += "\r\n";
01395 
01396         
01397         switch( (ucData[2] & 0x30) >> 4)
01398         {
01399         case 0: 
01400                 sReport += "\tSF: Tag detected (red)......no";
01401                 break;
01402         case 1: 
01403                 sReport += "\tSF: Tag detected (red)......yes";
01404                 break;
01405         case 2: 
01406                 sReport += "\tSF: Tag detected (red)......(flashing)";
01407                 break;
01408         default: 
01409                 sReport += "\tSF: Tag detected (red)......(unknown value)";
01410         }
01411         sReport += "\r\n";
01412 
01413         
01414         switch(ucData[3] & 0x03)
01415         {
01416         case 0: 
01417                 sReport += "\tWiFi Status (white).........connected";
01418                 break;
01419         case 1: 
01420                 sReport += "\tWiFi Status (white).........(on)";
01421                 break;
01422         case 2: 
01423                 sReport += "\tWiFi Status (white).........ambiguous";
01424                 break;
01425         default: 
01426                 sReport += "\tWiFi Status (white).........(unknown value)";
01427         }
01428         sReport += "\r\n";
01429 
01430         
01431         switch(ucData[4])
01432         {
01433         case 0x00: 
01434                 sReport += "\tBattery Status..............OK";
01435                 break;
01436         case 0x01: 
01437                 sReport += "\tBattery Status (orange).....<15% of charge capacity";
01438                 break;
01439         case 0x10: 
01440                 sReport += "\tBattery Status (red)........empty; no RF";
01441                 break;
01442         case 0x20: 
01443                 sReport += "\tBattery Status (red flash)..automatic-off";
01444                 break;
01445         default: 
01446                 sReport += "\tBattery Status...............(unknown value)";
01447         }
01448         sReport += "\r\n";
01449 
01450         
01451         switch(ucData[5])
01452         {
01453         case 0x00: 
01454                 sReport += "\tMode........................(off)";
01455                 break;
01456         case 0x01: 
01457                 sReport += "\tMode (green)................Normal";
01458                 break;
01459         case 0x10: 
01460                 sReport += "\tMode (white)................Boost";
01461                 break;
01462         default: 
01463                 sReport += "\tMode........................(unknown value)";
01464         }
01465         sReport += "\r\n";
01466 }
01467 
01468 void FedmIscReport_ReaderDiagnostic::Add0x20InfoText(string& sReport, bool bSingle)
01469 {
01470         FEDM_ISC_READER_DIAGNOSTIC* pInfo = m_pReader->GetReaderDiagnostic();
01471         Add0x20InfoText(sReport, pInfo, bSingle);
01472 }
01473 
01474 void FedmIscReport_ReaderDiagnostic::Add0x20InfoText(string& sReport, FEDM_ISC_READER_DIAGNOSTIC* pInfo, bool bSingle)
01475 {
01476         unsigned char ucData[31];
01477 
01478         memset(ucData, 0, 31);
01479 
01480         if(bSingle)
01481         {
01482                 m_pReader->GetData(FEDM_ISC_TMP_DIAG_DATA, ucData, 31);
01483         }
01484         else
01485         {
01486                 memcpy(ucData, pInfo->ucFirmwareStatus, 31);
01487         }
01488 
01489 
01490         if(!bSingle)
01491                 sReport += "\r\n";
01492 
01493         sReport += " ";
01494         sReport += "Firmware Status:";
01495         sReport += "\r\n";
01496 
01497         sReport += "\tResult of Firmware Update:\t";
01498         sReport += (char*)ucData;
01499         sReport += "\r\n";
01500 }
01501 
01502 void FedmIscReport_ReaderDiagnostic::Add0x21InfoText(string& sReport, bool bSingle)
01503 {
01504         FEDM_ISC_READER_DIAGNOSTIC* pInfo = m_pReader->GetReaderDiagnostic();
01505         Add0x21InfoText(sReport, pInfo, bSingle);
01506 }
01507 
01508 void FedmIscReport_ReaderDiagnostic::Add0x21InfoText(string& sReport, FEDM_ISC_READER_DIAGNOSTIC* pInfo, bool bSingle)
01509 {
01510         unsigned char ucData[31];
01511 
01512         memset(ucData, 0, 31);
01513 
01514         if(bSingle)
01515         {
01516                 m_pReader->GetData(FEDM_ISC_TMP_DIAG_DATA, ucData, 31);
01517         }
01518         else
01519         {
01520                 ucData[0] = pInfo->ucConfigParaChange;
01521         }
01522 
01523 
01524         if(!bSingle)
01525                 sReport += "\r\n";
01526 
01527         sReport += " ";
01528         sReport += "Status of Configuration Parameter:";
01529         sReport += "\r\n";
01530 
01531         if(ucData[0] == 0x00)
01532                 sReport += "\tParameter unchanged\t";
01533         else if(ucData[0] == 0x01)
01534                 sReport += "\tParameter changed after Firmware Update:\t";
01535 
01536         sReport += "\r\n";
01537 }
01538 
01539 void FedmIscReport_ReaderDiagnostic::AddAllInfoText(string& sReport)
01540 {
01541         FEDM_ISC_READER_DIAGNOSTIC* pInfo = m_pReader->GetReaderDiagnostic();
01542         unsigned int uiReaderType = m_pReader->GetReaderType();
01543         pInfo->ucReserved3                      = ((uiReaderType & 0xFF000000)>>24);
01544         pInfo->ucReaderTypeOfClass      = ((uiReaderType & 0x00FF0000)>>16);
01545         pInfo->ucReaderClassGen         = ((uiReaderType & 0x0000FF00)>> 8);
01546         pInfo->ucReaderClass            = ((uiReaderType & 0x000000FF));
01547 
01548         AddAllInfoText(sReport, pInfo);
01549 }
01550 
01551 void FedmIscReport_ReaderDiagnostic::AddAllInfoText(string& sReport, FEDM_ISC_READER_DIAGNOSTIC* pInfo)
01552 {
01553         unsigned int uiReaderType = pInfo->GetReaderType();
01554 
01555         if(pInfo->bIsMode0x01Read)
01556         {
01557                 switch(uiReaderType)
01558                 {
01559                 case FEDM_ISC_TYPE_ISCMR102:
01560                 case FEDM_ISC_TYPE_ISCMR10X:
01561                         Add0x01InfoText_MR102(sReport, pInfo, false);
01562                         break;
01563 
01564                 case FEDM_ISC_TYPE_ISCMR200:
01565                         Add0x01InfoText_MR200(sReport, pInfo, false);
01566                         break;
01567 
01568                 case FEDM_ISC_TYPE_ISCLR200:
01569                         Add0x01InfoText_LR200(sReport, pInfo, false);
01570                         break;
01571 
01572                 case FEDM_ISC_TYPE_ISCPRH200:
01573                         Add0x01InfoText_PRH200(sReport, pInfo, false);
01574                         break;
01575         
01576                 case FEDM_ISC_TYPE_ISCLR1002:
01577                         Add0x01InfoText_LR1002(sReport, pInfo, false);
01578                         break;
01579 
01580                 case FEDM_ISC_TYPE_ISCLR2000:
01581                 case FEDM_ISC_TYPE_ISCLR2500_A:
01582                 case FEDM_ISC_TYPE_ISCLR2500_B:
01583                         Add0x01InfoText_LR2000(sReport, pInfo, false);
01584                         break;
01585 
01586                 case FEDM_ISC_TYPE_ISCMRU200:
01587                 case FEDM_ISC_TYPE_ISCLRU1000:
01588                 case FEDM_ISC_TYPE_MAXU1002:
01589                 case FEDM_ISC_TYPE_ISCLRU1002:
01590                 case FEDM_ISC_TYPE_ISCLRU2000:
01591                 case FEDM_ISC_TYPE_ISCLRU3000:
01592                         Add0x01InfoText_LRU1000(sReport, pInfo, false);
01593                         break;
01594                 }
01595         }
01596 
01597         if(pInfo->bIsMode0x02Read)
01598         {
01599                 Add0x02InfoText(sReport, pInfo, false);
01600         }
01601         
01602         if(pInfo->bIsMode0x03Read)
01603         {
01604                 Add0x03InfoText(sReport, pInfo, false);
01605         }
01606         
01607         if(pInfo->bIsMode0x04Read)
01608         {
01609                 Add0x04InfoText(sReport, pInfo, false);
01610         }
01611         
01612         if(pInfo->bIsMode0x05Read)
01613         {
01614                 Add0x05InfoText(sReport, pInfo, false);
01615         }
01616         
01617         if(pInfo->bIsMode0x06Read)
01618         {
01619                 Add0x06InfoText(sReport, pInfo, false);
01620         }
01621         
01622         if(pInfo->bIsMode0x07Read)
01623         {
01624                 Add0x07InfoText(sReport, pInfo, false);
01625         }
01626         
01627         if(pInfo->bIsMode0x20Read)
01628         {
01629                 Add0x20InfoText(sReport, pInfo, false);
01630         }
01631         
01632         if(pInfo->bIsMode0x21Read)
01633         {
01634                 Add0x21InfoText(sReport, pInfo, false);
01635         }
01636 }