Changeset 350 in ntrip


Ignore:
Timestamp:
Dec 13, 2006, 10:43:39 AM (17 years ago)
Author:
mervart
Message:

* empty log message *

Location:
trunk/BNC
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/bnccaster.cpp

    r349 r350  
    114114// New Observations
    115115////////////////////////////////////////////////////////////////////////////
    116 int bncCaster::newObs(const QByteArray& staID,
    117                        bool firstObs, Observation* obs) {
     116void bncCaster::newObs(const QByteArray& staID, const QUrl& mountPoint,
     117                       bool firstObs, Observation* obs,
     118                       const QByteArray& format) {
    118119
    119120  QMutexLocker locker(&_mutex);
     
    127128  obs->StatID[sizeof(obs->StatID)-1] = '\0';
    128129       
     130  // Prepare RINEX Output
     131  // --------------------
     132  if (_rinexWriters.find(obs->StatID) == _rinexWriters.end()) {
     133    _rinexWriters.insert(obs->StatID, new bncRinex(obs->StatID,
     134                                                   mountPoint, format));
     135  }
     136  bncRinex* rnx = _rinexWriters.find(obs->StatID).value();
     137  if (_samplingRate == 0 || iSec % _samplingRate == 0) {
     138    rnx->deepCopy(obs);
     139  }
     140  rnx->dumpEpoch(newTime);
     141
    129142  // First time, set the _lastDumpSec immediately
    130143  // --------------------------------------------
     
    145158    }
    146159    delete obs;
    147     return 1;
     160    return;
    148161  }
    149162
     
    159172    _lastDumpSec = newTime - _waitTime;
    160173  }
    161 
    162   return 0;
    163174}
    164175
  • trunk/BNC/bnccaster.h

    r349 r350  
    3232
    3333#include "RTCM/GPSDecoder.h"
     34#include "bncrinex.h"
    3435
    3536class bncGetThread;
     
    4344   void addGetThread(bncGetThread* getThread);
    4445   int  numStations() const {return _staIDs.size();}
    45    int  newObs(const QByteArray& staID, bool firstObs, Observation* obs);
     46   void newObs(const QByteArray& staID, const QUrl& mountPoint,
     47               bool firstObs, Observation* obs, const QByteArray& format);
    4648
    4749 signals:
     
    6466   QList<QTcpSocket*>*            _sockets;
    6567   QList<QByteArray>              _staIDs;
     68   QMap<QString, bncRinex*>       _rinexWriters;
    6669   QList<bncGetThread*>           _threads;
    6770   int                            _samplingRate;
  • trunk/BNC/bncgetthread.cpp

    r349 r350  
    4949#include "bnctabledlg.h"
    5050#include "bncapp.h"
    51 #include "bncutils.h"
    5251
    5352#include "RTCM/RTCM2Decoder.h"
     
    6160bncGetThread::bncGetThread(const QUrl& mountPoint,
    6261                           const QByteArray& format, int iMount) {
    63   _decoder     = 0;
    64   _mountPoint  = mountPoint;
    65   _staID       = mountPoint.path().mid(1).toAscii();
    66   _staID_orig  = _staID;
    67   _format      = format;
    68   _socket      = 0;
    69   _timeOut     = 20*1000;  // 20 seconds
    70   _nextSleep   =  1;       //  1 second
    71   _iMount      = iMount;   // index in mountpoints array
    72   _rinexWriter = 0;
     62  _decoder    = 0;
     63  _mountPoint = mountPoint;
     64  _staID      = mountPoint.path().mid(1).toAscii();
     65  _staID_orig = _staID;
     66  _format     = format;
     67  _socket     = 0;
     68  _timeOut    = 20*1000;  // 20 seconds
     69  _nextSleep  =  1;       //  1 second
     70  _iMount     = iMount;   // index in mountpoints array
    7371
    7472  // Check name conflict
     
    8987    }
    9088  }
    91 
    92   _samplingRate = settings.value("rnxSampl").toInt();
    9389
    9490  if (num > 0) {
     
    292288        for (list<Observation*>::iterator it = _decoder->_obsList.begin();
    293289             it != _decoder->_obsList.end(); it++) {
    294 
    295           // Check observation epoch
    296           // -----------------------
    297           int    week;
    298           double sec;
    299           currentGPSWeeks(week, sec);
    300          
    301           const double secPerWeek = 7.0 * 24.0 * 3600.0;
    302           const double maxDt      = 600.0;           
    303 
    304           if (week < (*it)->GPSWeek) {
    305             week += 1;
    306             sec  -= secPerWeek;
    307           }
    308           if (week > (*it)->GPSWeek) {
    309             week -= 1;
    310             sec  += secPerWeek;
    311           }
    312           double dt = fabs(sec - (*it)->GPSWeeks);
    313           if (week != (*it)->GPSWeek || dt > maxDt) {
    314             emit( newMessage("Wrong observation epoch") );
    315             delete (*it);
    316             continue;
    317           }
    318 
    319290          emit newObs(_staID, *it);
    320291          bool firstObs = (it == _decoder->_obsList.begin());
    321           if ( _global_caster->newObs(_staID, firstObs, *it) == 0 ) {
    322 
    323             if (_rinexWriter == 0) {
    324               _rinexWriter = new bncRinex((*it)->StatID, _mountPoint, _format);
    325             }
    326 
    327             long iSec    = long(floor((*it)->GPSWeeks+0.5));
    328             long newTime = (*it)->GPSWeek * 7*24*3600 + iSec;
    329 
    330             if (_samplingRate == 0 || iSec % _samplingRate == 0) {
    331               _rinexWriter->deepCopy(*it);
    332             }
    333             _rinexWriter->dumpEpoch(newTime);
    334           }
    335 
    336 
     292          _global_caster->newObs(_staID, _mountPoint, firstObs, *it, _format);
    337293        }
    338294        _decoder->_obsList.clear();
  • trunk/BNC/bncgetthread.h

    r349 r350  
    3232#include "RTCM/GPSDecoder.h"
    3333#include "bncconst.h"
    34 #include "bncrinex.h"
    3534
    3635class bncGetThread : public QThread {
     
    6968   int         _nextSleep;
    7069   int         _iMount;
    71    int         _samplingRate;
    72    bncRinex*   _rinexWriter;
    7370};
    7471
Note: See TracChangeset for help on using the changeset viewer.