Changeset 6851 in ntrip


Ignore:
Timestamp:
May 26, 2015, 3:32:30 PM (5 years ago)
Author:
stuerze
Message:

minor changes regarding phase biases

Location:
trunk/BNC/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp

    r6850 r6851  
    346346    satPhaseBias._time       = _lastTime;
    347347    satPhaseBias._updateInt  = _phaseBias.UpdateInterval;
    348     satPhaseBias._dispersiveBiasConsitencyIndicator
    349                              = _phaseBias.DispersiveBiasConsistencyIndicator;
    350     satPhaseBias._MWConsistencyIndicator
    351                              = _phaseBias.MWConsistencyIndicator;
    352348    satPhaseBias._yawDeg     = _phaseBias.Sat[ii].YawAngle * 180.0 / M_PI;
    353349    satPhaseBias._yawDegRate = _phaseBias.Sat[ii].YawRate * 180.0 / M_PI;
  • trunk/BNC/src/satObs.cpp

    r6850 r6851  
    217217      *out << "> PHASE_BIAS " << epoTime.datestr(' ') << ' ' << epoTime.timestr(1,' ') << " "
    218218           << satPhaseBias._updateInt <<  " "
    219            << satPhaseBias._dispersiveBiasConsitencyIndicator <<  " "
    220            << satPhaseBias._MWConsistencyIndicator <<  " "
    221219           << biasList.size() << ' ' << satPhaseBias._staID << endl;
    222220    }
  • trunk/BNC/src/satObs.h

    r6850 r6851  
    149149  t_satPhaseBias() {
    150150    _updateInt  = 0;
    151     _dispersiveBiasConsitencyIndicator = 0;
    152     _MWConsistencyIndicator = 0;
    153151    _yawDeg     = 0.0;
    154152    _yawDegRate = 0.0;
     
    160158  bncTime                     _time;
    161159  unsigned int                _updateInt;
    162   unsigned int                _dispersiveBiasConsitencyIndicator;
    163   unsigned int                _MWConsistencyIndicator;
    164160  double                      _yawDeg;
    165161  double                      _yawDegRate;
  • trunk/BNC/src/upload/bncrtnetuploadcaster.cpp

    r6850 r6851  
    394394
    395395      QMap<QString, double> codeBiases;
    396 
    397       QVector<phaseBiasSignal*> pbSig(0);
     396      QList<phaseBiasSignal> phaseBiasList;
     397      phaseBiasesSat pbSat;
    398398
    399399      while (true) {
     
    439439          }
    440440        }
     441        else if (key == "yawAngle") {
     442          in >> numVal >> pbSat.yA;
     443        }
     444        else if (key == "yawRate") {
     445          in >> numVal >> pbSat.yR;
     446        }
    441447        else if (key == "PhaseBias") {
    442           phaseBiasesSat pbSat;
    443           in >> pbSat.yA >> pbSat.yR >> pbSat.dispInd >> pbSat.MWInd;
    444448          in >> numVal;
    445           pbSig.resize(numVal);
    446449          for (int ii = 0; ii < numVal; ii++) {
    447             in >> pbSig[ii]->type >> pbSig[ii]->bias >> pbSig[ii]->intInd
    448                 >> pbSig[ii]->WLInd >> pbSig[ii]->discCount;
     450            phaseBiasSignal pb;
     451            in >> pb.type >> pb.bias >> pb.intInd >> pb.WLInd
     452              >> pb.discCount;
     453            phaseBiasList.append(pb);
    449454          }
    450455        }
     
    938943        phasebiasSat->ID = prn.mid(1).toInt();
    939944        phasebiasSat->NumberOfPhaseBiases = 0;
     945        phasebiasSat->YawAngle = pbSat.yA;
     946        phasebiasSat->YawRate = pbSat.yR;
    940947        if      (prn[0] == 'G') {
    941           QMutableVectorIterator<phaseBiasSignal*> it(pbSig);
     948          QListIterator<phaseBiasSignal> it(phaseBiasList);
    942949          while (it.hasNext()) {
    943             phaseBiasSignal *pbsig = it.next();
    944             if      (pbsig->type == "1C") {
     950            const phaseBiasSignal &pbSig = it.next();
     951            if      (pbSig.type == "1C") {
    945952              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    946953              phasebiasSat->NumberOfPhaseBiases += 1;
    947954              phasebiasSat->Biases[ii].Type = CODETYPEGPS_L1_CA;
    948               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    949               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    950               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    951               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    952             }
    953             else if (pbsig->type == "1P") {
     955              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     956              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     957              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     958              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     959            }
     960            else if (pbSig.type == "1P") {
    954961              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    955962              phasebiasSat->NumberOfPhaseBiases += 1;
    956963              phasebiasSat->Biases[ii].Type = CODETYPEGPS_L1_P;
    957               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    958               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    959               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    960               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    961             }
    962             else if (pbsig->type == "1W") {
     964              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     965              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     966              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     967              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     968            }
     969            else if (pbSig.type == "1W") {
    963970              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    964971              phasebiasSat->NumberOfPhaseBiases += 1;
    965972              phasebiasSat->Biases[ii].Type = CODETYPEGPS_L1_Z;
    966               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    967               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    968               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    969               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    970             }
    971             else if (pbsig->type == "2C") {
     973              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     974              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     975              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     976              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     977            }
     978            else if (pbSig.type == "2C") {
    972979              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    973980              phasebiasSat->NumberOfPhaseBiases += 1;
    974981              phasebiasSat->Biases[ii].Type = CODETYPEGPS_L2_CA;
    975               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    976               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    977               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    978               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    979             }
    980             else if (pbsig->type == "2D") {
     982              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     983              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     984              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     985              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     986            }
     987            else if (pbSig.type == "2D") {
    981988              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    982989              phasebiasSat->NumberOfPhaseBiases += 1;
    983990              phasebiasSat->Biases[ii].Type = CODETYPEGPS_SEMI_CODELESS;
    984               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    985               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    986               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    987               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    988             }
    989             else if (pbsig->type == "2S") {
     991              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     992              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     993              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     994              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     995            }
     996            else if (pbSig.type == "2S") {
    990997              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    991998              phasebiasSat->NumberOfPhaseBiases += 1;
    992999              phasebiasSat->Biases[ii].Type = CODETYPEGPS_L2_CM;
    993               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    994               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    995               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    996               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    997             }
    998             else if (pbsig->type == "2L") {
     1000              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1001              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1002              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1003              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1004            }
     1005            else if (pbSig.type == "2L") {
    9991006              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    10001007              phasebiasSat->NumberOfPhaseBiases += 1;
    10011008              phasebiasSat->Biases[ii].Type = CODETYPEGPS_L2_CL;
    1002               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1003               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1004               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1005               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1006             }
    1007             else if (pbsig->type == "2X") {
     1009              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1010              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1011              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1012              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1013            }
     1014            else if (pbSig.type == "2X") {
    10081015              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    10091016              phasebiasSat->NumberOfPhaseBiases += 1;
    10101017              phasebiasSat->Biases[ii].Type = CODETYPEGPS_L2_CML;
    1011               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1012               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1013               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1014               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1015             }
    1016             else if (pbsig->type == "2P") {
     1018              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1019              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1020              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1021              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1022            }
     1023            else if (pbSig.type == "2P") {
    10171024              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    10181025              phasebiasSat->NumberOfPhaseBiases += 1;
    10191026              phasebiasSat->Biases[ii].Type = CODETYPEGPS_L2_P;
    1020               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1021               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1022               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1023               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1024             }
    1025             else if (pbsig->type == "2W") {
     1027              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1028              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1029              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1030              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1031            }
     1032            else if (pbSig.type == "2W") {
    10261033              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    10271034              phasebiasSat->NumberOfPhaseBiases += 1;
    10281035              phasebiasSat->Biases[ii].Type = CODETYPEGPS_L2_Z;
    1029               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1030               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1031               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1032               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1033             }
    1034             else if (pbsig->type == "5I") {
     1036              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1037              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1038              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1039              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1040            }
     1041            else if (pbSig.type == "5I") {
    10351042              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    10361043              phasebiasSat->NumberOfPhaseBiases += 1;
    10371044              phasebiasSat->Biases[ii].Type = CODETYPEGPS_L5_I;
    1038               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1039               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1040               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1041               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1042             }
    1043             else if (pbsig->type == "5Q") {
     1045              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1046              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1047              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1048              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1049            }
     1050            else if (pbSig.type == "5Q") {
    10441051              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    10451052              phasebiasSat->NumberOfPhaseBiases += 1;
    10461053              phasebiasSat->Biases[ii].Type = CODETYPEGPS_L5_Q;
    1047               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1048               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1049               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1050               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1051             }
    1052             else if (pbsig->type == "5X") {
     1054              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1055              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1056              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1057              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1058            }
     1059            else if (pbSig.type == "5X") {
    10531060              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    10541061              phasebiasSat->NumberOfPhaseBiases += 1;
    10551062              phasebiasSat->Biases[ii].Type = CODETYPEGPS_L5_IQ;
    1056               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1057               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1058               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1059               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
     1063              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1064              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1065              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1066              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
    10601067            }
    10611068          }
    10621069        }
    10631070        if      (prn[0] == 'R') {
    1064           QMutableVectorIterator<phaseBiasSignal*> it(pbSig);
     1071          QListIterator<phaseBiasSignal> it(phaseBiasList);
    10651072          while (it.hasNext()) {
    1066             phaseBiasSignal *pbsig = it.next();
    1067             if      (pbsig->type == "1C") {
     1073            const phaseBiasSignal &pbSig = it.next();
     1074            if      (pbSig.type == "1C") {
    10681075              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    10691076              phasebiasSat->NumberOfPhaseBiases += 1;
    10701077              phasebiasSat->Biases[ii].Type = CODETYPEGLONASS_L1_CA;
    1071               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1072               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1073               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1074               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1075             }
    1076             else if (pbsig->type == "1P") {
     1078              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1079              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1080              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1081              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1082            }
     1083            else if (pbSig.type == "1P") {
    10771084              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    10781085              phasebiasSat->NumberOfPhaseBiases += 1;
    10791086              phasebiasSat->Biases[ii].Type = CODETYPEGLONASS_L1_P;
    1080               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1081               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1082               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1083               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1084             }
    1085             else if (pbsig->type == "2C") {
     1087              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1088              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1089              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1090              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1091            }
     1092            else if (pbSig.type == "2C") {
    10861093              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    10871094              phasebiasSat->NumberOfPhaseBiases += 1;
    10881095              phasebiasSat->Biases[ii].Type = CODETYPEGLONASS_L2_CA;
    1089               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1090               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1091               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1092               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1093             }
    1094             else if (pbsig->type == "2P") {
     1096              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1097              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1098              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1099              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1100            }
     1101            else if (pbSig.type == "2P") {
    10951102              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    10961103              phasebiasSat->NumberOfPhaseBiases += 1;
    10971104              phasebiasSat->Biases[ii].Type = CODETYPEGLONASS_L2_P;
    1098               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1099               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1100               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1101               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
     1105              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1106              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1107              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1108              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
    11021109            }
    11031110          }
    11041111        }
    11051112        if      (prn[0] == 'E') {
    1106           QMutableVectorIterator<phaseBiasSignal*> it(pbSig);
     1113          QListIterator<phaseBiasSignal> it(phaseBiasList);
    11071114          while (it.hasNext()) {
    1108             phaseBiasSignal *pbsig = it.next();
    1109             if      (pbsig->type == "1A") {
     1115            const phaseBiasSignal &pbSig = it.next();
     1116            if      (pbSig.type == "1A") {
    11101117              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    11111118              phasebiasSat->NumberOfPhaseBiases += 1;
    11121119              phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E1_A;
    1113               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1114               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1115               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1116               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1117             }
    1118             else if (pbsig->type == "1B") {
     1120              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1121              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1122              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1123              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1124            }
     1125            else if (pbSig.type == "1B") {
    11191126              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    11201127              phasebiasSat->NumberOfPhaseBiases += 1;
    11211128              phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E1_B;
    1122               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1123               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1124               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1125               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1126             }
    1127             else if (pbsig->type == "1C") {
     1129              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1130              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1131              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1132              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1133            }
     1134            else if (pbSig.type == "1C") {
    11281135              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    11291136              phasebiasSat->NumberOfPhaseBiases += 1;
    11301137              phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E1_C;
    1131               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1132               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1133               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1134               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1135             }
    1136             else if (pbsig->type == "5I") {
     1138              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1139              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1140              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1141              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1142            }
     1143            else if (pbSig.type == "5I") {
    11371144              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    11381145              phasebiasSat->NumberOfPhaseBiases += 1;
    11391146              phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E5A_I;
    1140               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1141               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1142               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1143               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1144             }
    1145             else if (pbsig->type == "5Q") {
     1147              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1148              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1149              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1150              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1151            }
     1152            else if (pbSig.type == "5Q") {
    11461153              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    11471154              phasebiasSat->NumberOfPhaseBiases += 1;
    11481155              phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E5A_Q;
    1149               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1150               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1151               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1152               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1153             }
    1154             else if (pbsig->type == "7I") {
     1156              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1157              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1158              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1159              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1160            }
     1161            else if (pbSig.type == "7I") {
    11551162              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    11561163              phasebiasSat->NumberOfPhaseBiases += 1;
    11571164              phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E5B_I;
    1158               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1159               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1160               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1161               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1162             }
    1163             else if (pbsig->type == "7Q") {
     1165              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1166              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1167              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1168              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1169            }
     1170            else if (pbSig.type == "7Q") {
    11641171              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    11651172              phasebiasSat->NumberOfPhaseBiases += 1;
    11661173              phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E5B_Q;
    1167               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1168               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1169               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1170               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1171             }
    1172             else if (pbsig->type == "8I") {
     1174              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1175              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1176              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1177              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1178            }
     1179            else if (pbSig.type == "8I") {
    11731180              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    11741181              phasebiasSat->NumberOfPhaseBiases += 1;
    11751182              phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E5_I;
    1176               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1177               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1178               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1179               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1180             }
    1181             else if (pbsig->type == "8Q") {
     1183              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1184              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1185              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1186              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1187            }
     1188            else if (pbSig.type == "8Q") {
    11821189              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    11831190              phasebiasSat->NumberOfPhaseBiases += 1;
    11841191              phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E5_Q;
    1185               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1186               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1187               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1188               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1189             }
    1190             else if (pbsig->type == "6A") {
     1192              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1193              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1194              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1195              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1196            }
     1197            else if (pbSig.type == "6A") {
    11911198              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    11921199              phasebiasSat->NumberOfPhaseBiases += 1;
    11931200              phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E6_A;
    1194               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1195               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1196               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1197               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1198             }
    1199             else if (pbsig->type == "6B") {
     1201              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1202              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1203              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1204              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1205            }
     1206            else if (pbSig.type == "6B") {
    12001207              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    12011208              phasebiasSat->NumberOfPhaseBiases += 1;
    12021209              phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E6_B;
    1203               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1204               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1205               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1206               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1207             }
    1208             else if (pbsig->type == "6C") {
     1210              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1211              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1212              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1213              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1214            }
     1215            else if (pbSig.type == "6C") {
    12091216              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    12101217              phasebiasSat->NumberOfPhaseBiases += 1;
    12111218              phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E6_C;
    1212               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1213               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1214               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1215               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
     1219              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1220              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1221              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1222              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
    12161223            }
    12171224          }
    12181225        }
    12191226        if      (prn[0] == 'J') {
    1220           QMutableVectorIterator<phaseBiasSignal*> it(pbSig);
     1227          QListIterator<phaseBiasSignal> it(phaseBiasList);
    12211228          while (it.hasNext()) {
    1222             phaseBiasSignal *pbsig = it.next();
    1223             if      (pbsig->type == "1C") {
     1229            const phaseBiasSignal &pbSig = it.next();
     1230            if      (pbSig.type == "1C") {
    12241231              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    12251232              phasebiasSat->NumberOfPhaseBiases += 1;
    12261233              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L1_CA;
    1227               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1228               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1229               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1230               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1231             }
    1232             else if (pbsig->type == "1S") {
     1234              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1235              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1236              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1237              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1238            }
     1239            else if (pbSig.type == "1S") {
    12331240              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    12341241              phasebiasSat->NumberOfPhaseBiases += 1;
    12351242              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L1C_D;
    1236               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1237               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1238               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1239               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1240             }
    1241             else if (pbsig->type == "1L") {
     1243              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1244              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1245              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1246              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1247            }
     1248            else if (pbSig.type == "1L") {
    12421249              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    12431250              phasebiasSat->NumberOfPhaseBiases += 1;
    12441251              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L1C_P;
    1245               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1246               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1247               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1248               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1249             }
    1250             else if (pbsig->type == "1X") {
     1252              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1253              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1254              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1255              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1256            }
     1257            else if (pbSig.type == "1X") {
    12511258              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    12521259              phasebiasSat->NumberOfPhaseBiases += 1;
    12531260              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L1C_DP;
    1254               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1255               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1256               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1257               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1258             }
    1259             else if (pbsig->type == "2S") {
     1261              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1262              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1263              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1264              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1265            }
     1266            else if (pbSig.type == "2S") {
    12601267              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    12611268              phasebiasSat->NumberOfPhaseBiases += 1;
    12621269              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L2_CM;
    1263               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1264               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1265               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1266               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1267             }
    1268             else if (pbsig->type == "2L") {
     1270              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1271              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1272              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1273              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1274            }
     1275            else if (pbSig.type == "2L") {
    12691276              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    12701277              phasebiasSat->NumberOfPhaseBiases += 1;
    12711278              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L2_CL;
    1272               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1273               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1274               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1275               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1276             }
    1277             else if (pbsig->type == "2X") {
     1279              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1280              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1281              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1282              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1283            }
     1284            else if (pbSig.type == "2X") {
    12781285              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    12791286              phasebiasSat->NumberOfPhaseBiases += 1;
    12801287              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L2_CML;
    1281               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1282               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1283               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1284               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1285             }
    1286             else if (pbsig->type == "5I") {
     1288              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1289              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1290              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1291              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1292            }
     1293            else if (pbSig.type == "5I") {
    12871294              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    12881295              phasebiasSat->NumberOfPhaseBiases += 1;
    12891296              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L5_I;
    1290               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1291               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1292               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1293               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1294             }
    1295             else if (pbsig->type == "5Q") {
     1297              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1298              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1299              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1300              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1301            }
     1302            else if (pbSig.type == "5Q") {
    12961303              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    12971304              phasebiasSat->NumberOfPhaseBiases += 1;
    12981305              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L5_Q;
    1299               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1300               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1301               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1302               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1303             }
    1304             else if (pbsig->type == "5X") {
     1306              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1307              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1308              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1309              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1310            }
     1311            else if (pbSig.type == "5X") {
    13051312              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    13061313              phasebiasSat->NumberOfPhaseBiases += 1;
    13071314              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L5_IQ;
    1308               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1309               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1310               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1311               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1312             }
    1313             else if (pbsig->type == "6S") {
     1315              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1316              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1317              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1318              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1319            }
     1320            else if (pbSig.type == "6S") {
    13141321              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    13151322              phasebiasSat->NumberOfPhaseBiases += 1;
    13161323              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_LEX_S;
    1317               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1318               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1319               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1320               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1321             }
    1322             else if (pbsig->type == "6L") {
     1324              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1325              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1326              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1327              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1328            }
     1329            else if (pbSig.type == "6L") {
    13231330              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    13241331              phasebiasSat->NumberOfPhaseBiases += 1;
    13251332              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_LEX_L;
    1326               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1327               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1328               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1329               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1330             }
    1331             else if (pbsig->type == "6X") {
     1333              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1334              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1335              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1336              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1337            }
     1338            else if (pbSig.type == "6X") {
    13321339              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    13331340              phasebiasSat->NumberOfPhaseBiases += 1;
    13341341              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_LEX_SL;
    1335               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1336               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1337               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1338               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
     1342              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1343              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1344              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1345              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
    13391346            }
    13401347          }
    13411348        }
    13421349        if      (prn[0] == 'S') {
    1343           QMutableVectorIterator<phaseBiasSignal*> it(pbSig);
     1350          QListIterator<phaseBiasSignal> it(phaseBiasList);
    13441351          while (it.hasNext()) {
    1345             phaseBiasSignal *pbsig = it.next();
    1346             if      (pbsig->type == "1C") {
     1352            const phaseBiasSignal &pbSig = it.next();
     1353            if      (pbSig.type == "1C") {
    13471354              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    13481355              phasebiasSat->NumberOfPhaseBiases += 1;
    13491356              phasebiasSat->Biases[ii].Type = CODETYPE_SBAS_L1_CA;
    1350               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1351               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1352               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1353               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1354             }
    1355             else if (pbsig->type == "5I") {
     1357              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1358              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1359              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1360              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1361            }
     1362            else if (pbSig.type == "5I") {
    13561363              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    13571364              phasebiasSat->NumberOfPhaseBiases += 1;
    13581365              phasebiasSat->Biases[ii].Type = CODETYPE_SBAS_L5_I;
    1359               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1360               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1361               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1362               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1363             }
    1364             else if (pbsig->type == "5Q") {
     1366              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1367              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1368              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1369              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1370            }
     1371            else if (pbSig.type == "5Q") {
    13651372              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    13661373              phasebiasSat->NumberOfPhaseBiases += 1;
    13671374              phasebiasSat->Biases[ii].Type = CODETYPE_SBAS_L5_Q;
    1368               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1369               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1370               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1371               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1372             }
    1373             else if (pbsig->type == "5X") {
     1375              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1376              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1377              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1378              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1379            }
     1380            else if (pbSig.type == "5X") {
    13741381              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    13751382              phasebiasSat->NumberOfPhaseBiases += 1;
    13761383              phasebiasSat->Biases[ii].Type = CODETYPE_SBAS_L5_IQ;
    1377               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1378               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1379               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1380               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
     1384              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1385              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1386              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1387              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
    13811388            }
    13821389          }
    13831390        }
    13841391        if      (prn[0] == 'C') {
    1385           QMutableVectorIterator<phaseBiasSignal*> it(pbSig);
     1392          QListIterator<phaseBiasSignal> it(phaseBiasList);
    13861393          while (it.hasNext()) {
    1387             phaseBiasSignal *pbsig = it.next();
    1388             if      (pbsig->type == "2I") {
     1394            const phaseBiasSignal &pbSig = it.next();
     1395            if      (pbSig.type == "2I") {
    13891396              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    13901397              phasebiasSat->NumberOfPhaseBiases += 1;
    13911398              phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B1_I;
    1392               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1393               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1394               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1395               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1396             }
    1397             else if (pbsig->type == "2Q") {
     1399              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1400              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1401              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1402              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1403            }
     1404            else if (pbSig.type == "2Q") {
    13981405              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    13991406              phasebiasSat->NumberOfPhaseBiases += 1;
    14001407              phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B1_Q;
    1401               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1402               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1403               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1404               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1405             }
    1406             else if (pbsig->type == "2X") {
     1408              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1409              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1410              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1411              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1412            }
     1413            else if (pbSig.type == "2X") {
    14071414              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    14081415              phasebiasSat->NumberOfPhaseBiases += 1;
    14091416              phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B1_IQ;
    1410               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1411               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1412               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1413               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1414             }
    1415             else if (pbsig->type == "6I") {
     1417              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1418              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1419              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1420              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1421            }
     1422            else if (pbSig.type == "6I") {
    14161423              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    14171424              phasebiasSat->NumberOfPhaseBiases += 1;
    14181425              phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B2_Q;
    1419               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1420               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1421               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1422               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1423             }
    1424             else if (pbsig->type == "6Q") {
     1426              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1427              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1428              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1429              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1430            }
     1431            else if (pbSig.type == "6Q") {
    14251432              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    14261433              phasebiasSat->NumberOfPhaseBiases += 1;
    14271434              phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B2_I;
    1428               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1429               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1430               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1431               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1432             }
    1433             else if (pbsig->type == "6X") {
     1435              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1436              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1437              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1438              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1439            }
     1440            else if (pbSig.type == "6X") {
    14341441              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    14351442              phasebiasSat->NumberOfPhaseBiases += 1;
    14361443              phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B2_IQ;
    1437               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1438               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1439               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1440               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1441             }
    1442             else if (pbsig->type == "7I") {
     1444              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1445              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1446              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1447              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1448            }
     1449            else if (pbSig.type == "7I") {
    14431450              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    14441451              phasebiasSat->NumberOfPhaseBiases += 1;
    14451452              phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B3_Q;
    1446               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1447               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1448               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1449               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1450             }
    1451             else if (pbsig->type == "7Q") {
     1453              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1454              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1455              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1456              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1457            }
     1458            else if (pbSig.type == "7Q") {
    14521459              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    14531460              phasebiasSat->NumberOfPhaseBiases += 1;
    14541461              phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B3_I;
    1455               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1456               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1457               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1458               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
    1459             }
    1460             else if (pbsig->type == "7X") {
     1462              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1463              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1464              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1465              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
     1466            }
     1467            else if (pbSig.type == "7X") {
    14611468              int ii = phasebiasSat->NumberOfPhaseBiases; if (ii >= CLOCKORBIT_NUMBIAS) break;
    14621469              phasebiasSat->NumberOfPhaseBiases += 1;
    14631470              phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B3_IQ;
    1464               phasebiasSat->Biases[ii].Bias = pbsig->bias;
    1465               phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbsig->intInd;
    1466               phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbsig->WLInd;
    1467               phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbsig->discCount;
     1471              phasebiasSat->Biases[ii].Bias = pbSig.bias;
     1472              phasebiasSat->Biases[ii].SignalIntegerIndicator          = pbSig.intInd;
     1473              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.WLInd;
     1474              phasebiasSat->Biases[ii].SignalDiscontinuityCounter      = pbSig.discCount;
    14681475            }
    14691476          }
  • trunk/BNC/src/upload/bncrtnetuploadcaster.h

    r6850 r6851  
    7474  double yA;
    7575  double yR;
    76   unsigned int dispInd;
    77   unsigned int MWInd;
    7876};
    7977
Note: See TracChangeset for help on using the changeset viewer.