Changeset 1066 in ntrip


Ignore:
Timestamp:
Aug 27, 2008, 12:29:55 PM (16 years ago)
Author:
mervart
Message:

* empty log message *

Location:
trunk/BNS
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNS/bns.cpp

    r1065 r1066  
    7373  // Socket and file for outputting the results
    7474  // -------------------------------------------
    75   _caster = new t_bnscaster(settings.value("mountpoint").toString());
    76   connect(_caster, SIGNAL(error(const QByteArray)),
     75  _caster.push_back(new t_bnscaster(settings.value("mountpoint").toString()));
     76  connect(_caster.back(), SIGNAL(error(const QByteArray)),
    7777          this, SLOT(slotError(const QByteArray)));
    78   connect(_caster, SIGNAL(newMessage(const QByteArray)),
     78  connect(_caster.back(), SIGNAL(newMessage(const QByteArray)),
    7979          this, SLOT(slotMessage(const QByteArray)));
    8080
     
    131131    _sp3 = new bnsSP3(prep, ext, path, intr, sampl);
    132132  }
    133 
    134   // Reference frame
    135   // ---------------
    136   _crdTrafo = false;
    137   if (settings.value("refSys").toString() == "ETRS89") {
    138     _crdTrafo = true;
    139   }
    140133}
    141134
     
    146139  delete _clkServer;
    147140  delete _clkSocket;
    148   delete _caster;
     141  for (int ic = 0; ic < _caster.size(); ic++) {
     142    delete _caster.at(ic);
     143  }
    149144  delete _logStream;
    150145  delete _logFile;
     
    250245    if (_clkSocket && _clkSocket->state() == QAbstractSocket::ConnectedState) {
    251246      if ( _clkSocket->canReadLine()) {
    252         _caster->open();
    253247        readEpoch();
    254248      }
     
    287281    QStringList prns;
    288282
    289     ///    for (int oldEph = 0; oldEph <= 1; oldEph++) {
    290     for (int oldEph = 0; oldEph <= 0; oldEph++) {
    291    
    292       struct ClockOrbit co;
    293       memset(&co, 0, sizeof(co));
    294       co.GPSEpochTime      = (int)GPSweeks;
    295       co.GLONASSEpochTime  = (int)fmod(GPSweeks, 86400.0);
    296       co.ClockDataSupplied = 1;
    297       co.OrbitDataSupplied = 1;
    298       co.SatRefPoint       = POINT_CENTER;
    299       co.SatRefDatum       = DATUM_ITRF;
    300    
    301       for (int ii = 1; ii <= numSat; ii++) {
    302    
    303         QString      prn;
    304         ColumnVector xx(5);
    305         t_eph*       ep = 0;
    306    
    307         if (oldEph == 0) {
    308           line = _clkSocket->readLine();
    309           QTextStream in(line);
    310           in >> prn;
    311           prns << prn;
    312           if ( _ephList.contains(prn) ) {
    313             in >> xx(1) >> xx(2) >> xx(3) >> xx(4) >> xx(5); xx(4) *= 1e-6;
    314 
    315             //// beg test (zero clock correction for Gerhard Wuebbena)
    316             ////            xx(4) -= xx(5) / 299792458.0;
    317             //// end test
    318 
    319             t_ephPair* pair = _ephList[prn];
    320             pair->xx = xx;
    321             ep = pair->eph;
     283    for (int ic = 0; ic < _caster.size(); ic++) {
     284      _caster.at(ic)->open();
     285
     286      for (int oldEph = 0; oldEph <= 0; oldEph++) { // TODO: handle old ephemeris
     287     
     288        struct ClockOrbit co;
     289        memset(&co, 0, sizeof(co));
     290        co.GPSEpochTime      = (int)GPSweeks;
     291        co.GLONASSEpochTime  = (int)fmod(GPSweeks, 86400.0);
     292        co.ClockDataSupplied = 1;
     293        co.OrbitDataSupplied = 1;
     294        co.SatRefPoint       = POINT_CENTER;
     295        co.SatRefDatum       = DATUM_ITRF;
     296     
     297        for (int ii = 1; ii <= numSat; ii++) {
     298     
     299          QString      prn;
     300          ColumnVector xx(5);
     301          t_eph*       ep = 0;
     302     
     303          if (oldEph == 0) {
     304            line = _clkSocket->readLine();
     305            QTextStream in(line);
     306            in >> prn;
     307            prns << prn;
     308            if ( _ephList.contains(prn) ) {
     309              in >> xx(1) >> xx(2) >> xx(3) >> xx(4) >> xx(5); xx(4) *= 1e-6;
     310     
     311              //// beg test (zero clock correction for Gerhard Wuebbena)
     312              ////            xx(4) -= xx(5) / 299792458.0;
     313              //// end test
     314     
     315              t_ephPair* pair = _ephList[prn];
     316              pair->xx = xx;
     317              ep = pair->eph;
     318            }
     319          }
     320          else {
     321            prn = prns[ii-1];
     322            if ( _ephList.contains(prn) ) {
     323              t_ephPair* pair = _ephList[prn];
     324              prn = pair->eph->prn();
     325              xx  = pair->xx;
     326              ep  = pair->oldEph;
     327            }
     328          }
     329     
     330          if (ep != 0) {
     331            struct ClockOrbit::SatData* sd = 0;
     332            if      (prn[0] == 'G') {
     333              sd = co.Sat + co.NumberOfGPSSat;
     334              ++co.NumberOfGPSSat;
     335            }
     336            else if (prn[0] == 'R') {
     337              sd = co.Sat + CLOCKORBIT_NUMGPS + co.NumberOfGLONASSSat;
     338              ++co.NumberOfGLONASSSat;
     339            }
     340            if (sd) {
     341              QString outLine;
     342              processSatellite(oldEph, _caster.at(ic)->crdTrafo(), ep, GPSweek,
     343                               GPSweeks, prn, xx, sd, outLine);
     344              _caster.at(ic)->printAscii(line);
     345            }
    322346          }
    323347        }
    324         else {
    325           prn = prns[ii-1];
    326           if ( _ephList.contains(prn) ) {
    327             t_ephPair* pair = _ephList[prn];
    328             prn = pair->eph->prn();
    329             xx  = pair->xx;
    330             ep  = pair->oldEph;
    331           }
    332         }
    333    
    334         if (ep != 0) {
    335           struct ClockOrbit::SatData* sd = 0;
    336           if      (prn[0] == 'G') {
    337             sd = co.Sat + co.NumberOfGPSSat;
    338             ++co.NumberOfGPSSat;
    339           }
    340           else if (prn[0] == 'R') {
    341             sd = co.Sat + CLOCKORBIT_NUMGPS + co.NumberOfGLONASSSat;
    342             ++co.NumberOfGLONASSSat;
    343           }
    344           if (sd) {
    345             QString outLine;
    346             processSatellite(oldEph, ep, GPSweek, GPSweeks, prn, xx,
    347                              sd, outLine);
    348             _caster->printAscii(line);
     348     
     349        if ( _caster.at(ic)->used() &&
     350             (co.NumberOfGPSSat > 0 || co.NumberOfGLONASSSat > 0) ) {
     351          char obuffer[CLOCKORBIT_BUFFERSIZE];
     352          int len = MakeClockOrbit(&co, COTYPE_AUTO, 0, obuffer, sizeof(obuffer));
     353          if (len > 0) {
     354            emit(newOutBytes(len));
     355            _caster.at(ic)->write(obuffer, len);
    349356          }
    350357        }
    351358      }
    352    
    353       if ( _caster->used() &&
    354            (co.NumberOfGPSSat > 0 || co.NumberOfGLONASSSat > 0) ) {
    355         char obuffer[CLOCKORBIT_BUFFERSIZE];
    356         int len = MakeClockOrbit(&co, COTYPE_AUTO, 0, obuffer, sizeof(obuffer));
    357         if (len > 0) {
    358           emit(newOutBytes(len));
    359           _caster->write(obuffer, len);
    360         }
    361       }
    362359    }
    363360  }
     
    366363//
    367364////////////////////////////////////////////////////////////////////////////
    368 void t_bns::processSatellite(int oldEph, t_eph* ep, int GPSweek, double GPSweeks,
    369                              const QString& prn, const ColumnVector& xx,
     365void t_bns::processSatellite(int oldEph, bool trafo, t_eph* ep, int GPSweek,
     366                             double GPSweeks, const QString& prn,
     367                             const ColumnVector& xx,
    370368                             struct ClockOrbit::SatData* sd,
    371369                             QString& outLine) {
     
    377375
    378376  ColumnVector xyz = xx.Rows(1,3);
    379   if (_crdTrafo) {
     377  if (trafo) {
    380378    crdTrafo(GPSweek, xyz);
    381379  }
  • trunk/BNS/bns.h

    r1065 r1066  
    5959  void openCaster();
    6060  void readEpoch();
    61   void processSatellite(int oldEph, t_eph* ep, int GPSweek, double GPSweeks,
    62                         const QString& prn, const ColumnVector& xx,
    63                         struct ClockOrbit::SatData* sd, QString& outLine);
     61  void processSatellite(int oldEph, bool trafo, t_eph* ep, int GPSweek,
     62                        double GPSweeks, const QString& prn,
     63                        const ColumnVector& xx, struct ClockOrbit::SatData* sd,
     64                        QString& outLine);
    6465  void crdTrafo(int GPSWeek, ColumnVector& xyz);
    6566
    6667  QTcpServer*               _clkServer;
    6768  QTcpSocket*               _clkSocket;
    68   t_bnscaster*              _caster;
     69  QList<t_bnscaster*>       _caster;
    6970  QFile*                    _logFile;
    7071  QTextStream*              _logStream;
     
    7475  bnsRinex*                 _rnx;
    7576  bnsSP3*                   _sp3;
    76   bool                      _crdTrafo;
    7777};
    7878#endif
  • trunk/BNS/bnscaster.cpp

    r1065 r1066  
    4747      _outStream = new QTextStream(_outFile);
    4848    }
     49  }
     50
     51  // Reference frame
     52  // ---------------
     53  _crdTrafo = false;
     54  if (settings.value("refSys").toString() == "ETRS89") {
     55    _crdTrafo = true;
    4956  }
    5057}
  • trunk/BNS/bnscaster.h

    r1065 r1066  
    1212  void write(char* buffer, unsigned len);
    1313  void printAscii(const QString& line);
    14   bool used() {return _outSocket || _outFile;}
     14  bool used() const {return _outSocket || _outFile;}
     15  bool crdTrafo() const {return _crdTrafo;}
    1516
    1617 signals:
     
    2526  QFile*       _outFile;
    2627  QTextStream* _outStream;
     28  bool         _crdTrafo;
    2729};
    2830
Note: See TracChangeset for help on using the changeset viewer.