Changeset 9760 in ntrip for trunk/BNC


Ignore:
Timestamp:
Jun 9, 2022, 5:10:10 PM (2 years ago)
Author:
stuerze
Message:

initial changes to consider RINEX Version 4 in future

Location:
trunk/BNC/src
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/bnccore.cpp

    r9675 r9760  
    288288  if (_rinexVers == 0) {
    289289
    290     if ( Qt::CheckState(settings.value("ephV2").toInt()) == Qt::Checked) {
    291       _rinexVers = 2;
    292     }
    293     else {
    294       _rinexVers = 3;
    295     }
     290    _rinexVers = settings.value("ephVersion").toInt();
    296291
    297292    _ephPath = settings.value("ephPath").toString();
     
    313308    QString ephFileNameGPS = _ephPath + "BRDC";
    314309
    315     bool ephV2 = (_rinexVers == 2)? true : false;
    316 
    317310    QString hlpStr = bncRinex::nextEpochStr(datTim,
    318                          settings.value("ephIntr").toString(), ephV2);
    319 
    320     if (_rinexVers == 3) {
     311                         settings.value("ephIntr").toString(), _rinexVers);
     312
     313    if (_rinexVers > 2) {
    321314      QString country = "WRD"; // WORLD
    322315      QString monNum = "0";
     
    359352    _ephStreamGPS->setDevice(_ephFileGPS);
    360353
    361     if      (_rinexVers == 3) {
     354    if      (_rinexVers > 2) {
    362355      _ephFileGlonass   = _ephFileGPS;
    363356      _ephStreamGlonass = _ephStreamGPS;
     
    367360      _ephStreamSBAS    = _ephStreamGPS;
    368361    }
    369     else if (_rinexVers == 2) {
     362    else {
    370363      QString ephFileNameGlonass = _ephPath + "BRDC" +
    371364          QString("%1").arg(datTim.date().dayOfYear(), 3, 10, QChar('0')) +
     
    388381    // Header - RINEX Version 3
    389382    // ------------------------
    390     if (_rinexVers == 3) {
     383    if (_rinexVers > 2) {
    391384      if ( ! (appendFlagGPS & QIODevice::Append)) {
    392385        QString line = QString().asprintf("%9.2f%11sN: GNSS NAV DATA    M: Mixed%12sRINEX VERSION / TYPE\n",
     
    415408    // Headers - RINEX Version 2
    416409    // -------------------------
    417     else if (_rinexVers == 2) {
     410    else {
    418411      if (! (appendFlagGPS & QIODevice::Append)) {
    419412        QString line = QString().asprintf("%9.2f%11sN: GPS NAV DATA%25sRINEX VERSION / TYPE\n",
     
    470463  QString strV2 = eph.toString(defaultRnxNavVersion2);
    471464  QString strV3 = eph.toString(defaultRnxNavVersion3);
     465  QString strV4 = eph.toString(defaultRnxNavVersion4);
    472466
    473467  if     (_rinexVers == 2 && eph.type() == t_eph::GLONASS) {
    474     printOutputEph(printFile, _ephStreamGlonass, strV2, strV3);
     468    printOutputEph(printFile, _ephStreamGlonass, strV2, strV3, strV4);
    475469  }
    476470  else if(_rinexVers == 2 && eph.type() == t_eph::GPS)  {
    477     printOutputEph(printFile, _ephStreamGPS, strV2, strV3);
     471    printOutputEph(printFile, _ephStreamGPS, strV2, strV3, strV4);
    478472  }
    479473  else if (_rinexVers == 3) {
    480     printOutputEph(printFile, _ephStreamGPS, strV2, strV3);
     474    printOutputEph(printFile, _ephStreamGPS, strV2, strV3, strV4);
    481475  }
    482476}
     
    485479////////////////////////////////////////////////////////////////////////////
    486480void t_bncCore::printOutputEph(bool printFile, QTextStream* stream,
    487                                const QString& strV2, const QString& strV3) {
     481                               const QString& strV2, const QString& strV3,
     482                               const QString& strV4) {
    488483
    489484  // Output into file
    490485  // ----------------
    491486  if (printFile && stream) {
    492     if (_rinexVers == 2) {
     487    if     (_rinexVers == 2) {
    493488      *stream << strV2.toLatin1();
    494489    }
    495     else {
     490    else if (_rinexVers == 3) {
    496491      *stream << strV3.toLatin1();
     492    }
     493    else if (_rinexVers == 4) {
     494      *stream << strV4.toLatin1();
    497495    }
    498496    stream->flush();
  • trunk/BNC/src/bnccore.h

    r9739 r9760  
    117117  void  printEph(const t_eph& eph, bool printFile);
    118118  void  printOutputEph(bool printFile, QTextStream* stream,
    119                        const QString& strV2, const QString& strV3);
     119                       const QString& strV2, const QString& strV3,
     120                       const QString& strV4);
    120121  void  messagePrivate(const QByteArray& msg);
    121122
  • trunk/BNC/src/bncmain.cpp

    r9739 r9760  
    116116      "   rnxScript      {File upload script, full path [character string]}\n"
    117117      "   rnxV2Priority  {Priority of signal attributes [character string, list separated by blank character, example: G:12&PWCSLXYN G:5&IQX C:IQX]}\n"
    118       "   rnxV2          {Produce version 2 file contents [integer number: 0=no,2=yes]}\n"
     118      "   rnxVersion     {Specifies the RINEX version of the file contents [integer number: 2|3|4 ]}\n"
    119119      "\n"
    120120      "RINEX Ephemeris Panel keys:\n"
     
    122122      "   ephIntr        {File interval [character string: 1 min|2 min|5 min|10 min|15 min|30 min|1 hour|1 day]}\n"
    123123      "   ephOutPort     {Output port [integer number]}\n"
    124       "   ephV2          {Produce version 2 file contents [integer number: 0=no,2=yes]}\n"
     124      "   ephVersion     {Specifies the RINEX version of the file contents [integer number: 2|3|4]}\n"
    125125      "\n"
    126126      "RINEX Editing and QC Panel keys:\n"
  • trunk/BNC/src/bncrinex.cpp

    r9184 r9760  
    116116  _writeRinexFileOnlyWithSkl = settings.value("rnxOnlyWithSKL").toBool();
    117117
    118   _rnxV2 = (Qt::CheckState(settings.value("rnxV2").toInt()) == Qt::Checked) ? true : false;
     118  _rnxVersion = settings.value("rnxVersion").toInt();
    119119}
    120120
     
    250250////////////////////////////////////////////////////////////////////////////
    251251QString bncRinex::nextEpochStr(const QDateTime& datTim,
    252                                const QString& intStr, bool rnxV2,
     252                               const QString& intStr, int rnxVersion,
    253253                               QDateTime* nextEpoch) {
    254254
     
    262262  if ( indHlp != -1) {
    263263    int step = intStr.left(indHlp-1).toInt();
    264     if (!rnxV2) {
     264    if (rnxVersion > 2) {
    265265      epoStr +=  QString("%1").arg(datTim.time().hour(), 2, 10, QChar('0')); // H
    266266    } else {
     
    289289      }
    290290    }
    291     if (!rnxV2) {
     291    if (rnxVersion > 2) {
    292292      epoStr += QString("_%1M").arg(step, 2, 10, QChar('0'));                // period
    293293    }
     
    295295  else if (intStr == "1 hour") {
    296296    int step = intStr.left(indHlp-1).toInt();
    297     if (!rnxV2) {
     297    if (rnxVersion > 2) {
    298298      epoStr += QString("%1").arg(datTim.time().hour(), 2, 10, QChar('0'));  // H
    299299      epoStr += QString("%1").arg(0, 2, 10, QChar('0'));                     // M
     
    313313  else {
    314314    int step = intStr.left(indHlp-1).toInt();
    315     if (!rnxV2) {
     315    if (rnxVersion > 2) {
    316316      epoStr += QString("%1").arg(0, 2, 10, QChar('0'));                    // H
    317317      epoStr += QString("%1").arg(0, 2, 10, QChar('0'));                    // M
     
    344344
    345345  QString hlpStr = nextEpochStr(datTim, settings.value("rnxIntr").toString(),
    346                                 _rnxV2, &_nextCloseEpoch);
     346                                _rnxVersion, &_nextCloseEpoch);
    347347
    348348  int n = _statID.size();
     
    390390  _localSklNameAlternative = sklPath + ID.toLower() + distStr + "." + sklExt;
    391391
    392   if (!_rnxV2) {
     392  if (_rnxVersion > 2) {
    393393    QString country;
    394394    QString monNum = "0";
     
    438438  // Set RINEX Version
    439439  // -----------------
    440   int intHeaderVers = (Qt::CheckState(settings.value("rnxV2").toInt()) == Qt::Checked ? 2 : 3);
     440  int intHeaderVers = settings.value("rnxVersion").toInt();
    441441
    442442  // Open the Output File
  • trunk/BNC/src/bncrinex.h

    r9158 r9760  
    4747   static QString nextEpochStr(const QDateTime& datTim,
    4848                               const QString& intStr,
    49                                bool rnxV2,
     49                               int rnxVersion,
    5050                               QDateTime* nextEpoch = 0);
    5151   static std::string asciiSatLine(const t_satObs& obs, bool outLockTime);
     
    7171   QString         _localSklNameAlternative;
    7272   bool            _writeRinexFileOnlyWithSkl;
    73    bool            _rnxV2;
     73   int             _rnxVersion;
    7474   QByteArray      _latitude;
    7575   QByteArray      _longitude;
  • trunk/BNC/src/bncsettings.cpp

    r9652 r9760  
    9292    setValue_p("rnxV2Priority",       "");
    9393    setValue_p("rnxScript",           "");
    94     setValue_p("rnxV2",              "0");
     94    setValue_p("rnxVersion",         "3");
    9595    // RINEX Ephemeris
    9696    setValue_p("ephPath",             "");
    9797    setValue_p("ephIntr",        "1 day");
    9898    setValue_p("ephOutPort",          "");
    99     setValue_p("ephV2",              "0");
     99    setValue_p("ephVersion",         "3");
    100100    // Reqc
    101101    setValue_p("reqcAction",          "");
  • trunk/BNC/src/bncwindow.cpp

    r9702 r9760  
    210210  _onTheFlyComboBox->setEditable(false);
    211211  _onTheFlyComboBox->addItems(QString("no,1 day,1 hour,5 min,1 min").split(","));
    212   int ii = _onTheFlyComboBox->findText(settings.value("onTheFlyInterval").toString());
    213   if (ii != -1) {
    214     _onTheFlyComboBox->setCurrentIndex(ii);
     212  int go = _onTheFlyComboBox->findText(settings.value("onTheFlyInterval").toString());
     213  if (go != -1) {
     214    _onTheFlyComboBox->setCurrentIndex(go);
    215215  }
    216216  _autoStartCheckBox  = new QCheckBox();
     
    220220  // RINEX Observations Options
    221221  // --------------------------
    222   _rnxPathLineEdit    = new QLineEdit(settings.value("rnxPath").toString());
    223   _rnxIntrComboBox    = new QComboBox();
     222  _rnxPathLineEdit = new QLineEdit(settings.value("rnxPath").toString());
     223  _rnxIntrComboBox = new QComboBox();
    224224  _rnxIntrComboBox->setEditable(false);
    225225  _rnxIntrComboBox->addItems(QString("1 min,2 min,5 min,10 min,15 min,30 min,1 hour,1 day").split(","));
    226   ii = _rnxIntrComboBox->findText(settings.value("rnxIntr").toString());
     226  int ii = _rnxIntrComboBox->findText(settings.value("rnxIntr").toString());
    227227  if (ii != -1) {
    228228    _rnxIntrComboBox->setCurrentIndex(ii);
    229229  }
    230   _rnxSamplComboBox    = new QComboBox();
     230  _rnxSamplComboBox = new QComboBox();
    231231  _rnxSamplComboBox->setEditable(false);
    232232  _rnxSamplComboBox->addItems(QString("0.1 sec,1 sec,5 sec,10 sec,15 sec,30 sec,60 sec").split(","));
     
    240240  _rnxSkelExtComboBox->setEditable(false);
    241241  _rnxSkelExtComboBox->addItems(QString("skl, SKL").split(","));
    242   int il = _rnxSkelExtComboBox->findText(settings.value("rnxSkel").toString());
     242  int ik = _rnxSkelExtComboBox->findText(settings.value("rnxSkel").toString());
     243  if (ik != -1) {
     244    _rnxSkelExtComboBox->setCurrentIndex(ik);
     245  }
     246  _rnxSkelPathLineEdit = new QLineEdit(settings.value("rnxSkelPath").toString());
     247  _rnxScrpLineEdit = new QLineEdit(settings.value("rnxScript").toString());
     248  _rnxVersComboBox = new QComboBox();
     249  _rnxVersComboBox->setEditable(false);
     250  _rnxVersComboBox->addItems(QString("4,3,2").split(","));
     251  _rnxVersComboBox->setMaximumWidth(7*ww);
     252  int il = _rnxVersComboBox->findText(settings.value("rnxVersion").toString());
    243253  if (il != -1) {
    244     _rnxSkelExtComboBox->setCurrentIndex(il);
    245   }
    246   _rnxSkelPathLineEdit  = new QLineEdit(settings.value("rnxSkelPath").toString());
    247   _rnxScrpLineEdit    = new QLineEdit(settings.value("rnxScript").toString());
    248   _rnxV2CheckBox      = new QCheckBox();
    249   _rnxV2CheckBox->setCheckState(Qt::CheckState(settings.value("rnxV2").toInt()));
     254    _rnxVersComboBox->setCurrentIndex(il);
     255  }
    250256  QString hlp = settings.value("rnxV2Priority").toString();
    251257  if (hlp.isEmpty()) {
     
    256262  connect(_rnxPathLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(slotBncTextChanged()));
    257263  connect(_rnxSkelPathLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(slotBncTextChanged()));
    258   connect(_rnxV2CheckBox, SIGNAL(stateChanged(int)), this, SLOT(slotBncTextChanged()));
     264  connect(_rnxVersComboBox, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(slotBncTextChanged()));
    259265
    260266  // RINEX Ephemeris Options
    261267  // -----------------------
    262   _ephPathLineEdit    = new QLineEdit(settings.value("ephPath").toString());
    263   _ephIntrComboBox    = new QComboBox();
     268  _ephPathLineEdit = new QLineEdit(settings.value("ephPath").toString());
     269  _ephIntrComboBox = new QComboBox();
    264270  _ephIntrComboBox->setEditable(false);
    265271  _ephIntrComboBox->addItems(QString("1 min,2 min,5 min,10 min,15 min,30 min,1 hour,1 day").split(","));
    266   int jj = _ephIntrComboBox->findText(settings.value("ephIntr").toString());
    267   if (jj != -1) {
    268     _ephIntrComboBox->setCurrentIndex(jj);
    269   }
    270   _ephOutPortLineEdit    = new QLineEdit(settings.value("ephOutPort").toString());
    271   _ephV2CheckBox = new QCheckBox();
    272   _ephV2CheckBox->setCheckState(Qt::CheckState(settings.value("ephV2").toInt()));
     272  int ji = _ephIntrComboBox->findText(settings.value("ephIntr").toString());
     273  if (ji != -1) {
     274    _ephIntrComboBox->setCurrentIndex(ji);
     275  }
     276  _ephOutPortLineEdit = new QLineEdit(settings.value("ephOutPort").toString());
     277  _ephVersComboBox = new QComboBox();
     278  _ephVersComboBox->setEditable(false);
     279  _ephVersComboBox->addItems(QString("4,3,2").split(","));
     280  _ephVersComboBox->setMaximumWidth(7*ww);
     281  int jk = _ephVersComboBox->findText(settings.value("ephVersion").toString());
     282  if (jk != -1) {
     283    _ephVersComboBox->setCurrentIndex(jk);
     284  }
    273285
    274286  connect(_ephOutPortLineEdit, SIGNAL(textChanged(const QString &)),
     
    284296  _corrIntrComboBox->setEditable(false);
    285297  _corrIntrComboBox->addItems(QString("1 min,2 min,5 min,10 min,15 min,30 min,1 hour,1 day").split(","));
    286   int mm = _corrIntrComboBox->findText(settings.value("corrIntr").toString());
    287   if (mm != -1) {
    288     _corrIntrComboBox->setCurrentIndex(mm);
     298  int bi = _corrIntrComboBox->findText(settings.value("corrIntr").toString());
     299  if (bi != -1) {
     300    _corrIntrComboBox->setCurrentIndex(bi);
    289301  }
    290302  _corrPortLineEdit    = new QLineEdit(settings.value("corrPort").toString());
     
    298310  // Feed Engine Options
    299311  // -------------------
    300   _outPortLineEdit    = new QLineEdit(settings.value("outPort").toString());
    301   _outWaitSpinBox   = new QSpinBox();
     312  _outPortLineEdit = new QLineEdit(settings.value("outPort").toString());
     313  _outWaitSpinBox = new QSpinBox();
    302314  _outWaitSpinBox->setMinimum(0);
    303315  _outWaitSpinBox->setMaximum(30);
     
    305317  _outWaitSpinBox->setSuffix(" sec");
    306318  _outWaitSpinBox->setValue(settings.value("outWait").toInt());
    307   _outSamplComboBox    = new QComboBox();
     319  _outSamplComboBox = new QComboBox();
    308320  _outSamplComboBox->addItems(QString("0.1 sec,1 sec,5 sec,10 sec,15 sec,30 sec,60 sec").split(","));
    309321  int nn = _outSamplComboBox->findText(settings.value("outSampl").toString());
     
    311323      _outSamplComboBox->setCurrentIndex(nn);
    312324    }
    313   _outFileLineEdit    = new QLineEdit(settings.value("outFile").toString());
    314   _outUPortLineEdit   = new QLineEdit(settings.value("outUPort").toString());
     325  _outFileLineEdit = new QLineEdit(settings.value("outFile").toString());
     326  _outUPortLineEdit = new QLineEdit(settings.value("outUPort").toString());
    315327  _outLockTimeCheckBox = new QCheckBox();
    316328  _outLockTimeCheckBox->setCheckState(Qt::CheckState(settings.value("outLockTime").toInt()));
     
    497509  _cmbMethodComboBox->setEditable(false);
    498510  _cmbMethodComboBox->addItems(QString("Kalman Filter,Single-Epoch").split(","));
    499   int im = _cmbMethodComboBox->findText(settings.value("cmbMethod").toString());
    500   if (im != -1) {
    501     _cmbMethodComboBox->setCurrentIndex(im);
     511  int cm = _cmbMethodComboBox->findText(settings.value("cmbMethod").toString());
     512  if (cm != -1) {
     513    _cmbMethodComboBox->setCurrentIndex(cm);
    502514  }
    503515
     
    802814  oLayout->addWidget(new QLabel("Script (full path)"),             5, 0);
    803815  oLayout->addWidget(_rnxScrpLineEdit,                             5, 1, 1, 15);
    804   oLayout->addWidget(new QLabel("Version 2"),                      6, 0);
    805   oLayout->addWidget(_rnxV2CheckBox,                               6, 1);
     816  oLayout->addWidget(new QLabel("Version"),                        6, 0);
     817  oLayout->addWidget(_rnxVersComboBox,                             6, 1);
    806818  oLayout->addWidget(new QLabel("Signal priority"),                6, 2, Qt::AlignRight);
    807819  oLayout->addWidget(_rnxV2Priority,                               6, 3, 1, 13);
     
    825837  eLayout->addWidget(new QLabel("Port"),                          3, 0);
    826838  eLayout->addWidget(_ephOutPortLineEdit,                         3, 1);
    827   eLayout->addWidget(new QLabel("Version 2"),                     4, 0);
    828   eLayout->addWidget(_ephV2CheckBox,                              4, 1);
     839  eLayout->addWidget(new QLabel("Version"),                       4, 0);
     840  eLayout->addWidget(_ephVersComboBox,                            4, 1);
    829841  eLayout->setRowStretch(5, 999);
    830842
     
    11311143  _reqcActionComboBox->setEditable(false);
    11321144  _reqcActionComboBox->addItems(QString(",Edit/Concatenate,Analyze").split(","));
    1133   int ik = _reqcActionComboBox->findText(settings.value("reqcAction").toString());
    1134   if (ik != -1) {
    1135     _reqcActionComboBox->setCurrentIndex(ik);
     1145  int ip = _reqcActionComboBox->findText(settings.value("reqcAction").toString());
     1146  if (ip != -1) {
     1147    _reqcActionComboBox->setCurrentIndex(ip);
    11361148  }
    11371149  connect(_reqcActionComboBox, SIGNAL(currentIndexChanged(const QString &)),
     
    13791391  _rnxScrpLineEdit->setWhatsThis(tr("<p>Whenever a RINEX Observation file is finally saved, you may want to compress, copy or upload it immediately, for example via FTP. BNC allows you to execute a script/batch file to carry out such operation.</p><p>Specify the full path of a script or batch file. BNC will pass the full RINEX Observation file path to the script as command line parameter (%1 on Windows systems, $1 on Unix/Linux/Mac systems). <i>[key: rnxScript]</i></p>"));
    13801392  _rnxV2Priority->setWhatsThis(tr("<p>Specify a priority list of characters defining signal attributes as defined in RINEX Version 3. Priorities will be used to map observations with RINEX Version 3 attributes from incoming streams to Version 2. The underscore character '_' stands for undefined attributes. A question mark '?' can be used as wildcard which represents any one character.</p><p>Signal priorities can be specified as equal for all systems, as system specific or as system and freq. specific. For example: </li><ul><li>'CWPX_?' (General signal priorities valid for all GNSS) </li><li>'I:ABCX' (System specific signal priorities for IRNSS) </li><li>'G:12&PWCSLX G:5&IQX R:12&PC R:3&IQX' (System and frequency specific signal priorities) </li></ul>Default is the following priority list 'G:12&PWCSLX G:5&IQX R:12&PC R:3&IQX R:46&ABX E:16&BCXZ E:578&IQX J:1&SLXCZ J:26&SLX J:5&IQX C:267&IQX C:128&DPX C:7&DPZ I:ABCX S:1&C S:5&IQX'. <i>[key: rnxV2Priority]</i></p>"));
    1381   _rnxV2CheckBox->setWhatsThis(tr("<p>The default format for RINEX Observation files is RINEX Version 3.</p><p>Select 'Version 2' if you want to save observations in RINEX Version 2 format. <i>[key: rnxV2]</i></p>"));
     1393  _rnxVersComboBox->setWhatsThis(tr("<p>Select the format for RINEX Observation files. <i>[key: rnxVersion]</i></p>"));
    13821394
    13831395  // WhatsThis, RINEX Ephemeris
     
    13861398  _ephIntrComboBox->setWhatsThis(tr("<p>Select the length of the RINEX Navigation file. <i>[key: ephIntr]</i></p>"));
    13871399  _ephOutPortLineEdit->setWhatsThis(tr("<p>BNC can produce ephemeris data in RINEX Navigation ASCII format on your local host through an IP port.</p><p>Specify a port number here to activate this function. <i>[key: ephOutPort]</i></p>"));
    1388   _ephV2CheckBox->setWhatsThis(tr("<p>The default format for output of RINEX Navigation data containing Broadcast Ephemeris is RINEX Version 3.</p><p>Select 'Version 2' if you want to output ephemeris in RINEX Version 2 format. <i>[key: ephV2]</i></p>"));
     1400  _ephVersComboBox->setWhatsThis(tr("<p>Select the format for RINEX Navigation files. <i>[key: ephVersion]</i></p>"));
    13891401
    13901402  // WhatsThis, RINEX Editing & QC
     
    15931605  delete _rnxFileCheckBox;
    15941606  delete _rnxScrpLineEdit;
    1595   delete _rnxV2CheckBox;
     1607  delete _rnxVersComboBox;
    15961608  delete _rnxV2Priority;
    15971609  delete _ephPathLineEdit;
    15981610  delete _ephIntrComboBox;
    15991611  delete _ephOutPortLineEdit;
    1600   delete _ephV2CheckBox;
     1612  delete _ephVersComboBox;
    16011613  delete _corrPathLineEdit;
    16021614  delete _corrIntrComboBox;
     
    20582070  settings.setValue("rnxScript",    _rnxScrpLineEdit->text());
    20592071  settings.setValue("rnxV2Priority",_rnxV2Priority->text());
    2060   settings.setValue("rnxV2",        _rnxV2CheckBox->checkState());
     2072  settings.setValue("rnxVersion",   _rnxVersComboBox->currentText());
    20612073// RINEX Ephemeris
    20622074  settings.setValue("ephPath",       _ephPathLineEdit->text());
    20632075  settings.setValue("ephIntr",       _ephIntrComboBox->currentText());
    20642076  settings.setValue("ephOutPort",    _ephOutPortLineEdit->text());
    2065   settings.setValue("ephV2",         _ephV2CheckBox->checkState());
     2077  settings.setValue("ephVersion",    _ephVersComboBox->currentText());
    20662078// Broadcast Corrections
    20672079  settings.setValue("corrPath",    _corrPathLineEdit->text());
     
    25552567    enableWidget(enable, _rnxScrpLineEdit);
    25562568    enableWidget(enable, _rnxV2Priority);
    2557     enableWidget(enable, _rnxV2CheckBox);
     2569    enableWidget(enable, _rnxVersComboBox);
    25582570
    25592571    bool enable1 = true;
    2560     enable1 = _rnxV2CheckBox->isChecked();
     2572    enable1 = _rnxVersComboBox->currentText() == "2";
    25612573    if (enable && enable1) {
    25622574      enableWidget(true, _rnxV2Priority);
     
    25692581  // RINEX Observations, Signal Priority
    25702582  // -----------------------------------
    2571   if (sender() == 0 || sender() == _rnxV2CheckBox) {
     2583  if (sender() == 0 || sender() == _rnxVersComboBox) {
    25722584    if (!_rnxPathLineEdit->text().isEmpty()) {
    25732585      enableWidget(enable, _rnxIntrComboBox);
    2574       enable = _rnxV2CheckBox->isChecked();
     2586      enable = _rnxVersComboBox->currentText() == "2";
    25752587      enableWidget(enable, _rnxV2Priority);
    25762588    }
     
    25822594    enable = !_ephPathLineEdit->text().isEmpty() || !_ephOutPortLineEdit->text().isEmpty();
    25832595    enableWidget(enable, _ephIntrComboBox);
    2584     enableWidget(enable, _ephV2CheckBox);
     2596    enableWidget(enable, _ephVersComboBox);
    25852597  }
    25862598
  • trunk/BNC/src/bncwindow.h

    r9635 r9760  
    163163    QLineEdit*     _sp3CompLogLineEdit;
    164164
    165     QCheckBox* _rnxV2CheckBox;
     165    QComboBox* _rnxVersComboBox;
    166166    QLineEdit* _rnxV2Priority;
    167     QCheckBox* _ephV2CheckBox;
     167    QComboBox* _ephVersComboBox;
    168168    QCheckBox* _rnxFileCheckBox;
    169169    QLineEdit* _rnxScrpLineEdit;
     
    173173    QComboBox* _ephIntrComboBox;
    174174    QComboBox* _corrIntrComboBox;
    175     QComboBox*  _rnxSamplComboBox;
    176     QComboBox*  _rnxSkelExtComboBox;
    177     QComboBox*  _outSamplComboBox;
     175    QComboBox* _rnxSamplComboBox;
     176    QComboBox* _rnxSkelExtComboBox;
     177    QComboBox* _outSamplComboBox;
    178178    QCheckBox* _rnxAppendCheckBox;
    179179    QCheckBox* _autoStartCheckBox;
  • trunk/BNC/src/reqcdlg.cpp

    r9158 r9760  
    9595
    9696  _reqcRnxVersion->setEditable(false);
    97   _reqcRnxVersion->addItems(QString("3,2").split(","));
     97  _reqcRnxVersion->addItems(QString("4,3,2").split(","));
    9898  _reqcRnxVersion->setMaximumWidth(7*ww);
    9999
  • trunk/BNC/src/rinex/rnxnavfile.h

    r9366 r9760  
    3838#define defaultRnxNavVersion2 2.11
    3939#define defaultRnxNavVersion3 3.05
     40#define defaultRnxNavVersion4 4.00
    4041
    4142class t_rnxNavFile {
  • trunk/BNC/src/rinex/rnxobsfile.cpp

    r9640 r9760  
    164164      in >> _antBSG[0] >> _antBSG[1] >> _antBSG[2];
    165165    }
     166    else if (key == "DOI") {
     167      _digitalObjectId = line.mid(0,60).trimmed();
     168    }
     169    else if (key == "LICENSE OF USE") {
     170      _licenseOfUse.append(line.mid(0,60).trimmed());
     171    }
     172    else if (key == "STATION INFORMATION") {
     173     _stationInformation.append(line.mid(0,60).trimmed());
     174    }
    166175    else if (key == "# / TYPES OF OBSERV") {
    167176      if (_version == 0.0) {
    168         _version = defaultRnxObsVersion2;
     177        _version = defaultRnxObsVersion3;
    169178      }
    170179      QTextStream* in = new QTextStream(value.toLatin1(), QIODevice::ReadOnly);
     
    306315  _markerName = markerName;
    307316
    308   if (version <= 2) {
     317  if (version == 2) {
    309318    _version = defaultRnxObsVersion2;
    310319  }
    311   else {
     320  else if (version == 3) {
    312321    _version = defaultRnxObsVersion3;
     322  }
     323  else if (version == 4) {
     324    _version = defaultRnxObsVersion4;
    313325  }
    314326
     
    389401                         const QStringList* gloSlots) {
    390402
    391   if (version <= 2) {
     403  if (version == 2) {
    392404    _version = defaultRnxObsVersion2;
    393405  }
    394   else {
     406  else if (version == 3) {
    395407    _version = defaultRnxObsVersion3;
     408  }
     409  else if (version == 4) {
     410    _version = defaultRnxObsVersion4;
    396411  }
    397412  _interval        = header._interval;
     
    914929      return t_rnxObsFile::type3to2(sys, origType);
    915930    }
    916     else if (int(version) == 3) {
     931    else {
    917932      return t_rnxObsFile::type2to3(sys, origType);
    918933    }
  • trunk/BNC/src/rinex/rnxobsfile.h

    r9396 r9760  
    4040#define defaultRnxObsVersion2 2.11
    4141#define defaultRnxObsVersion3 3.05
     42#define defaultRnxObsVersion4 4.00
    4243
    4344class t_rnxObsHeader {
     
    8081  QString         _markerName;
    8182  QString         _markerNumber;
     83
    8284  QString         _markerType;
    8385  QString         _observer;
     
    8688  QString         _receiverType;
    8789  QString         _receiverVersion;
     90  QString         _digitalObjectId;
     91  QStringList     _licenseOfUse;
     92  QStringList     _stationInformation;
    8893  QStringList     _comments;
    8994  ColumnVector    _antNEU;
     
    162167  const QString& receiverType() const {return _header._receiverType;}
    163168  const QString& receiverNumber() const {return _header._receiverNumber;}
     169  const QString& digitalObjectId() const {return _header._digitalObjectId;}
     170  const QStringList licenseOfUse() const {return _header._licenseOfUse;}
     171  const QStringList stationInformation() const {return _header._stationInformation;}
    164172
    165173  void setInterval(double interval) {_header._interval = interval;}
     
    173181  void setReceiverType(const QString& receiverType) {_header._receiverType = receiverType;}
    174182  void setReceiverNumber(const QString& receiverNumber) {_header._receiverNumber = receiverNumber;}
     183
     184  void setDigitalObjectId(const QString& digitalObjectId) {_header._digitalObjectId = digitalObjectId;}
     185  void setLicenseOfUse(const QString& licenseOfUse) {_header._licenseOfUse.append(licenseOfUse);}
     186  void setStationInformation(const QString& stationInformation) {_header._stationInformation.append(stationInformation);}
    175187
    176188  const ColumnVector& xyz() const {return _header._xyz;}
Note: See TracChangeset for help on using the changeset viewer.