Changeset 689 in ntrip


Ignore:
Timestamp:
Feb 15, 2008, 1:42:04 PM (16 years ago)
Author:
weber
Message:

* empty log message *

Location:
trunk/BNC
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/RTCM3/RTCM3Decoder.cpp

    r658 r689  
    7272
    7373  const int LEAPSECONDS = 14; /* only needed for approx. time */
     74
     75// Ensure, that the Decoder uses the "old" convention for the data structure for Rinex2. Perlt
     76  _Parser.rinex3 = 0;
    7477
    7578  time_t tim;
     
    133136            for (int jj = 0; jj < _Parser.numdatatypesGPS; jj++) {
    134137              int v = 0;
    135               int df = _Parser.dataflag[jj];
    136               int pos = _Parser.datapos[jj];
     138// sepearated declaration and initalization of df and pos. Perlt
     139              int df;
     140              int pos;
     141              df = _Parser.dataflag[jj];
     142              pos = _Parser.datapos[jj];
    137143              if ( (_Parser.Data.dataflags[ii] & df)
    138144                   && !isnan(_Parser.Data.measdata[ii][pos])
     
    154160              else
    155161              {
    156                 if      (_Parser.dataflag[jj] & GNSSDF_C1DATA) {
    157                   obs->_o.C1 = _Parser.Data.measdata[ii][_Parser.datapos[jj]];
    158                 }
    159                 else if (_Parser.dataflag[jj] & GNSSDF_C2DATA) {
    160                   obs->_o.C2 = _Parser.Data.measdata[ii][_Parser.datapos[jj]];
    161                 }
    162                 else if (_Parser.dataflag[jj] & GNSSDF_P1DATA) {
    163                   obs->_o.P1 = _Parser.Data.measdata[ii][_Parser.datapos[jj]];
    164                 }
    165                 else if (_Parser.dataflag[jj] & GNSSDF_P2DATA) {
    166                   obs->_o.P2 = _Parser.Data.measdata[ii][_Parser.datapos[jj]];
     162// variables df and pos are used consequently. Perlt
     163                if      (df & GNSSDF_C1DATA) {
     164                  obs->_o.C1 = _Parser.Data.measdata[ii][pos];
     165                }
     166                else if (df & GNSSDF_C2DATA) {
     167                  obs->_o.C2 = _Parser.Data.measdata[ii][pos];
     168                }
     169                else if (df & GNSSDF_P1DATA) {
     170                  obs->_o.P1 = _Parser.Data.measdata[ii][pos];
     171                }
     172                else if (df & GNSSDF_P2DATA) {
     173                  obs->_o.P2 = _Parser.Data.measdata[ii][pos];
    167174                }
    168175                else if (df & (GNSSDF_L1CDATA|GNSSDF_L1PDATA)) {
  • trunk/BNC/RTCM3/rtcm3torinex.c

    r551 r689  
    11/*
    22  Converter for RTCM3 data to RINEX.
    3   $Id: rtcm3torinex.c,v 1.25 2007/10/25 09:37:42 stoecker Exp $
     3  $Id: rtcm3torinex.c,v 1.8 2007/10/28 08:50:37 mervart Exp $
    44  Copyright (C) 2005-2006 by Dirk Stoecker <stoecker@alberding.eu>
    55
     
    5151
    5252/* CVS revision and version */
    53 static char revisionstr[] = "$Revision: 1.25 $";
     53static char revisionstr[] = "$Revision: 1.8 $";
    5454
    5555#ifndef COMPILEDATE
     
    846846}
    847847
     848// Inserted parts for BNC Perlt
     849#ifdef NO_RTCM3_MAIN
     850#define NUMSTARTSKIP 1
     851#else
    848852#define NUMSTARTSKIP 3
     853#endif
     854
    849855void HandleHeader(struct RTCM3ParserData *Parser)
    850856{
     857#ifdef NO_RTCM3_MAIN
     858// Part of Handle Header for data request for BNC (independently on actually delivered data), original is commented out by ifndef NO_RTCM3_MAIN. Perlt
     859  int i;
     860  if(Parser->rinex3)
     861  {
     862#define CHECKFLAGSNEW(a, b, c) \
     863    { \
     864      Parser->dataflag##a[Parser->numdatatypes##a] = GNSSDF_##b##DATA; \
     865      Parser->datapos##a[Parser->numdatatypes##a] = GNSSENTRY_##b##DATA; \
     866      ++Parser->numdatatypes##a; \
     867    }
     868
     869    CHECKFLAGSNEW(GPS, C1,  C1C)
     870    CHECKFLAGSNEW(GPS, L1C, L1C)
     871    CHECKFLAGSNEW(GPS, D1C, D1C)
     872    CHECKFLAGSNEW(GPS, S1C, S1C)
     873    CHECKFLAGSNEW(GPS, P1,  C1P)
     874    CHECKFLAGSNEW(GPS, L1P, L1P)
     875    CHECKFLAGSNEW(GPS, D1P, D1P)
     876    CHECKFLAGSNEW(GPS, S1P, S1P)
     877    CHECKFLAGSNEW(GPS, P2,  C2P)
     878    CHECKFLAGSNEW(GPS, L2P, L2P)
     879    CHECKFLAGSNEW(GPS, D2P, D2P)
     880    CHECKFLAGSNEW(GPS, S2P, S2P)
     881    CHECKFLAGSNEW(GPS, C2,  C2X)
     882    CHECKFLAGSNEW(GPS, L2C, L2X)
     883    CHECKFLAGSNEW(GPS, D2C, D2X)
     884    CHECKFLAGSNEW(GPS, S2C, S2X)
     885    CHECKFLAGSNEW(GLO, C1,  C1C)
     886    CHECKFLAGSNEW(GLO, L1C, L1C)
     887    CHECKFLAGSNEW(GLO, D1C, D1C)
     888    CHECKFLAGSNEW(GLO, S1C, S1C)
     889    CHECKFLAGSNEW(GLO, P1,  C1P)
     890    CHECKFLAGSNEW(GLO, L1P, L1P)
     891    CHECKFLAGSNEW(GLO, D1P, D1P)
     892    CHECKFLAGSNEW(GLO, S1P, S1P)
     893    CHECKFLAGSNEW(GLO, P2,  C2P)
     894    CHECKFLAGSNEW(GLO, L2P, L2P)
     895    CHECKFLAGSNEW(GLO, D2P, D2P)
     896    CHECKFLAGSNEW(GLO, S2P, S2P)
     897    CHECKFLAGSNEW(GLO, C2,  C2C)
     898    CHECKFLAGSNEW(GLO, L2C, L2C)
     899    CHECKFLAGSNEW(GLO, D2C, D2C)
     900    CHECKFLAGSNEW(GLO, S2C, S2C)
     901
     902  }
     903  else
     904  {
     905#define CHECKFLAGS(a, b) \
     906    { \
     907      if(data[RINEXENTRY_##b##DATA]) \
     908      { \
     909        Parser->dataflagGPS[data[RINEXENTRY_##b##DATA]-1] = GNSSDF_##a##DATA; \
     910        Parser->dataposGPS[data[RINEXENTRY_##b##DATA]-1] = GNSSENTRY_##a##DATA; \
     911      } \
     912      else \
     913      { \
     914        Parser->dataflag[Parser->numdatatypesGPS] = GNSSDF_##a##DATA; \
     915        Parser->datapos[Parser->numdatatypesGPS] = GNSSENTRY_##a##DATA; \
     916        data[RINEXENTRY_##b##DATA] = ++Parser->numdatatypesGPS; \
     917      } \
     918    }
     919
     920    int data[RINEXENTRY_NUMBER];
     921    for(i = 0; i < RINEXENTRY_NUMBER; ++i) data[i] = 0;
     922
     923    CHECKFLAGS(C1,C1)
     924    CHECKFLAGS(C2,C2)
     925    CHECKFLAGS(P1,P1)
     926    CHECKFLAGS(P2,P2)
     927    CHECKFLAGS(L1C,L1)
     928    CHECKFLAGS(L1P,L1)
     929    CHECKFLAGS(L2C,L2)
     930    CHECKFLAGS(L2P,L2)
     931    CHECKFLAGS(D1C,D1)
     932    CHECKFLAGS(D1P,D1)
     933    CHECKFLAGS(D2C,D2)
     934    CHECKFLAGS(D2P,D2)
     935    CHECKFLAGS(S1C,S1)
     936    CHECKFLAGS(S1P,S1)
     937    CHECKFLAGS(S2C,S2)
     938    CHECKFLAGS(S2P,S2)
     939  }
     940// End Part of Handle Header for BNC Perlt
     941#endif
     942
     943#ifndef NO_RTCM3_MAIN
    851944  struct HeaderData hdata;
    852945  char thebuffer[MAXHEADERBUFFERSIZE];
     
    11391232  }
    11401233
    1141 #ifndef NO_RTCM3_MAIN
    11421234  for(i = 0; i < hdata.numheaders; ++i)
    11431235  {
     
    15361628
    15371629#ifndef NO_RTCM3_MAIN
    1538 static char datestr[]     = "$Date: 2007/10/25 09:37:42 $";
     1630static char datestr[]     = "$Date: 2007/10/28 08:50:37 $";
    15391631
    15401632/* The string, which is send as agent in HTTP request */
  • trunk/BNC/bncrinex.cpp

    r675 r689  
    404404      else if (line.indexOf("# / TYPES OF OBSERV") != -1) {
    405405        if (_rinexVers == 3) {
    406           _out << "G    6 C1C L1C S1C C2P L2P S2P                              SYS / # / OBS TYPES" << endl;
    407           _out << "R    6 C1C L1C S1C C2P L2P S2P                              SYS / # / OBS TYPES" << endl;
    408           _out << "S    6 C1C L1C S1C C2P L2P S2P                              SYS / # / OBS TYPES" << endl;
     406// Changed declaration of data types, consistent with Rinex3 Perlt 
     407          _out << "G   10 C1C C1P L1C S1C C2X C2P L2X S2X L2P S2P              SYS / # / OBS TYPES" << endl;
     408          _out << "R   10 C1C C1P L1C S1C C2C C2P L2C S2C L2P S2P              SYS / # / OBS TYPES" << endl;
     409          _out << "S    3 C1C L1C S1C                                          SYS / # / OBS TYPES" << endl;
    409410        }
    410411        else {
     
    420421                      _mountPoint.path())).leftJustified(60, ' ', true);
    421422        _out << hlp.toAscii().data() << "COMMENT" << endl;
     423      }
     424// Added header line for Rinex3 regarding mandatory MARKER TYPE field Perlt
     425      else if (line.indexOf("MARKER NAME") != -1) {
     426        if (_rinexVers == 3) {
     427          _out << line.toAscii().data() << endl;
     428          _out << setw(71) << "GEODETIC                                                    MARKER TYPE" << endl;
     429        }
     430        else {
     431          _out << line.toAscii().data() << endl;
     432        }
     433// End
    422434      }
    423435      else {
     
    447459    _out.setf(ios::left);
    448460    _out << setw(60) << _statID.data()                               << "MARKER NAME"          << endl;
     461// Added header line for Rinex3 regarding mandatory MARKER TYPE field Perlt
     462    if (_rinexVers == 3) {
     463      _out << setw(60) << "unknown"                                  << "MARKER TYPE      "    << endl;
     464    }
     465// End
    449466    _out << setw(60) << "unknown             unknown"                << "OBSERVER / AGENCY"    << endl;
    450467    _out << setw(20) << "unknown"   
     
    464481         << "                  "                                     << "ANTENNA: DELTA H/E/N" << endl;
    465482    if (_rinexVers == 3) {
    466       _out << "G    6 C1C L1C S1C C2P L2P S2P                              SYS / # / OBS TYPES" << endl;
    467       _out << "R    6 C1C L1C S1C C2P L2P S2P                              SYS / # / OBS TYPES" << endl;
    468       _out << "S    6 C1C L1C S1C C2P L2P S2P                              SYS / # / OBS TYPES" << endl;
     483// Changed declaration of data types, consistent with Rinex3 Perlt 
     484      _out << "G   10 C1C C1P L1C S1C C2X C2P L2X S2X L2P S2P              SYS / # / OBS TYPES" << endl;
     485      _out << "R   10 C1C C1P L1C S1C C2C C2P L2C S2C L2P S2P              SYS / # / OBS TYPES" << endl;
     486      _out << "S    3 C1C L1C S1C                                          SYS / # / OBS TYPES" << endl;
    469487
    470488    }
     
    545563  // ---------------
    546564  if (_rinexVers == 3) {
     565    char sbasflag = 'S';
    547566    _out << datTim.toString("> yyyy MM dd hh mm ").toAscii().data()
    548567         << setw(10) << setprecision(7) << sec
     
    552571    while (it.hasNext()) {
    553572      p_obs obs = it.next();
     573// Changed data output, C1P, C2C|X, L2C|X, S2C|X added. Changed Output for SBAS Perlt 
     574      if (sbasflag != obs->_o.satSys) {
    554575      _out << obs->_o.satSys
    555576           << setw(2) << setfill('0') << obs->_o.satNum << setfill(' ')
    556577           << setw(14) << setprecision(3) << obs->_o.C1 << "  " 
     578           << setw(14) << setprecision(3) << obs->_o.P1 << "  " 
    557579           << setw(14) << setprecision(3) << obs->_o.L1 << " "
    558580           << setw(1)                     << obs->_o.SNR1
    559581           << setw(14) << setprecision(3) << obs->_o.S1 << "  "
    560            << setw(14) << setprecision(3) << obs->_o.P2 << "  "
    561            << setw(14) << setprecision(3) << obs->_o.L2 << " "
    562            << setw(1)                     << obs->_o.SNR2
    563            << setw(14) << setprecision(3) << obs->_o.S2
    564            << endl;
     582           << setw(14) << setprecision(3) << obs->_o.C2 << "  " 
     583           << setw(14) << setprecision(3) << obs->_o.P2 << "  " ;
     584      if ((obs->_o.C2 != 0.0) && (obs->_o.P2 == 0.0)) {
     585       _out << setw(14) << setprecision(3) << obs->_o.L2 << " "
     586            << setw(1)                     << obs->_o.SNR2
     587            << setw(14) << setprecision(3) << obs->_o.S2 << "  "
     588            << "                              ";
     589      }
     590      else {
     591       _out << "                                "
     592            << setw(14) << setprecision(3) << obs->_o.L2 << " "
     593            << setw(1)                     << obs->_o.SNR2
     594            << setw(14) << setprecision(3) << obs->_o.S2;
     595      }
     596      _out << endl;
     597      }
     598      else {
     599      _out << obs->_o.satSys
     600           << setw(2) << setfill('0') << obs->_o.satNum << setfill(' ')
     601           << setw(14) << setprecision(3) << obs->_o.C1 << "  " 
     602           << setw(14) << setprecision(3) << obs->_o.P1 << "  " 
     603           << setw(14) << setprecision(3) << obs->_o.L1 << " "
     604           << setw(1)                     << obs->_o.SNR1
     605           << setw(14) << setprecision(3) << obs->_o.S1 << endl;
     606      }
    565607      delete obs;
    566608    }
  • trunk/BNC/bncwindow.cpp

    r686 r689  
    607607
    608608    getThread->start();
    609     _mountPointsTable->setSortingEnabled(true);
    610609  }
    611610}
Note: See TracChangeset for help on using the changeset viewer.