Changeset 1270 in ntrip


Ignore:
Timestamp:
Dec 3, 2008, 9:33:16 AM (15 years ago)
Author:
stoecker
Message:

fixed problem with joined RTCM blocks

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/rtcm3torinex/rtcm3torinex.c

    r1265 r1270  
    11/*
    22  Converter for RTCM3 data to RINEX.
    3   $Id: rtcm3torinex.c,v 1.34 2008/11/26 10:14:46 stoecker Exp $
     3  $Id: rtcm3torinex.c,v 1.35 2008/12/02 15:50:20 stoecker Exp $
    44  Copyright (C) 2005-2008 by Dirk Stöcker <stoecker@alberding.eu>
    55
     
    5151
    5252/* CVS revision and version */
    53 static char revisionstr[] = "$Revision: 1.34 $";
     53static char revisionstr[] = "$Revision: 1.35 $";
    5454
    5555#ifndef COMPILEDATE
     
    459459        int lastlockl2[64];
    460460        struct gnssdata *gnss;
    461         int i, num, wasamb=0;
     461        int i, numsats, wasamb=0;
    462462
    463463        for(i = 0; i < 64; ++i)
     
    482482
    483483        GETBITS(syncf,1) /* sync */
    484         GETBITS(i,5)
    485         gnss->numsats += i;
     484        GETBITS(numsats,5)
    486485        SKIPBITS(4) /* smind, smint */
    487486
    488         for(num = gnss->numsats-i; num < gnss->numsats; ++num)
     487        while(numsats--)
    489488        {
    490489          int sv, code, l1range, c,l,s,ce,le,se,amb=0;
    491 
    492           GETBITS(sv, 6);
    493           gnss->satellites[num] = (sv < 40 ? sv : sv+80);
     490          int fullsat, num;
     491
     492          GETBITS(sv, 6)
     493          fullsat = sv < 40 ? sv : sv+80;
     494          for(num = 0; num < gnss->numsats
     495          && fullsat != gnss->satellites[num]; ++num)
     496            ;
     497
     498          if(num == gnss->numsats)
     499            gnss->satellites[gnss->numsats++] = fullsat;
     500
    494501          /* L1 */
    495502          GETBITS(code, 1);
     
    617624        int lastlockl2[64];
    618625        struct gnssdata *gnss;
    619         int i, num;
     626        int i, numsats;
    620627        int wasamb=0;
    621628
     
    642649
    643650        GETBITS(syncf,1) /* sync */
    644         GETBITS(i,5)
    645         gnss->numsats += i;
     651        GETBITS(numsats,5)
    646652
    647653        SKIPBITS(4) /* smind, smint */
    648654
    649         for(num = gnss->numsats-i; num < gnss->numsats; ++num)
     655        while(numsats--)
    650656        {
    651657          int sv, code, l1range, c,l,s,ce,le,se,amb=0;
    652658          int freq;
     659          int fullsat, num;
    653660
    654661          GETBITS(sv, 6)
    655           gnss->satellites[num] = sv-1 + PRN_GLONASS_START;
     662          fullsat = sv-1 + PRN_GLONASS_START;
     663          for(num = 0; num < gnss->numsats
     664          && fullsat != gnss->satellites[num]; ++num)
     665            ;
     666
     667          if(num == gnss->numsats)
     668            gnss->satellites[gnss->numsats++] = fullsat;
     669
    656670          /* L1 */
    657671          GETBITS(code, 1)
     
    754768            gnss->measdata[num][le] /= GLO_WAVELENGTH_L2(freq-7);
    755769          }
    756           if(!sv || sv > 24)
    757           {
    758             --num; --gnss->numsats;
    759           }
     770          if(!sv || sv > 24) /* illegal, remove it again */
     771            --gnss->numsats;
    760772        }
    761773        for(i = 0; i < 64; ++i)
     
    16731685
    16741686#ifndef NO_RTCM3_MAIN
    1675 static char datestr[]     = "$Date: 2008/11/26 10:14:46 $";
     1687static char datestr[]     = "$Date: 2008/12/02 15:50:20 $";
    16761688
    16771689/* The string, which is send as agent in HTTP request */
Note: See TracChangeset for help on using the changeset viewer.