Changeset 1835 in ntrip


Ignore:
Timestamp:
May 7, 2009, 11:45:00 AM (15 years ago)
Author:
mervart
Message:

* empty log message *

File:
1 edited

Legend:

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

    r1834 r1835  
    152152      if (irc == GCOBR_OK) {
    153153        reopen();
     154
     155        // Guess GPS week and sec using system time
     156        // ----------------------------------------
    154157        int    GPSweek;
    155         currentGPSWeeks(GPSweek, _GPSweeks);
     158        double GPSweeksHlp;
     159        currentGPSWeeks(GPSweek, GPSweeksHlp);
     160
     161        // Correction Epoch from GPSEpochTime
     162        // ----------------------------------
    156163        if (_co.NumberOfGPSSat > 0) {
    157           if      (_GPSweeks > _co.GPSEpochTime + 86400.0) {
     164          if      (GPSweeksHlp > _co.GPSEpochTime + 86400.0) {
    158165            GPSweek += 1;
    159166          }
    160           else if (_GPSweeks < _co.GPSEpochTime - 86400.0) {
     167          else if (GPSweeksHlp < _co.GPSEpochTime - 86400.0) {
    161168            GPSweek -= 1;
    162169          }
    163170          _GPSweeks = _co.GPSEpochTime;
    164171        }
     172
     173        // Correction Epoch from Glonass Epoch
     174        // -----------------------------------
    165175        else {
    166 
    167           // Guess GPS week and sec using system time
    168           // ----------------------------------------
    169           int week;
    170           double sec;
    171           currentGPSWeeks(week, sec);
    172           int weekDay      = int(sec/86400.0);
    173           int GPSDaySecHlp = int(sec) - weekDay * 86400;
    174 
    175           // cout << "week, sec " << week << " " << sec << endl;
    176176
    177177          // Second of day (GPS time) from Glonass Epoch
    178178          // -------------------------------------------
    179           QDate date = dateAndTimeFromGPSweek(week, sec).date();
     179          QDate date = dateAndTimeFromGPSweek(GPSweek, GPSweeksHlp).date();
    180180          int leapSecond = gnumleap(date.year(), date.month(), date.day());
    181181          int GPSDaySec  = _co.GLONASSEpochTime + 3 * 3600 + leapSecond;
    182182
    183           // cout << "GlonassEpoch, leapSecond, GPSDaySec "
    184           //      << _co.GLONASSEpochTime << " " << leapSecond << " "
    185           //      << GPSDaySec << endl;
     183          int weekDay      = int(GPSweeksHlp/86400.0);
     184          int GPSDaySecHlp = int(GPSweeksHlp) - weekDay * 86400;
    186185
    187186          // Handle the difference between system clock and correction epoch
     
    189188          if      (GPSDaySec < GPSDaySecHlp - 3600) {
    190189            weekDay += 1;
     190            if (weekDay > 6) {
     191              weekDay = 0;
     192              GPSweek += 1;
     193            }
    191194          }
    192195          else if (GPSDaySec > GPSDaySecHlp + 3600) {
    193196            weekDay -= 1;
     197            if (weekDay < 0) {
     198              weekDay = 6;
     199              GPSweek -= 1;
     200            }
    194201          }
    195202
    196203          _GPSweeks = weekDay * 86400.0 + GPSDaySec;
    197                      
    198           // cout << "weekDay, _GPSweeks " << weekDay << " "
    199           //      << _GPSweeks << endl;
    200204        }
    201205
Note: See TracChangeset for help on using the changeset viewer.