Changeset 8903 in ntrip for trunk


Ignore:
Timestamp:
Mar 18, 2020, 11:08:50 AM (5 years ago)
Author:
stuerze
Message:
 
Location:
trunk/BNC/src
Files:
4 edited

Legend:

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

    r8852 r8903  
    10731073    GETBITS(eph._L2PFlag, 1)
    10741074    GETBITS(fitIntervalFalg, 1)
    1075     if (fitIntervalFalg == 0) {
    1076       eph._fitInterval = 4.0;
    1077     }
     1075    eph._fitInterval = fitIntervalFromFlag(fitIntervalFalg, eph._IODC, eph.type());
    10781076    eph._TOT = 0.9999e9;
    10791077
     
    12381236    GETBITS(eph._IODC, 10)
    12391237    GETBITS(fitIntervalFalg, 1)
    1240     if (fitIntervalFalg == 0) {
    1241       eph._fitInterval = 2.0;
    1242     }
     1238    eph._fitInterval = fitIntervalFromFlag(fitIntervalFalg, eph._IODC, eph.type());
    12431239    eph._TOT = 0.9999e9;
    12441240
  • trunk/BNC/src/bncutils.cpp

    r8801 r8903  
    317317                const ColumnVector& rsw, ColumnVector& xyz) {
    318318
    319   ColumnVector along  = vv / vv.norm_Frobenius();
    320   ColumnVector cross  = crossproduct(rr, vv); cross /= cross.norm_Frobenius();
     319  ColumnVector along  = vv / vv.NormFrobenius();
     320  ColumnVector cross  = crossproduct(rr, vv); cross /= cross.NormFrobenius();
    321321  ColumnVector radial = crossproduct(along, cross);
    322322
     
    334334                const ColumnVector& xyz, ColumnVector& rsw) {
    335335
    336   ColumnVector along  = vv / vv.norm_Frobenius();
    337   ColumnVector cross  = crossproduct(rr, vv); cross /= cross.norm_Frobenius();
     336  ColumnVector along  = vv / vv.NormFrobenius();
     337  ColumnVector cross  = crossproduct(rr, vv); cross /= cross.NormFrobenius();
    338338  ColumnVector radial = crossproduct(along, cross);
    339339
     
    808808}
    809809
     810//
     811////////////////////////////////////////////////////////////////////////////
    810812double accuracyFromIndex(int index, t_eph::e_type type) {
    811813double accuracy = -1.0;
     
    869871}
    870872
     873//
     874////////////////////////////////////////////////////////////////////////////
    871875int indexFromAccuracy(double accuracy, t_eph::e_type type) {
    872876
     
    944948
    945949  return (type == t_eph::Galileo) ? 255 : 15;
     950}
     951
     952// Returns fit interval in hours from flag
     953////////////////////////////////////////////////////////////////////////////
     954double fitIntervalFromFlag(int flag, double iodc, t_eph::e_type type) {
     955  double fitInterval = 0.0;
     956
     957  switch (flag) {
     958    case 0:
     959      if      (type == t_eph::GPS) {
     960        fitInterval = 4.0;
     961      }
     962      else if (type == t_eph::QZSS) {
     963        fitInterval = 2.0;
     964      }
     965      break;
     966    case 1:
     967      if (type == t_eph::GPS) {
     968        if      (iodc >= 240 && iodc <= 247) {
     969          fitInterval =  8.0;
     970        }
     971        else if ((iodc >= 248 && iodc <= 255) ||
     972                 (iodc == 496) ) {
     973          fitInterval = 14.0;
     974        }
     975        else if ((iodc >=  497 && iodc <=  503) ||
     976                 (iodc >= 2021 && iodc <= 1023) ) {
     977          fitInterval = 26.0;
     978        }
     979        else {
     980          fitInterval =  6.0;
     981        }
     982      }
     983      break;
     984  }
     985  return fitInterval;
    946986}
    947987
  • trunk/BNC/src/bncutils.h

    r8775 r8903  
    3434#include <bncconst.h>
    3535#include <ephemeris.h>
     36
     37class t_eph;
     38
     39const double RHO_DEG = 180.0 / M_PI;
     40const double RHO_SEC = 3600.0 * 180.0 / M_PI;
     41const double MJD_J2000 = 51544.5;
     42
     43static const QVector<int> ssrUpdateInt = QVector<int>()  << 1 << 2 << 5 << 10 << 15 << 30
     44                                                         << 60 << 120 << 240 << 300 << 600
     45                                                         << 900 << 1800 << 3600 << 7200
     46                                                         << 10800;
    3647
    3748void         expandEnvVar(QString& str);
     
    137148
    138149int          indexFromAccuracy(double accuracy, t_eph::e_type type);
     150
     151double       fitIntervalFromFlag(int flag, double iodc, t_eph::e_type type);
    139152
    140153double       associatedLegendreFunction(int n, int m, double t);
  • trunk/BNC/src/ephemeris.cpp

    r8800 r8903  
    6262    return failure;
    6363  }
    64   const QVector<int> updateInt = QVector<int>()  << 1 << 2 << 5 << 10 << 15 << 30
    65                                                  << 60 << 120 << 240 << 300 << 600
    66                                                  << 900 << 1800 << 3600 << 7200
    67                                                  << 10800;
     64
    6865  xc.ReSize(6);
    6966  vv.ReSize(3);
     
    7572      double dtO = tt - _orbCorr->_time;
    7673      if (_orbCorr->_updateInt) {
    77         dtO -= (0.5 * updateInt[_orbCorr->_updateInt]);
     74        dtO -= (0.5 * ssrUpdateInt[_orbCorr->_updateInt]);
    7875      }
    7976      ColumnVector dx(3);
     
    9794      double dtC = tt - _clkCorr->_time;
    9895      if (_clkCorr->_updateInt) {
    99         dtC -= (0.5 * updateInt[_clkCorr->_updateInt]);
     96        dtC -= (0.5 * ssrUpdateInt[_clkCorr->_updateInt]);
    10097      }
    10198      xc[3] += _clkCorr->_dClk + _clkCorr->_dotDClk * dtC + _clkCorr->_dotDotDClk * dtC * dtC;
     
    704701  static const double C20   = -1082.6257e-6;
    705702
    706   double rho = rr.norm_Frobenius();
     703  double rho = rr.NormFrobenius();
    707704  double t1  = -gmWGS/(rho*rho*rho);
    708705  double t2  = 3.0/2.0 * C20 * (gmWGS*AE*AE) / (rho*rho*rho*rho*rho);
Note: See TracChangeset for help on using the changeset viewer.