Changeset 10587 in ntrip for trunk/BNC/src/rinex/rnxnavfile.cpp


Ignore:
Timestamp:
Dec 10, 2024, 3:57:21 PM (3 days ago)
Author:
stuerze
Message:

RINEX version 4.02 updates

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/rinex/rnxnavfile.cpp

    r10577 r10587  
    149149////////////////////////////////////////////////////////////////////////////
    150150void t_rnxNavFile::read(QTextStream* stream) {
    151   QString ephType;
    152151
    153152  while (stream->status() == QTextStream::Ok && !stream->atEnd()) {
     
    157156      continue;
    158157    }
    159 
     158    QString navType;
    160159    QStringList hlp = line.split(QRegExp("\\s+"), Qt::SkipEmptyParts);
    161     QString key, prn, navSubType;
     160    QString prn;
    162161    char sys;
    163 
    164162    QString firstStr = hlp.at(0);
    165     if      (version() >= 3.0 &&  firstStr != ">") {
     163
     164    // RINEX version 3
     165    if      (version() >= 3.0 &&
     166             version() <  4.0 &&  firstStr != ">") {
    166167      prn = firstStr;
    167168      sys = prn[0].toLatin1();
    168     }
     169      navType = "";
     170    }
     171    // RINEX version 4
    169172    else if (version() >= 4.0 && firstStr == ">") {
    170       key = hlp.at(1);
     173      QString key = hlp.at(1);
    171174      prn = hlp.at(2);
    172175      sys = prn[0].toLatin1();
    173       ephType = hlp.at(3);
     176      navType = hlp.at(3);
    174177
    175178      // ALL Non-EPH messages are currently ignored
     
    194197                 sys == 'J' || sys == 'I') {
    195198          lines2skip = 3;
    196           if ((sys == 'I' && ephType == "L1NV") || // I: KLOB, NEQN
    197               (sys == 'J' && ephType == "CNVX")) { // J: WIDE, JAPN
    198             navSubType = hlp.at(4);
     199          if ((sys == 'I' && navType == "L1NV") || // I: KLOB, NEQN
     200              (sys == 'J' && navType == "CNVX")) { // J: WIDE, JAPN
     201            QString navSubType = hlp.at(4);
    199202            if      (navSubType == "KLOB") {
    200203              lines2skip += 1;
     
    213216      continue;
    214217    }
     218    // RINEX version 2
    215219    else {
    216220      if (glonass()) {
     
    226230    lines << line;
    227231    if      (sys == 'G') {
    228       for (int ii = 1; ii < 8; ii++) {
     232      int nLines = 8;
     233      if (navType == "CNAV") {
     234        nLines += 1;
     235      }
     236      if (navType == "CNV2") {
     237        nLines += 2;
     238      }
     239      for (int ii = 1; ii < nLines; ii++) {
    229240        lines << stream->readLine();
    230241      }
     
    232243    }
    233244    else if (sys == 'R') {
    234       int num = 4;
     245      int nLines = 4;
    235246      if (version() >= 3.05) {
    236         num += 1;
    237       }
    238       for (int ii = 1; ii < num; ii++) {
     247        nLines += 1;
     248      }
     249      for (int ii = 1; ii < nLines; ii++) {
    239250        lines << stream->readLine();
    240251      }
     
    248259    }
    249260    else if (sys == 'J') {
    250       for (int ii = 1; ii < 8; ii++) {
     261      int nLines = 8;
     262      if (navType == "CNAV") {
     263        nLines += 1;
     264      }
     265      if (navType == "CNV2") {
     266        nLines += 2;
     267      }
     268      for (int ii = 1; ii < nLines; ii++) {
    251269        lines << stream->readLine();
    252270      }
     
    260278    }
    261279    else if (sys == 'C') {
    262       for (int ii = 1; ii < 8; ii++) {
     280      int nLines = 8;
     281      if (navType == "CNV1" ||
     282          navType == "CNV2") {
     283        nLines += 2;
     284      }
     285      if (navType == "CNV3") {
     286        nLines += 1;
     287      }
     288      for (int ii = 1; ii < nLines; ii++) {
    263289        lines << stream->readLine();
    264290      }
     
    266292    }
    267293    else if (sys == 'I') {
    268       for (int ii = 1; ii < 8; ii++) {
     294      int nLines = 8;
     295      if (navType == "L1NV") {
     296        nLines += 1;
     297      }
     298      for (int ii = 1; ii < nLines; ii++) {
    269299        lines << stream->readLine();
    270300      }
     
    272302    }
    273303
    274     if (version() >= 4.0 && key == "EPH") {
    275       if (eph->setEphType(ephType) != success) {
    276         delete eph;
    277         continue;
    278       }
    279     }
    280 
    281304    if (eph) {
     305      eph->setType(navType);
    282306      _ephs.push_back(eph);
    283307    }
     308
    284309  }
    285310}
     
    363388  else {
    364389    QString fmt;
    365     t_eph::e_type sys = satSystem();
     390    t_eph::e_system sys = satSystem();
    366391    switch(sys) {
    367392      case t_eph::GPS:
Note: See TracChangeset for help on using the changeset viewer.