Changeset 1662 in ntrip


Ignore:
Timestamp:
Feb 26, 2009, 10:48:01 PM (15 years ago)
Author:
weber
Message:

* empty log message *

Location:
trunk/BNS/RTCM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNS/RTCM/clock_orbit_rtcm.c

    r1660 r1662  
    33        Name:           clock_orbit_rtcm.c
    44        Project:        RTCM3
    5         Version:        $Id: clock_orbit_rtcm.c,v 1.3 2009/02/12 11:56:16 stoecker Exp $
     5        Version:        $Id: clock_orbit_rtcm.c,v 1.5 2008/11/18 14:50:37 mervart Exp $
    66        Authors:        Dirk Stöcker
    77        Description:    state space approach for RTCM3
     
    8585#define SCALEADDBITS(a, b, c) ADDBITS(a, (int64_t)(b*c))
    8686
     87#if 0
     88#define DEBUGSCALEADDBITS(n, a, b, c) \
     89  { \
     90    int64_t x = b*c, z; \
     91    uint64_t y; \
     92    y = (x&((1<<a)-1)); \
     93    z = ((int64_t)(y<<(64-a)))>>(64-a); \
     94    fprintf(stderr, "Type " # n " val %19.15f*%11.1f %16llX %16llX %16llX %s\n", \
     95    c, b, x, y, z, x != z ? "OVERFLOW" : "OK"); \
     96  } \
     97  SCALEADDBITS(a,b,c)
     98#else
     99#define DEBUGSCALEADDBITS(n, a, b, c) SCALEADDBITS(a,b,c)
     100#endif
     101
    87102/* standard values */
    88103#define T_MESSAGE_NUMBER(a)              ADDBITS(12, a) /* DF002 */
    89 #define T_RESERVED5                      ADDBITS(5, 0)  /* DF001 */
     104#define T_RESERVED6                      ADDBITS(6, 0)  /* DF001 */
    90105#define T_GPS_SATELLITE_ID(a)            ADDBITS(6, a)  /* DF068 */
    91106#define T_GPS_IODE(a)                    ADDBITS(8, a)  /* DF071 */
     
    93108
    94109/* defined values */
    95 #define T_DELTA_RADIAL(a)                SCALEADDBITS(22, 10000.0, a)
    96 #define T_DELTA_ALONG_TRACK(a)           SCALEADDBITS(22, 10000.0, a)
    97 #define T_DELTA_CROSS_TRACK(a)           SCALEADDBITS(22, 10000.0, a)
    98 #define T_DELTA_DOT_RADIAL(a)            SCALEADDBITS(21, 1000000.0, a)
    99 #define T_DELTA_DOT_ALONG_TRACK(a)       SCALEADDBITS(21, 1000000.0, a)
    100 #define T_DELTA_DOT_CROSS_TRACK(a)       SCALEADDBITS(21, 1000000.0, a)
    101 #define T_DELTA_DOT_DOT_RADIAL(a)        SCALEADDBITS(27, 50000000.0, a)
    102 #define T_DELTA_DOT_DOT_ALONG_TRACK(a)   SCALEADDBITS(27, 50000000.0, a)
    103 #define T_DELTA_DOT_DOT_CROSS_TRACK(a)   SCALEADDBITS(27, 50000000.0, a)
    104 #define T_SATELLITE_REFERENCE_POINT(a)   ADDBITS(1, a)
    105 
    106 #define T_SATELLITE_REFERENCE_DATUM(a)   ADDBITS(1, a)
    107 #define T_DELTA_CLOCK_C0(a)              SCALEADDBITS(22, 10000.0, a)
    108 #define T_DELTA_CLOCK_C1(a)              SCALEADDBITS(21, 1000000.0, a)
    109 #define T_DELTA_CLOCK_C2(a)              SCALEADDBITS(27, 50000000.0, a)
    110 #define T_NO_OF_CODE_BIASES(a)           ADDBITS(5, a)
    111 #define T_GPS_SIGNAL_IDENTIFIER(a)       ADDBITS(5, a)
    112 #define T_GLONASS_SIGNAL_IDENTIFIER(a)   ADDBITS(5, a)
    113 #define T_GALILEO_SIGNAL_IDENTIFIER(a)   ADDBITS(5, a)
    114 #define T_CODE_BIAS(a)                   SCALEADDBITS(14, 100.0, a)
    115 #define T_GLONASS_SATELLITE_ID(a)        ADDBITS(5, a)
    116 
     110#define T_MULTIPLE_MESSAGE_INDICATOR(a)  ADDBITS(1, a)
    117111#define T_GPS_EPOCH_TIME(a)              ADDBITS(20, a)
    118112#define T_GLONASS_EPOCH_TIME(a)          ADDBITS(17, a)
    119 #define T_NO_OF_SATELLITES(a)            ADDBITS(6, a)
    120 #define T_MULTIPLE_MESSAGE_INDICATOR(a)  ADDBITS(1, a)
    121 #define T_SSR_URA(a)                     ADDBITS(4, a)
    122 #define T_HR_CLOCK_CORRECTION(a)         SCALEADDBITS(22, 10000.0, a)
    123 #define T_SSR_UPDATE_INTERVAL(a)         ADDBITS(4, a)
     113#define T_GLONASS_SATELLITE_ID(a)        ADDBITS(6, a)
     114#define T_NO_OF_SATELLITES(a)            ADDBITS(5, a)
     115#define T_SATELLITE_REFERENCE_POINT(a)   ADDBITS(1, a)
     116#define T_SATELLITE_REFERENCE_DATUM(a)   ADDBITS(1, a)
     117#define T_NO_OF_CODE_BIASES(a)           ADDBITS(5, a)
     118#define T_GPS_CODE_TYPE(a)               ADDBITS(5, a)
     119#define T_GLONASS_CODE_TYPE(a)           ADDBITS(5, a)
     120
     121/* yet undefined values */
     122#define T_DELTA_RADIAL(a)                DEBUGSCALEADDBITS(dr, 20, 1000.0, a)
     123#define T_DELTA_ALONG_TRACK(a)           DEBUGSCALEADDBITS(da, 20, 1000.0, a)
     124#define T_DELTA_CROSS_TRACK(a)           DEBUGSCALEADDBITS(dc, 20, 1000.0, a)
     125#define T_DELTA_DOT_RADIAL(a)            DEBUGSCALEADDBITS(Dr, 20, 100000.0, a)
     126#define T_DELTA_DOT_ALONG_TRACK(a)       DEBUGSCALEADDBITS(Dr, 20, 100000.0, a)
     127#define T_DELTA_DOT_CROSS_TRACK(a)       DEBUGSCALEADDBITS(Dr, 20, 100000.0, a)
     128#define T_DELTA_DOT_DOT_RADIAL(a)        DEBUGSCALEADDBITS(DR, 20, 5000000.0, a)
     129#define T_DELTA_DOT_DOT_ALONG_TRACK(a)   DEBUGSCALEADDBITS(DA, 20, 5000000.0, a)
     130#define T_DELTA_DOT_DOT_CROSS_TRACK(a)   DEBUGSCALEADDBITS(DC, 20, 5000000.0, a)
     131#define T_DELTA_A0(a)                    DEBUGSCALEADDBITS(A0, 20, 1000.0, a)
     132#define T_DELTA_A1(a)                    DEBUGSCALEADDBITS(A1, 20, 100000.0, a)
     133#define T_DELTA_A2(a)                    DEBUGSCALEADDBITS(A2, 20, 5000000.0, a)
     134#define T_CODE_BIAS(a)                   DEBUGSCALEADDBITS(CB, 20, 100.0, a)
    124135
    125136size_t MakeClockOrbit(const struct ClockOrbit *co, enum ClockOrbitType type,
    126137int moremessagesfollow, char *buffer, size_t size)
    127138{
    128   int gpshr=0, gpsur=0, gpsor=0, gpscl=0, gpsco=0, glohr=0, glour=0, gloor=0,
    129   glocl=0, gloco=0, mmi, i;
     139  int gpsor=0, gpscl=0, gpsco=0, gloor=0, glocl=0, gloco=0, mmi, i;
    130140  STARTDATA
    131141
    132   if(co->NumberOfGPSSat && co->HRDataSupplied
    133   && (type == COTYPE_AUTO || type == COTYPE_GPSHR))
    134     gpshr = 1;
    135   if(co->NumberOfGPSSat && co->URADataSupplied
    136   && (type == COTYPE_AUTO || type == COTYPE_GPSURA))
    137     gpsur = 1;
    138142  if(co->NumberOfGPSSat && co->OrbitDataSupplied
    139143  && (type == COTYPE_AUTO || type == COTYPE_GPSORBIT))
     
    147151    gpsco = 1; gpsor = 0; gpscl = 0;
    148152  }
    149   if(co->NumberOfGLONASSSat && co->HRDataSupplied
    150   && (type == COTYPE_AUTO || type == COTYPE_GLONASSHR))
    151     glohr = 1;
    152   if(co->NumberOfGLONASSSat && co->URADataSupplied
    153   && (type == COTYPE_AUTO || type == COTYPE_GLONASSURA))
    154     glour = 1;
    155153  if(co->NumberOfGLONASSSat && co->OrbitDataSupplied
    156154  && (type == COTYPE_AUTO || type == COTYPE_GLONASSORBIT))
     
    165163  }
    166164
    167   mmi = gpshr+gpsur+gpsor+gpscl+gpsco+glohr+glour+gloor+glocl+gloco; /* required for multimessage */
     165  mmi = gpsor+gpscl+gpsco+gloor+glocl+gloco; /* required for multimessage */
    168166  if(!moremessagesfollow) --mmi;
    169167
     
    173171    T_MESSAGE_NUMBER(COTYPE_GPSORBIT)
    174172    T_GPS_EPOCH_TIME(co->GPSEpochTime)
    175     T_SSR_UPDATE_INTERVAL(co->UpdateInterval)
    176     T_MULTIPLE_MESSAGE_INDICATOR(mmi ? 1 :0)
    177     --mmi;
    178     T_RESERVED5
     173    T_MULTIPLE_MESSAGE_INDICATOR(mmi ? 1 :0)
     174    --mmi;
     175    T_RESERVED6
    179176    T_NO_OF_SATELLITES(co->NumberOfGPSSat)
    180177    for(i = 0; i < co->NumberOfGPSSat; ++i)
     
    201198    T_MESSAGE_NUMBER(COTYPE_GPSCLOCK)
    202199    T_GPS_EPOCH_TIME(co->GPSEpochTime)
    203     T_SSR_UPDATE_INTERVAL(co->UpdateInterval)
    204     T_MULTIPLE_MESSAGE_INDICATOR(mmi ? 1 :0)
    205     --mmi;
    206     T_RESERVED5
     200    T_MULTIPLE_MESSAGE_INDICATOR(mmi ? 1 :0)
     201    --mmi;
     202    T_RESERVED6
    207203    T_NO_OF_SATELLITES(co->NumberOfGPSSat)
    208204    for(i = 0; i < co->NumberOfGPSSat; ++i)
    209205    {
    210206      T_GPS_SATELLITE_ID(co->Sat[i].ID)
    211       T_DELTA_CLOCK_C0(co->Sat[i].Clock.DeltaA0)
    212       T_DELTA_CLOCK_C1(co->Sat[i].Clock.DeltaA1)
    213       T_DELTA_CLOCK_C2(co->Sat[i].Clock.DeltaA2)
     207      T_GPS_IODE(co->Sat[i].IOD)
     208      T_DELTA_A0(co->Sat[i].Clock.DeltaA0)
     209      T_DELTA_A1(co->Sat[i].Clock.DeltaA1)
     210      T_DELTA_A2(co->Sat[i].Clock.DeltaA2)
    214211    }
    215212    ENDBLOCK
     
    220217    T_MESSAGE_NUMBER(COTYPE_GPSCOMBINED)
    221218    T_GPS_EPOCH_TIME(co->GPSEpochTime)
    222     T_SSR_UPDATE_INTERVAL(co->UpdateInterval)
    223     T_MULTIPLE_MESSAGE_INDICATOR(mmi ? 1 :0)
    224     --mmi;
    225     T_RESERVED5
     219    T_MULTIPLE_MESSAGE_INDICATOR(mmi ? 1 :0)
     220    --mmi;
     221    T_RESERVED6
    226222    T_NO_OF_SATELLITES(co->NumberOfGPSSat)
    227223    for(i = 0; i < co->NumberOfGPSSat; ++i)
     
    240236      T_SATELLITE_REFERENCE_POINT(co->SatRefPoint)
    241237      T_SATELLITE_REFERENCE_DATUM(co->SatRefDatum)
    242       T_DELTA_CLOCK_C0(co->Sat[i].Clock.DeltaA0)
    243       T_DELTA_CLOCK_C1(co->Sat[i].Clock.DeltaA1)
    244       T_DELTA_CLOCK_C2(co->Sat[i].Clock.DeltaA2)
    245     }
    246     ENDBLOCK
    247   }
    248   if(gpshr)
    249   {
    250     INITBLOCK
    251     T_MESSAGE_NUMBER(COTYPE_GPSHR)
    252     T_GPS_EPOCH_TIME(co->GPSEpochTime)
    253     T_SSR_UPDATE_INTERVAL(co->UpdateInterval)
    254     T_MULTIPLE_MESSAGE_INDICATOR(mmi ? 1 :0)
    255     --mmi;
    256     T_RESERVED5
    257     T_NO_OF_SATELLITES(co->NumberOfGPSSat)
    258     for(i = 0; i < co->NumberOfGPSSat; ++i)
    259     {
    260       T_GPS_SATELLITE_ID(co->Sat[i].ID)
    261       T_HR_CLOCK_CORRECTION(co->Sat[i].hrclock)
    262     }
    263     ENDBLOCK
    264   }
    265   if(gpsur)
    266   {
    267     INITBLOCK
    268     T_MESSAGE_NUMBER(COTYPE_GPSURA)
    269     T_GPS_EPOCH_TIME(co->GPSEpochTime)
    270     T_MULTIPLE_MESSAGE_INDICATOR(mmi ? 1 :0)
    271     --mmi;
    272     T_RESERVED5
    273     T_NO_OF_SATELLITES(co->NumberOfGPSSat)
    274     for(i = 0; i < co->NumberOfGPSSat; ++i)
    275     {
    276       T_GPS_SATELLITE_ID(co->Sat[i].ID)
    277       T_SSR_URA(co->Sat[i].URA)
     238      T_DELTA_A0(co->Sat[i].Clock.DeltaA0)
     239      T_DELTA_A1(co->Sat[i].Clock.DeltaA1)
     240      T_DELTA_A2(co->Sat[i].Clock.DeltaA2)
    278241    }
    279242    ENDBLOCK
     
    284247    T_MESSAGE_NUMBER(COTYPE_GLONASSORBIT)
    285248    T_GLONASS_EPOCH_TIME(co->GLONASSEpochTime)
    286     T_SSR_UPDATE_INTERVAL(co->UpdateInterval)
    287     T_MULTIPLE_MESSAGE_INDICATOR(mmi ? 1 :0)
    288     --mmi;
    289     T_RESERVED5
     249    T_MULTIPLE_MESSAGE_INDICATOR(mmi ? 1 :0)
     250    --mmi;
     251    T_RESERVED6
    290252    T_NO_OF_SATELLITES(co->NumberOfGLONASSSat)
    291253    for(i = CLOCKORBIT_NUMGPS;
     
    313275    T_MESSAGE_NUMBER(COTYPE_GLONASSCLOCK)
    314276    T_GLONASS_EPOCH_TIME(co->GLONASSEpochTime)
    315     T_SSR_UPDATE_INTERVAL(co->UpdateInterval)
    316     T_MULTIPLE_MESSAGE_INDICATOR(mmi ? 1 :0)
    317     --mmi;
    318     T_RESERVED5
     277    T_MULTIPLE_MESSAGE_INDICATOR(mmi ? 1 :0)
     278    --mmi;
     279    T_RESERVED6
    319280    T_NO_OF_SATELLITES(co->NumberOfGLONASSSat)
    320281    for(i = CLOCKORBIT_NUMGPS;
     
    323284      T_GLONASS_SATELLITE_ID(co->Sat[i].ID)
    324285      T_GLONASS_IOD(co->Sat[i].IOD)
    325       T_DELTA_CLOCK_C0(co->Sat[i].Clock.DeltaA0)
    326       T_DELTA_CLOCK_C1(co->Sat[i].Clock.DeltaA1)
    327       T_DELTA_CLOCK_C2(co->Sat[i].Clock.DeltaA2)
     286      T_DELTA_A0(co->Sat[i].Clock.DeltaA0)
     287      T_DELTA_A1(co->Sat[i].Clock.DeltaA1)
     288      T_DELTA_A2(co->Sat[i].Clock.DeltaA2)
    328289    }
    329290    ENDBLOCK
     
    334295    T_MESSAGE_NUMBER(COTYPE_GLONASSCOMBINED)
    335296    T_GLONASS_EPOCH_TIME(co->GLONASSEpochTime)
    336     T_SSR_UPDATE_INTERVAL(co->UpdateInterval)
    337     T_MULTIPLE_MESSAGE_INDICATOR(mmi ? 1 :0)
    338     --mmi;
    339     T_RESERVED5
     297    T_MULTIPLE_MESSAGE_INDICATOR(mmi ? 1 :0)
     298    --mmi;
     299    T_RESERVED6
    340300    T_NO_OF_SATELLITES(co->NumberOfGLONASSSat)
    341301    for(i = CLOCKORBIT_NUMGPS;
     
    355315      T_SATELLITE_REFERENCE_POINT(co->SatRefPoint)
    356316      T_SATELLITE_REFERENCE_DATUM(co->SatRefDatum)
    357       T_DELTA_CLOCK_C0(co->Sat[i].Clock.DeltaA0)
    358       T_DELTA_CLOCK_C1(co->Sat[i].Clock.DeltaA1)
    359       T_DELTA_CLOCK_C2(co->Sat[i].Clock.DeltaA2)
    360     }
    361     ENDBLOCK
    362   }
    363   if(glohr)
    364   {
    365     INITBLOCK
    366     T_MESSAGE_NUMBER(COTYPE_GLONASSHR)
    367     T_GLONASS_EPOCH_TIME(co->GLONASSEpochTime)
    368     T_SSR_UPDATE_INTERVAL(co->UpdateInterval)
    369     T_MULTIPLE_MESSAGE_INDICATOR(mmi ? 1 :0)
    370     --mmi;
    371     T_RESERVED5
    372     T_NO_OF_SATELLITES(co->NumberOfGLONASSSat)
    373     for(i = CLOCKORBIT_NUMGPS;
    374     i < CLOCKORBIT_NUMGPS+co->NumberOfGLONASSSat; ++i)
    375     {
    376       T_GPS_SATELLITE_ID(co->Sat[i].ID)
    377       T_HR_CLOCK_CORRECTION(co->Sat[i].hrclock)
    378     }
    379     ENDBLOCK
    380   }
    381   if(glour)
    382   {
    383     INITBLOCK
    384     T_MESSAGE_NUMBER(COTYPE_GLONASSURA)
    385     T_GLONASS_EPOCH_TIME(co->GLONASSEpochTime)
    386     T_MULTIPLE_MESSAGE_INDICATOR(mmi ? 1 :0)
    387     --mmi;
    388     T_RESERVED5
    389     T_NO_OF_SATELLITES(co->NumberOfGLONASSSat)
    390     for(i = CLOCKORBIT_NUMGPS;
    391     i < CLOCKORBIT_NUMGPS+co->NumberOfGLONASSSat; ++i)
    392     {
    393       T_GPS_SATELLITE_ID(co->Sat[i].ID)
    394       T_SSR_URA(co->Sat[i].URA)
     317      T_DELTA_A0(co->Sat[i].Clock.DeltaA0)
     318      T_DELTA_A1(co->Sat[i].Clock.DeltaA1)
     319      T_DELTA_A2(co->Sat[i].Clock.DeltaA2)
    395320    }
    396321    ENDBLOCK
     
    403328int moremessagesfollow, char *buffer, size_t size)
    404329{
    405   int gps, glo, mmi, i, j;
     330  int gps = 0;
     331  int glo = 0;
     332  int mmi, i, j;
    406333  STARTDATA
    407334
     
    419346    T_MESSAGE_NUMBER(BTYPE_GPS)
    420347    T_GPS_EPOCH_TIME(b->GPSEpochTime)
    421     T_SSR_UPDATE_INTERVAL(b->UpdateInterval)
    422     T_MULTIPLE_MESSAGE_INDICATOR(mmi ? 1 :0)
    423     --mmi;
    424     T_RESERVED5
     348    T_MULTIPLE_MESSAGE_INDICATOR(mmi ? 1 :0)
     349    --mmi;
     350    T_RESERVED6
    425351    T_NO_OF_SATELLITES(b->NumberOfGPSSat)
    426352    for(i = 0; i < b->NumberOfGPSSat; ++i)
     
    430356      for(j = 0; j < b->Sat[i].NumberOfCodeBiases; ++j)
    431357      {
    432         T_GPS_SIGNAL_IDENTIFIER(b->Sat[i].Biases[j].Type)
     358        T_GPS_CODE_TYPE(b->Sat[i].Biases[j].Type)
    433359        T_CODE_BIAS(b->Sat[i].Biases[j].Bias)
    434360      }
     
    441367    T_MESSAGE_NUMBER(BTYPE_GLONASS)
    442368    T_GPS_EPOCH_TIME(b->GLONASSEpochTime)
    443     T_SSR_UPDATE_INTERVAL(b->UpdateInterval)
    444     T_MULTIPLE_MESSAGE_INDICATOR(mmi ? 1 :0)
    445     --mmi;
    446     T_RESERVED5
     369    T_MULTIPLE_MESSAGE_INDICATOR(mmi ? 1 :0)
     370    --mmi;
     371    T_RESERVED6
    447372    T_NO_OF_SATELLITES(b->NumberOfGLONASSSat)
    448373    for(i = CLOCKORBIT_NUMGPS;
     
    453378      for(j = 0; j < b->Sat[i].NumberOfCodeBiases; ++j)
    454379      {
    455         T_GLONASS_SIGNAL_IDENTIFIER(b->Sat[i].Biases[j].Type)
     380        T_GLONASS_CODE_TYPE(b->Sat[i].Biases[j].Type)
    456381        T_CODE_BIAS(b->Sat[i].Biases[j].Bias)
    457382      }
     
    462387  return ressize;
    463388}
    464 
    465389#endif /* NOENCODE */
    466390
     
    506430#define G_SIZE(a)                        GETBITS(a, 10)
    507431#define G_MESSAGE_NUMBER(a)              GETBITS(a, 12) /* DF002 */
    508 #define G_RESERVED5                      SKIPBITS(5)    /* DF001 */
     432#define G_RESERVED6                      SKIPBITS(6)    /* DF001 */
    509433#define G_GPS_SATELLITE_ID(a)            {int temp; GETBITS(temp, 6) \
    510434 if(a && a != temp) return GCOBR_DATAMISMATCH; a = temp;}  /* DF068 */
     
    513437
    514438/* defined values */
    515 #define G_DELTA_RADIAL(a)                GETFLOATSIGN(a, 22, 1/10000.0)
    516 #define G_DELTA_ALONG_TRACK(a)           GETFLOATSIGN(a, 22, 1/10000.0)
    517 #define G_DELTA_CROSS_TRACK(a)           GETFLOATSIGN(a, 22, 1/10000.0)
    518 #define G_DELTA_DOT_RADIAL(a)            GETFLOATSIGN(a, 21, 1/1000000.0)
    519 #define G_DELTA_DOT_ALONG_TRACK(a)       GETFLOATSIGN(a, 21, 1/1000000.0)
    520 #define G_DELTA_DOT_CROSS_TRACK(a)       GETFLOATSIGN(a, 21, 1/1000000.0)
    521 #define G_DELTA_DOT_DOT_RADIAL(a)        GETFLOATSIGN(a, 27, 1/50000000.0)
    522 #define G_DELTA_DOT_DOT_ALONG_TRACK(a)   GETFLOATSIGN(a, 27, 1/50000000.0)
    523 #define G_DELTA_DOT_DOT_CROSS_TRACK(a)   GETFLOATSIGN(a, 27, 1/50000000.0)
    524 #define G_SATELLITE_REFERENCE_POINT(a)   GETBITS(a, 1)
    525 
    526 #define G_SATELLITE_REFERENCE_DATUM(a)   GETBITS(a, 1)
    527 #define G_DELTA_CLOCK_C0(a)              GETFLOATSIGN(a, 22, 1/10000.0)
    528 #define G_DELTA_CLOCK_C1(a)              GETFLOATSIGN(a, 21, 1/1000000.0)
    529 #define G_DELTA_CLOCK_C2(a)              GETFLOATSIGN(a, 27, 1/50000000.0)
    530 #define G_NO_OF_CODE_BIASES(a)           GETBITS(a, 5)
    531 #define G_GPS_SIGNAL_IDENTIFIER(a)       GETBITS(a, 5)
    532 #define G_GLONASS_SIGNAL_IDENTIFIER(a)   GETBITS(a, 5)
    533 #define G_GALILEO_SIGNAL_IDENTIFIER(a)   GETBITS(a, 5)
    534 #define G_CODE_BIAS(a)                   GETFLOATSIGN(a, 14, 1/100.0)
    535 #define G_GLONASS_SATELLITE_ID(a)        {int temp; GETBITS(temp, 5) \
    536  if(a && a != temp) return GCOBR_DATAMISMATCH; a = temp;}
    537 
     439#define G_MULTIPLE_MESSAGE_INDICATOR(a)  GETBITS(a, 1)
    538440#define G_GPS_EPOCH_TIME(a, b)           {int temp; GETBITS(temp, 20) \
    539441 if(b && a != temp) return GCOBR_TIMEMISMATCH; a = temp;}
    540442#define G_GLONASS_EPOCH_TIME(a, b)       {int temp; GETBITS(temp, 17) \
    541443 if(b && a != temp) return GCOBR_TIMEMISMATCH; a = temp;}
    542 #define G_NO_OF_SATELLITES(a)            {int temp; GETBITS(temp, 6) \
     444#define G_GLONASS_SATELLITE_ID(a)        {int temp; GETBITS(temp, 6) \
    543445 if(a && a != temp) return GCOBR_DATAMISMATCH; a = temp;}
    544 #define G_MULTIPLE_MESSAGE_INDICATOR(a)  GETBITS(a, 1)
    545 #define G_SSR_URA(a)                     GETBITS(a, 4)
    546 #define G_HR_CLOCK_CORRECTION(a)         GETFLOATSIGN(a, 22, 1/10000.0)
    547 #define G_SSR_UPDATE_INTERVAL(a)         GETBITS(a, 4)
    548 
    549 #ifdef OLD
    550 enum OldClockOrbitType { OLDCOTYPE_GPSORBIT=4050, OLDCOTYPE_GPSCLOCK=4051,
    551      OLDCOTYPE_GLONASSORBIT=4053, OLDCOTYPE_GLONASSCLOCK=4054,
    552      OLDCOTYPE_GPSCOMBINED=4056, OLDCOTYPE_GLONASSCOMBINED=4057};
    553 enum OldBiasType { OLDBTYPE_GPS=4052, OLDBTYPE_GLONASS=4055};
    554 #define OLD_G_RESERVED6                      SKIPBITS(6)    /* DF001 */
    555 #define OLD_G_GLONASS_SATELLITE_ID(a)        {int temp; GETBITS(temp, 6) \
     446#define G_NO_OF_SATELLITES(a)            {int temp; GETBITS(temp, 5) \
    556447 if(a && a != temp) return GCOBR_DATAMISMATCH; a = temp;}
    557 #define OLD_G_NO_OF_SATELLITES(a)            {int temp; GETBITS(temp, 5) \
    558  if(a && a != temp) return GCOBR_DATAMISMATCH; a = temp;}
    559 #define OLD_G_DELTA_RADIAL(a)                GETFLOATSIGN(a, 20, 1/1000.0)
    560 #define OLD_G_DELTA_ALONG_TRACK(a)           GETFLOATSIGN(a, 20, 1/1000.0)
    561 #define OLD_G_DELTA_CROSS_TRACK(a)           GETFLOATSIGN(a, 20, 1/1000.0)
    562 #define OLD_G_DELTA_DOT_RADIAL(a)            GETFLOATSIGN(a, 20, 1/100000.0)
    563 #define OLD_G_DELTA_DOT_ALONG_TRACK(a)       GETFLOATSIGN(a, 20, 1/100000.0)
    564 #define OLD_G_DELTA_DOT_CROSS_TRACK(a)       GETFLOATSIGN(a, 20, 1/100000.0)
    565 #define OLD_G_DELTA_DOT_DOT_RADIAL(a)        GETFLOATSIGN(a, 20, 1/5000000.0)
    566 #define OLD_G_DELTA_DOT_DOT_ALONG_TRACK(a)   GETFLOATSIGN(a, 20, 1/5000000.0)
    567 #define OLD_G_DELTA_DOT_DOT_CROSS_TRACK(a)   GETFLOATSIGN(a, 20, 1/5000000.0)
    568 #define OLD_G_DELTA_A0(a)                    GETFLOATSIGN(a, 20, 1/1000.0)
    569 #define OLD_G_DELTA_A1(a)                    GETFLOATSIGN(a, 20, 1/100000.0)
    570 #define OLD_G_DELTA_A2(a)                    GETFLOATSIGN(a, 20, 1/5000000.0)
    571 #define OLD_G_CODE_BIAS(a)                   GETFLOATSIGN(a, 20, 1/100.0)
    572 #endif
     448#define G_SATELLITE_REFERENCE_POINT(a)   GETBITS(a, 1)
     449#define G_SATELLITE_REFERENCE_DATUM(a)   GETBITS(a, 1)
     450#define G_NO_OF_CODE_BIASES(a)           GETBITS(a, 5)
     451#define G_GPS_CODE_TYPE(a)               GETBITS(a, 5)
     452#define G_GLONASS_CODE_TYPE(a)           GETBITS(a, 5)
     453
     454/* yet undefined values */
     455#define G_DELTA_RADIAL(a)                GETFLOATSIGN(a, 20, 1/1000.0)
     456#define G_DELTA_ALONG_TRACK(a)           GETFLOATSIGN(a, 20, 1/1000.0)
     457#define G_DELTA_CROSS_TRACK(a)           GETFLOATSIGN(a, 20, 1/1000.0)
     458#define G_DELTA_DOT_RADIAL(a)            GETFLOATSIGN(a, 20, 1/100000.0)
     459#define G_DELTA_DOT_ALONG_TRACK(a)       GETFLOATSIGN(a, 20, 1/100000.0)
     460#define G_DELTA_DOT_CROSS_TRACK(a)       GETFLOATSIGN(a, 20, 1/100000.0)
     461#define G_DELTA_DOT_DOT_RADIAL(a)        GETFLOATSIGN(a, 20, 1/5000000.0)
     462#define G_DELTA_DOT_DOT_ALONG_TRACK(a)   GETFLOATSIGN(a, 20, 1/5000000.0)
     463#define G_DELTA_DOT_DOT_CROSS_TRACK(a)   GETFLOATSIGN(a, 20, 1/5000000.0)
     464#define G_DELTA_A0(a)                    GETFLOATSIGN(a, 20, 1/1000.0)
     465#define G_DELTA_A1(a)                    GETFLOATSIGN(a, 20, 1/100000.0)
     466#define G_DELTA_A2(a)                    GETFLOATSIGN(a, 20, 1/5000000.0)
     467#define G_CODE_BIAS(a)                   GETFLOATSIGN(a, 20, 1/100.0)
    573468
    574469enum GCOB_RETURN GetClockOrbitBias(struct ClockOrbit *co, struct Bias *b,
     
    604499    co->epochGPS[co->epochSize] = co->GPSEpochTime;   /* Weber, for latency */
    605500    if(co->epochSize < 100) {co->epochSize += 1;}     /* Weber, for latency */
    606     G_SSR_UPDATE_INTERVAL(co->UpdateInterval)
    607     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
    608     G_RESERVED5
     501    G_MULTIPLE_MESSAGE_INDICATOR(mmi)
     502    G_RESERVED6
    609503    G_NO_OF_SATELLITES(co->NumberOfGPSSat)
    610504    if(co->OrbitDataSupplied)
     
    633527    co->epochGPS[co->epochSize] = co->GPSEpochTime;   /* Weber, for latency */
    634528    if(co->epochSize < 100) {co->epochSize += 1;}     /* Weber, for latency */
    635     G_SSR_UPDATE_INTERVAL(co->UpdateInterval)
    636     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
    637     G_RESERVED5
     529    G_MULTIPLE_MESSAGE_INDICATOR(mmi)
     530    G_RESERVED6
    638531    G_NO_OF_SATELLITES(co->NumberOfGPSSat)
    639532    if(co->ClockDataSupplied)
     
    643536    {
    644537      G_GPS_SATELLITE_ID(co->Sat[i].ID)
    645       G_DELTA_CLOCK_C0(co->Sat[i].Clock.DeltaA0)
    646       G_DELTA_CLOCK_C1(co->Sat[i].Clock.DeltaA1)
    647       G_DELTA_CLOCK_C2(co->Sat[i].Clock.DeltaA2)
     538      G_GPS_IODE(co->Sat[i].IOD)
     539      G_DELTA_A0(co->Sat[i].Clock.DeltaA0)
     540      G_DELTA_A1(co->Sat[i].Clock.DeltaA1)
     541      G_DELTA_A2(co->Sat[i].Clock.DeltaA2)
    648542    }
    649543    break;
     
    653547    co->epochGPS[co->epochSize] = co->GPSEpochTime;   /* Weber, for latency */
    654548    if(co->epochSize < 100) {co->epochSize += 1;}     /* Weber, for latency */
    655     G_SSR_UPDATE_INTERVAL(co->UpdateInterval)
    656     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
    657     G_RESERVED5
     549    G_MULTIPLE_MESSAGE_INDICATOR(mmi)
     550    G_RESERVED6
    658551    G_NO_OF_SATELLITES(co->NumberOfGPSSat)
    659552    if(co->ClockDataSupplied || co->OrbitDataSupplied)
     
    676569      G_SATELLITE_REFERENCE_POINT(co->SatRefPoint)
    677570      G_SATELLITE_REFERENCE_DATUM(co->SatRefDatum)
    678       G_DELTA_CLOCK_C0(co->Sat[i].Clock.DeltaA0)
    679       G_DELTA_CLOCK_C1(co->Sat[i].Clock.DeltaA1)
    680       G_DELTA_CLOCK_C2(co->Sat[i].Clock.DeltaA2)
    681     }
    682     break;
    683   case COTYPE_GPSURA:
    684     if(!co) return GCOBR_NOCLOCKORBITPARAMETER;
    685     G_GPS_EPOCH_TIME(co->GPSEpochTime, co->NumberOfGPSSat)
    686     co->epochGPS[co->epochSize] = co->GPSEpochTime;   /* Weber, for latency */
    687     if(co->epochSize < 100) {co->epochSize += 1;}     /* Weber, for latency */
    688     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
    689     G_RESERVED5
    690     G_NO_OF_SATELLITES(co->NumberOfGPSSat)
    691     if(co->URADataSupplied)
    692       return GCOBR_DATAMISMATCH;
    693     co->URADataSupplied = 1;
    694     for(i = 0; i < co->NumberOfGPSSat; ++i)
    695     {
    696       G_GPS_SATELLITE_ID(co->Sat[i].ID)
    697       G_SSR_URA(co->Sat[i].URA)
    698     }
    699     break;
    700   case COTYPE_GPSHR:
    701     if(!co) return GCOBR_NOCLOCKORBITPARAMETER;
    702     G_GPS_EPOCH_TIME(co->GPSEpochTime, co->NumberOfGPSSat)
    703     co->epochGPS[co->epochSize] = co->GPSEpochTime;   /* Weber, for latency */
    704     if(co->epochSize < 100) {co->epochSize += 1;}     /* Weber, for latency */
    705     G_SSR_UPDATE_INTERVAL(co->UpdateInterval)
    706     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
    707     G_RESERVED5
    708     G_NO_OF_SATELLITES(co->NumberOfGPSSat)
    709     if(co->HRDataSupplied)
    710       return GCOBR_DATAMISMATCH;
    711     co->HRDataSupplied = 1;
    712     for(i = 0; i < co->NumberOfGPSSat; ++i)
    713     {
    714       G_GPS_SATELLITE_ID(co->Sat[i].ID)
    715       G_HR_CLOCK_CORRECTION(co->Sat[i].hrclock)
     571      G_DELTA_A0(co->Sat[i].Clock.DeltaA0)
     572      G_DELTA_A1(co->Sat[i].Clock.DeltaA1)
     573      G_DELTA_A2(co->Sat[i].Clock.DeltaA2)
    716574    }
    717575    break;
     
    719577    if(!co) return GCOBR_NOCLOCKORBITPARAMETER;
    720578    G_GLONASS_EPOCH_TIME(co->GLONASSEpochTime, co->NumberOfGLONASSSat)
    721     G_SSR_UPDATE_INTERVAL(co->UpdateInterval)
    722     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
    723     G_RESERVED5
     579    G_MULTIPLE_MESSAGE_INDICATOR(mmi)
     580    G_RESERVED6
    724581    G_NO_OF_SATELLITES(co->NumberOfGLONASSSat)
    725582    if(co->OrbitDataSupplied)
     
    747604    if(!co) return GCOBR_NOCLOCKORBITPARAMETER;
    748605    G_GLONASS_EPOCH_TIME(co->GLONASSEpochTime, co->NumberOfGLONASSSat)
    749     G_SSR_UPDATE_INTERVAL(co->UpdateInterval)
    750     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
    751     G_RESERVED5
     606    G_MULTIPLE_MESSAGE_INDICATOR(mmi)
     607    G_RESERVED6
    752608    G_NO_OF_SATELLITES(co->NumberOfGLONASSSat)
    753609    if(co->ClockDataSupplied)
     
    758614    {
    759615      G_GLONASS_SATELLITE_ID(co->Sat[i].ID)
    760       G_DELTA_CLOCK_C0(co->Sat[i].Clock.DeltaA0)
    761       G_DELTA_CLOCK_C1(co->Sat[i].Clock.DeltaA1)
    762       G_DELTA_CLOCK_C2(co->Sat[i].Clock.DeltaA2)
     616      G_GLONASS_IOD(co->Sat[i].IOD)
     617      G_DELTA_A0(co->Sat[i].Clock.DeltaA0)
     618      G_DELTA_A1(co->Sat[i].Clock.DeltaA1)
     619      G_DELTA_A2(co->Sat[i].Clock.DeltaA2)
    763620    }
    764621    break;
     
    766623    if(!co) return GCOBR_NOCLOCKORBITPARAMETER;
    767624    G_GLONASS_EPOCH_TIME(co->GLONASSEpochTime, co->NumberOfGLONASSSat)
    768     G_SSR_UPDATE_INTERVAL(co->UpdateInterval)
    769     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
    770     G_RESERVED5
     625    G_MULTIPLE_MESSAGE_INDICATOR(mmi)
     626    G_RESERVED6
    771627    G_NO_OF_SATELLITES(co->NumberOfGLONASSSat)
    772628    if(co->ClockDataSupplied || co->OrbitDataSupplied)
     
    790646      G_SATELLITE_REFERENCE_POINT(co->SatRefPoint)
    791647      G_SATELLITE_REFERENCE_DATUM(co->SatRefDatum)
    792       G_DELTA_CLOCK_C0(co->Sat[i].Clock.DeltaA0)
    793       G_DELTA_CLOCK_C1(co->Sat[i].Clock.DeltaA1)
    794       G_DELTA_CLOCK_C2(co->Sat[i].Clock.DeltaA2)
    795     }
    796     break;
    797   case COTYPE_GLONASSURA:
    798     if(!co) return GCOBR_NOCLOCKORBITPARAMETER;
    799     G_GLONASS_EPOCH_TIME(co->GLONASSEpochTime, co->NumberOfGLONASSSat)
    800     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
    801     G_RESERVED5
    802     G_NO_OF_SATELLITES(co->NumberOfGLONASSSat)
    803     if(co->URADataSupplied)
    804       return GCOBR_DATAMISMATCH;
    805     co->URADataSupplied = 1;
    806     for(i = CLOCKORBIT_NUMGPS;
    807     i < CLOCKORBIT_NUMGPS+co->NumberOfGLONASSSat; ++i)
    808     {
    809       G_GLONASS_SATELLITE_ID(co->Sat[i].ID)
    810       G_SSR_URA(co->Sat[i].URA)
    811     }
    812     break;
    813   case COTYPE_GLONASSHR:
    814     if(!co) return GCOBR_NOCLOCKORBITPARAMETER;
    815     G_GLONASS_EPOCH_TIME(co->GLONASSEpochTime, co->NumberOfGLONASSSat)
    816     G_SSR_UPDATE_INTERVAL(co->UpdateInterval)
    817     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
    818     G_RESERVED5
    819     G_NO_OF_SATELLITES(co->NumberOfGLONASSSat)
    820     if(co->HRDataSupplied)
    821       return GCOBR_DATAMISMATCH;
    822     co->HRDataSupplied = 1;
    823     for(i = CLOCKORBIT_NUMGPS;
    824     i < CLOCKORBIT_NUMGPS+co->NumberOfGLONASSSat; ++i)
    825     {
    826       G_GLONASS_SATELLITE_ID(co->Sat[i].ID)
    827       G_HR_CLOCK_CORRECTION(co->Sat[i].hrclock)
     648      G_DELTA_A0(co->Sat[i].Clock.DeltaA0)
     649      G_DELTA_A1(co->Sat[i].Clock.DeltaA1)
     650      G_DELTA_A2(co->Sat[i].Clock.DeltaA2)
    828651    }
    829652    break;
     
    831654    if(!b) return GCOBR_NOBIASPARAMETER;
    832655    G_GPS_EPOCH_TIME(b->GPSEpochTime, co->NumberOfGPSSat)
    833     G_SSR_UPDATE_INTERVAL(co->UpdateInterval)
    834     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
    835     G_RESERVED5
     656    G_MULTIPLE_MESSAGE_INDICATOR(mmi)
     657    G_RESERVED6
    836658    G_NO_OF_SATELLITES(b->NumberOfGPSSat)
    837659    for(i = 0; i < b->NumberOfGPSSat; ++i)
     
    841663      for(j = 0; j < b->Sat[i].NumberOfCodeBiases; ++j)
    842664      {
    843         G_GPS_SIGNAL_IDENTIFIER(b->Sat[i].Biases[j].Type)
     665        G_GPS_CODE_TYPE(b->Sat[i].Biases[j].Type)
    844666        G_CODE_BIAS(b->Sat[i].Biases[j].Bias)
    845667      }
     
    849671    if(!b) return GCOBR_NOBIASPARAMETER;
    850672    G_GPS_EPOCH_TIME(b->GLONASSEpochTime, co->NumberOfGLONASSSat)
    851     G_SSR_UPDATE_INTERVAL(co->UpdateInterval)
    852     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
    853     G_RESERVED5
     673    G_MULTIPLE_MESSAGE_INDICATOR(mmi)
     674    G_RESERVED6
    854675    G_NO_OF_SATELLITES(b->NumberOfGLONASSSat)
    855676    for(i = CLOCKORBIT_NUMGPS;
     
    860681      for(j = 0; j < b->Sat[i].NumberOfCodeBiases; ++j)
    861682      {
    862         G_GLONASS_SIGNAL_IDENTIFIER(b->Sat[i].Biases[j].Type)
     683        G_GLONASS_CODE_TYPE(b->Sat[i].Biases[j].Type)
    863684        G_CODE_BIAS(b->Sat[i].Biases[j].Bias)
    864685      }
    865686    }
    866687    break;
    867 #ifdef OLD
    868   case OLDCOTYPE_GPSORBIT:
    869     if(!co) return GCOBR_NOCLOCKORBITPARAMETER;
    870     G_GPS_EPOCH_TIME(co->GPSEpochTime, co->NumberOfGPSSat)
    871     co->epochGPS[co->epochSize] = co->GPSEpochTime;   /* Weber, for latency */
    872     if(co->epochSize < 100) {co->epochSize += 1;}     /* Weber, for latency */
    873     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
    874     OLD_G_RESERVED6
    875     OLD_G_NO_OF_SATELLITES(co->NumberOfGPSSat)
    876     if(co->OrbitDataSupplied)
    877       return GCOBR_DATAMISMATCH;
    878     co->OrbitDataSupplied = 1;
    879     for(i = 0; i < co->NumberOfGPSSat; ++i)
    880     {
    881       G_GPS_SATELLITE_ID(co->Sat[i].ID)
    882       G_GPS_IODE(co->Sat[i].IOD)
    883       OLD_G_DELTA_RADIAL(co->Sat[i].Orbit.DeltaRadial)
    884       OLD_G_DELTA_ALONG_TRACK(co->Sat[i].Orbit.DeltaAlongTrack)
    885       OLD_G_DELTA_CROSS_TRACK(co->Sat[i].Orbit.DeltaCrossTrack)
    886       OLD_G_DELTA_DOT_RADIAL(co->Sat[i].Orbit.DotDeltaRadial)
    887       OLD_G_DELTA_DOT_ALONG_TRACK(co->Sat[i].Orbit.DotDeltaAlongTrack)
    888       OLD_G_DELTA_DOT_CROSS_TRACK(co->Sat[i].Orbit.DotDeltaCrossTrack)
    889       OLD_G_DELTA_DOT_DOT_RADIAL(co->Sat[i].Orbit.DotDotDeltaRadial)
    890       OLD_G_DELTA_DOT_DOT_ALONG_TRACK(co->Sat[i].Orbit.DotDotDeltaAlongTrack)
    891       OLD_G_DELTA_DOT_DOT_CROSS_TRACK(co->Sat[i].Orbit.DotDotDeltaCrossTrack)
    892       G_SATELLITE_REFERENCE_POINT(co->SatRefPoint)
    893       G_SATELLITE_REFERENCE_DATUM(co->SatRefDatum)
    894     }
    895     break;
    896   case OLDCOTYPE_GPSCLOCK:
    897     if(!co) return GCOBR_NOCLOCKORBITPARAMETER;
    898     G_GPS_EPOCH_TIME(co->GPSEpochTime, co->NumberOfGPSSat)
    899     co->epochGPS[co->epochSize] = co->GPSEpochTime;   /* Weber, for latency */
    900     if(co->epochSize < 100) {co->epochSize += 1;}     /* Weber, for latency */
    901     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
    902     OLD_G_RESERVED6
    903     OLD_G_NO_OF_SATELLITES(co->NumberOfGPSSat)
    904     if(co->ClockDataSupplied)
    905       return GCOBR_DATAMISMATCH;
    906     co->ClockDataSupplied = 1;
    907     for(i = 0; i < co->NumberOfGPSSat; ++i)
    908     {
    909       G_GPS_SATELLITE_ID(co->Sat[i].ID)
    910       G_GPS_IODE(co->Sat[i].IOD)
    911       OLD_G_DELTA_A0(co->Sat[i].Clock.DeltaA0)
    912       OLD_G_DELTA_A1(co->Sat[i].Clock.DeltaA1)
    913       OLD_G_DELTA_A2(co->Sat[i].Clock.DeltaA2)
    914     }
    915     break;
    916   case OLDCOTYPE_GPSCOMBINED:
    917     if(!co) return -5;
    918     G_GPS_EPOCH_TIME(co->GPSEpochTime, co->NumberOfGPSSat)
    919     co->epochGPS[co->epochSize] = co->GPSEpochTime;   /* Weber, for latency */
    920     if(co->epochSize < 100) {co->epochSize += 1;}     /* Weber, for latency */
    921     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
    922     OLD_G_RESERVED6
    923     OLD_G_NO_OF_SATELLITES(co->NumberOfGPSSat)
    924     if(co->ClockDataSupplied || co->OrbitDataSupplied)
    925       return GCOBR_DATAMISMATCH;
    926     co->OrbitDataSupplied = 1;
    927     co->ClockDataSupplied = 1;
    928     for(i = 0; i < co->NumberOfGPSSat; ++i)
    929     {
    930       G_GPS_SATELLITE_ID(co->Sat[i].ID)
    931       G_GPS_IODE(co->Sat[i].IOD)
    932       OLD_G_DELTA_RADIAL(co->Sat[i].Orbit.DeltaRadial)
    933       OLD_G_DELTA_ALONG_TRACK(co->Sat[i].Orbit.DeltaAlongTrack)
    934       OLD_G_DELTA_CROSS_TRACK(co->Sat[i].Orbit.DeltaCrossTrack)
    935       OLD_G_DELTA_DOT_RADIAL(co->Sat[i].Orbit.DotDeltaRadial)
    936       OLD_G_DELTA_DOT_ALONG_TRACK(co->Sat[i].Orbit.DotDeltaAlongTrack)
    937       OLD_G_DELTA_DOT_CROSS_TRACK(co->Sat[i].Orbit.DotDeltaCrossTrack)
    938       OLD_G_DELTA_DOT_DOT_RADIAL(co->Sat[i].Orbit.DotDotDeltaRadial)
    939       OLD_G_DELTA_DOT_DOT_ALONG_TRACK(co->Sat[i].Orbit.DotDotDeltaAlongTrack)
    940       OLD_G_DELTA_DOT_DOT_CROSS_TRACK(co->Sat[i].Orbit.DotDotDeltaCrossTrack)
    941       G_SATELLITE_REFERENCE_POINT(co->SatRefPoint)
    942       G_SATELLITE_REFERENCE_DATUM(co->SatRefDatum)
    943       OLD_G_DELTA_A0(co->Sat[i].Clock.DeltaA0)
    944       OLD_G_DELTA_A1(co->Sat[i].Clock.DeltaA1)
    945       OLD_G_DELTA_A2(co->Sat[i].Clock.DeltaA2)
    946     }
    947     break;
    948   case OLDCOTYPE_GLONASSORBIT:
    949     if(!co) return GCOBR_NOCLOCKORBITPARAMETER;
    950     G_GLONASS_EPOCH_TIME(co->GLONASSEpochTime, co->NumberOfGLONASSSat)
    951     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
    952     OLD_G_RESERVED6
    953     OLD_G_NO_OF_SATELLITES(co->NumberOfGLONASSSat)
    954     if(co->OrbitDataSupplied)
    955       return GCOBR_DATAMISMATCH;
    956     co->OrbitDataSupplied = 1;
    957     for(i = CLOCKORBIT_NUMGPS;
    958     i < CLOCKORBIT_NUMGPS+co->NumberOfGLONASSSat; ++i)
    959     {
    960       OLD_G_GLONASS_SATELLITE_ID(co->Sat[i].ID)
    961       G_GLONASS_IOD(co->Sat[i].IOD)
    962       OLD_G_DELTA_RADIAL(co->Sat[i].Orbit.DeltaRadial)
    963       OLD_G_DELTA_ALONG_TRACK(co->Sat[i].Orbit.DeltaAlongTrack)
    964       OLD_G_DELTA_CROSS_TRACK(co->Sat[i].Orbit.DeltaCrossTrack)
    965       OLD_G_DELTA_DOT_RADIAL(co->Sat[i].Orbit.DotDeltaRadial)
    966       OLD_G_DELTA_DOT_ALONG_TRACK(co->Sat[i].Orbit.DotDeltaAlongTrack)
    967       OLD_G_DELTA_DOT_CROSS_TRACK(co->Sat[i].Orbit.DotDeltaCrossTrack)
    968       OLD_G_DELTA_DOT_DOT_RADIAL(co->Sat[i].Orbit.DotDotDeltaRadial)
    969       OLD_G_DELTA_DOT_DOT_ALONG_TRACK(co->Sat[i].Orbit.DotDotDeltaAlongTrack)
    970       OLD_G_DELTA_DOT_DOT_CROSS_TRACK(co->Sat[i].Orbit.DotDotDeltaCrossTrack)
    971       G_SATELLITE_REFERENCE_POINT(co->SatRefPoint)
    972       G_SATELLITE_REFERENCE_DATUM(co->SatRefDatum)
    973     }
    974     break;
    975   case OLDCOTYPE_GLONASSCLOCK:
    976     if(!co) return GCOBR_NOCLOCKORBITPARAMETER;
    977     G_GLONASS_EPOCH_TIME(co->GLONASSEpochTime, co->NumberOfGLONASSSat)
    978     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
    979     OLD_G_RESERVED6
    980     OLD_G_NO_OF_SATELLITES(co->NumberOfGLONASSSat)
    981     if(co->ClockDataSupplied)
    982       return GCOBR_DATAMISMATCH;
    983     co->ClockDataSupplied = 1;
    984     for(i = CLOCKORBIT_NUMGPS;
    985     i < CLOCKORBIT_NUMGPS+co->NumberOfGLONASSSat; ++i)
    986     {
    987       OLD_G_GLONASS_SATELLITE_ID(co->Sat[i].ID)
    988       G_GLONASS_IOD(co->Sat[i].IOD)
    989       OLD_G_DELTA_A0(co->Sat[i].Clock.DeltaA0)
    990       OLD_G_DELTA_A1(co->Sat[i].Clock.DeltaA1)
    991       OLD_G_DELTA_A2(co->Sat[i].Clock.DeltaA2)
    992     }
    993     break;
    994   case OLDCOTYPE_GLONASSCOMBINED:
    995     if(!co) return GCOBR_NOCLOCKORBITPARAMETER;
    996     G_GLONASS_EPOCH_TIME(co->GLONASSEpochTime, co->NumberOfGLONASSSat)
    997     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
    998     OLD_G_RESERVED6
    999     OLD_G_NO_OF_SATELLITES(co->NumberOfGLONASSSat)
    1000     if(co->ClockDataSupplied || co->OrbitDataSupplied)
    1001       return GCOBR_DATAMISMATCH;
    1002     co->OrbitDataSupplied = 1;
    1003     co->ClockDataSupplied = 1;
    1004     for(i = CLOCKORBIT_NUMGPS;
    1005     i < CLOCKORBIT_NUMGPS+co->NumberOfGLONASSSat; ++i)
    1006     {
    1007       OLD_G_GLONASS_SATELLITE_ID(co->Sat[i].ID)
    1008       G_GLONASS_IOD(co->Sat[i].IOD)
    1009       OLD_G_DELTA_RADIAL(co->Sat[i].Orbit.DeltaRadial)
    1010       OLD_G_DELTA_ALONG_TRACK(co->Sat[i].Orbit.DeltaAlongTrack)
    1011       OLD_G_DELTA_CROSS_TRACK(co->Sat[i].Orbit.DeltaCrossTrack)
    1012       OLD_G_DELTA_DOT_RADIAL(co->Sat[i].Orbit.DotDeltaRadial)
    1013       OLD_G_DELTA_DOT_ALONG_TRACK(co->Sat[i].Orbit.DotDeltaAlongTrack)
    1014       OLD_G_DELTA_DOT_CROSS_TRACK(co->Sat[i].Orbit.DotDeltaCrossTrack)
    1015       OLD_G_DELTA_DOT_DOT_RADIAL(co->Sat[i].Orbit.DotDotDeltaRadial)
    1016       OLD_G_DELTA_DOT_DOT_ALONG_TRACK(co->Sat[i].Orbit.DotDotDeltaAlongTrack)
    1017       OLD_G_DELTA_DOT_DOT_CROSS_TRACK(co->Sat[i].Orbit.DotDotDeltaCrossTrack)
    1018       G_SATELLITE_REFERENCE_POINT(co->SatRefPoint)
    1019       G_SATELLITE_REFERENCE_DATUM(co->SatRefDatum)
    1020       OLD_G_DELTA_A0(co->Sat[i].Clock.DeltaA0)
    1021       OLD_G_DELTA_A1(co->Sat[i].Clock.DeltaA1)
    1022       OLD_G_DELTA_A2(co->Sat[i].Clock.DeltaA2)
    1023     }
    1024     break;
    1025   case OLDBTYPE_GPS:
    1026     if(!b) return GCOBR_NOBIASPARAMETER;
    1027     G_GPS_EPOCH_TIME(b->GPSEpochTime, co->NumberOfGPSSat)
    1028     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
    1029     OLD_G_RESERVED6
    1030     OLD_G_NO_OF_SATELLITES(b->NumberOfGPSSat)
    1031     for(i = 0; i < b->NumberOfGPSSat; ++i)
    1032     {
    1033       G_GPS_SATELLITE_ID(b->Sat[i].ID)
    1034       G_NO_OF_CODE_BIASES(b->Sat[i].NumberOfCodeBiases)
    1035       for(j = 0; j < b->Sat[i].NumberOfCodeBiases; ++j)
    1036       {
    1037         G_GPS_SIGNAL_IDENTIFIER(b->Sat[i].Biases[j].Type)
    1038         OLD_G_CODE_BIAS(b->Sat[i].Biases[j].Bias)
    1039       }
    1040     }
    1041     break;
    1042   case OLDBTYPE_GLONASS:
    1043     if(!b) return GCOBR_NOBIASPARAMETER;
    1044     G_GPS_EPOCH_TIME(b->GLONASSEpochTime, co->NumberOfGLONASSSat)
    1045     G_MULTIPLE_MESSAGE_INDICATOR(mmi)
    1046     OLD_G_RESERVED6
    1047     OLD_G_NO_OF_SATELLITES(b->NumberOfGLONASSSat)
    1048     for(i = CLOCKORBIT_NUMGPS;
    1049     i < CLOCKORBIT_NUMGPS+b->NumberOfGLONASSSat; ++i)
    1050     {
    1051       OLD_G_GLONASS_SATELLITE_ID(b->Sat[i].ID)
    1052       G_NO_OF_CODE_BIASES(b->Sat[i].NumberOfCodeBiases)
    1053       for(j = 0; j < b->Sat[i].NumberOfCodeBiases; ++j)
    1054       {
    1055         G_GLONASS_SIGNAL_IDENTIFIER(b->Sat[i].Biases[j].Type)
    1056         OLD_G_CODE_BIAS(b->Sat[i].Biases[j].Bias)
    1057       }
    1058     }
    1059     break;
    1060 #endif
    1061688  default:
    1062689    return GCOBR_UNKNOWNTYPE;
  • trunk/BNS/RTCM/clock_orbit_rtcm.h

    r1660 r1662  
    66        Name:           clock_orbit_rtcm.h
    77        Project:        RTCM3
    8         Version:        $Id: clock_orbit_rtcm.h,v 1.3 2009/02/12 11:56:16 stoecker Exp $
     8        Version:        $Id: clock_orbit_rtcm.h,v 1.3 2008/11/16 00:05:32 weber Exp $
    99        Authors:        Dirk Stöcker
    1010        Description:    state space approach for RTCM3
     
    1515enum SatelliteReferenceDatum { DATUM_ITRF=0, DATUM_LOCAL=1 };
    1616enum SatelliteReferencePoint { POINT_IONOFREE=0, POINT_CENTER=1 };
    17 enum ClockOrbitType {
    18      COTYPE_GPSORBIT=4060, COTYPE_GPSCLOCK=4061,
    19      COTYPE_GPSCOMBINED=4063, COTYPE_GPSURA=4064, COTYPE_GPSHR=4065,
    20 
    21      COTYPE_GLONASSORBIT=4066, COTYPE_GLONASSCLOCK=4067,
    22      COTYPE_GLONASSCOMBINED=4069, COTYPE_GLONASSURA=4070, COTYPE_GLONASSHR=4071,
    23 
     17enum ClockOrbitType { COTYPE_GPSORBIT=4050, COTYPE_GPSCLOCK=4051,
     18     COTYPE_GLONASSORBIT=4053, COTYPE_GLONASSCLOCK=4054,
     19     COTYPE_GPSCOMBINED=4056, COTYPE_GLONASSCOMBINED=4057,
    2420     COTYPE_AUTO=0 };
    25 enum BiasType { BTYPE_GPS=4062, BTYPE_GLONASS=4068, BTYPE_AUTO = 0 };
     21enum BiasType { BTYPE_GPS=4052, BTYPE_GLONASS=4055, BTYPE_AUTO = 0 };
    2622
    2723enum COR_CONSTANTS {
     
    5551  int NumberOfGLONASSSat;           /* 0 .. 24 */
    5652  int ClockDataSupplied;            /* boolean */
    57   int HRDataSupplied;               /* boolean */
    5853  int OrbitDataSupplied;            /* boolean */
    59   int URADataSupplied;              /* boolean */
    6054  int epochGPS[101];                /* Weber, for latency */
    6155  int epochSize;                    /* Weber, for latency */
    62   int UpdateInterval;
    6356  enum SatelliteReferencePoint SatRefPoint;
    6457  enum SatelliteReferenceDatum SatRefDatum;
     
    6659    int ID; /* GPS or GLONASS */
    6760    int IOD; /* GPS or GLONASS */
    68     int URA;
    69     double hrclock;
    7061    struct OrbitPart
    7162    {
     
    9586  int NumberOfGPSSat;               /* 0 .. 32 */
    9687  int NumberOfGLONASSSat;           /* 0 .. 24 */
    97   int UpdateInterval;
    9888  struct BiasSat
    9989  {
Note: See TracChangeset for help on using the changeset viewer.