Changeset 349 in ntrip


Ignore:
Timestamp:
Dec 12, 2006, 4:59:42 PM (17 years ago)
Author:
mervart
Message:

* empty log message *

Location:
trunk/BNC
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/bnccaster.cpp

    r347 r349  
    114114// New Observations
    115115////////////////////////////////////////////////////////////////////////////
    116 void bncCaster::newObs(const QByteArray& staID, const QUrl& mountPoint,
    117                        bool firstObs, Observation* obs,
    118                        const QByteArray& format) {
     116int bncCaster::newObs(const QByteArray& staID,
     117                       bool firstObs, Observation* obs) {
    119118
    120119  QMutexLocker locker(&_mutex);
     
    128127  obs->StatID[sizeof(obs->StatID)-1] = '\0';
    129128       
    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 
    142129  // First time, set the _lastDumpSec immediately
    143130  // --------------------------------------------
     
    158145    }
    159146    delete obs;
    160     return;
     147    return 1;
    161148  }
    162149
     
    172159    _lastDumpSec = newTime - _waitTime;
    173160  }
     161
     162  return 0;
    174163}
    175164
  • trunk/BNC/bnccaster.h

    r336 r349  
    3232
    3333#include "RTCM/GPSDecoder.h"
    34 #include "bncrinex.h"
    3534
    3635class bncGetThread;
     
    4443   void addGetThread(bncGetThread* getThread);
    4544   int  numStations() const {return _staIDs.size();}
    46    void newObs(const QByteArray& staID, const QUrl& mountPoint,
    47                bool firstObs, Observation* obs, const QByteArray& format);
     45   int  newObs(const QByteArray& staID, bool firstObs, Observation* obs);
    4846
    4947 signals:
     
    6664   QList<QTcpSocket*>*            _sockets;
    6765   QList<QByteArray>              _staIDs;
    68    QMap<QString, bncRinex*>       _rinexWriters;
    6966   QList<bncGetThread*>           _threads;
    7067   int                            _samplingRate;
  • trunk/BNC/bncgetthread.cpp

    r336 r349  
    4949#include "bnctabledlg.h"
    5050#include "bncapp.h"
     51#include "bncutils.h"
    5152
    5253#include "RTCM/RTCM2Decoder.h"
     
    6061bncGetThread::bncGetThread(const QUrl& mountPoint,
    6162                           const QByteArray& format, int iMount) {
    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
     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;
    7173
    7274  // Check name conflict
     
    8789    }
    8890  }
     91
     92  _samplingRate = settings.value("rnxSampl").toInt();
    8993
    9094  if (num > 0) {
     
    288292        for (list<Observation*>::iterator it = _decoder->_obsList.begin();
    289293             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
    290319          emit newObs(_staID, *it);
    291320          bool firstObs = (it == _decoder->_obsList.begin());
    292           _global_caster->newObs(_staID, _mountPoint, firstObs, *it, _format);
     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
    293337        }
    294338        _decoder->_obsList.clear();
  • trunk/BNC/bncgetthread.h

    r282 r349  
    3232#include "RTCM/GPSDecoder.h"
    3333#include "bncconst.h"
     34#include "bncrinex.h"
    3435
    3536class bncGetThread : public QThread {
     
    6869   int         _nextSleep;
    6970   int         _iMount;
     71   int         _samplingRate;
     72   bncRinex*   _rinexWriter;
    7073};
    7174
Note: See TracChangeset for help on using the changeset viewer.