Ignore:
Timestamp:
Aug 11, 2026, 2:18:53 PM (4 days ago)
Author:
stuerze
Message:

version number increased + minor changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit.h

    r10828 r10987  
    454454
    455455/* GNSS macros - Header part */
    456 #define T_RTCM_MESSAGE_NUMBER(a)         ADDBITS(12, a)      /* DF002         */
    457 #define T_IGS_SSR_VERSION(a)             ADDBITS( 3, a)      /*        IDF001 */
    458 #define T_IGS_MESSAGE_NUMBER(a)          ADDBITS( 8, a)      /*        IDF002 */
    459 #define T_SSR_EPOCH_TIME(a)              ADDBITS(20, a)      /* DF385  IDF003 */ //T_GPS_EPOCH_TIME(a)
    460 #define T_GLONASS_EPOCH_TIME(a)          ADDBITS(17, a)      /* DF            */
     456#define T_RTCM_MESSAGE_NUMBER(a)         ADDBITS(12, a)      /* DF002  */
     457#define T_IGS_SSR_VERSION(a)             ADDBITS( 3, a)      /* IDF001 */
     458#define T_IGS_MESSAGE_NUMBER(a)          ADDBITS( 8, a)      /* IDF002 */
     459
     460#define T_GPS_EPOCH_TIME(a)              ADDBITS(20, a)      /* IDF003 DF385 DF458 DF460 DF465*/
     461#define T_GLONASS_EPOCH_TIME(a)          ADDBITS(17, a)      /* DF386  */
    461462
    462463#define T_SSR_UPDATE_INTERVAL(a)         ADDBITS( 4, a)      /* DF391, IDF004 */
     
    469470
    470471/* GNSS macros - Satellite specific part */
    471 #define T_GNSS_SATELLITE_ID(a)           ADDBITS( 6, a)      /*        IDF011 */
    472 #define T_GPS_SATELLITE_ID(a)            ADDBITS( 6, a)      /* DF068         */
    473 #define T_QZSS_SATELLITE_ID(a)           ADDBITS( 4, a)      /* DF249         */
    474 #define T_GLONASS_SATELLITE_ID(a)        ADDBITS( 5, a)      /* DF            */
    475 #define T_GNSS_IOD(a)                    ADDBITS( 8, a)      /*        IDF012 */
    476 #define T_GPS_IODE(a)                    ADDBITS( 8, a)      /* DF071         */
    477 #define T_GLONASS_IOD(a)                 ADDBITS( 8, a)      /* DF239         */
    478 #define T_GALILEO_IOD(a)                 ADDBITS(10, a)      /* DF459         */
    479 #define T_SBAS_T0MOD(a)                  ADDBITS( 9, (a/16)) /* DF468         */
    480 #define T_SBAS_IODCRC(a)                 ADDBITS(24, a)      /* DF469         */
    481 #define T_BDS_TOEMOD(a)                  ADDBITS(10, (a/8))  /* DF470         */
    482 #define T_BDS_IOD(a)                     ADDBITS( 8, a)      /* DF471         */
     472#define T_GPS_SATELLITE_ID(a)            ADDBITS( 6, a)      /* IDF011 DF068 DF488 */
     473#define T_QZSS_SATELLITE_ID(a)           ADDBITS( 4, a)      /* DF249  */
     474#define T_GLONASS_SATELLITE_ID(a)        ADDBITS( 5, a)      /* DF384 (old RTCM) */
     475#define T_GLONASS_SATELLITE_ID_NEW(a)    ADDBITS( 6, a)      /* DF (new RTCM) */
     476#define T_GPS_IODE(a)                    ADDBITS( 8, a)      /* IDF012 DF071  */
     477#define T_GLONASS_IOD(a)                 ADDBITS( 8, a)      /* DF239  */
     478#define T_GALILEO_IOD(a)                 ADDBITS(10, a)      /* DF459  */
     479#define T_SBAS_T0MOD(a)                  ADDBITS( 9, (a/16)) /* DF468  */
     480#define T_SBAS_IODCRC(a)                 ADDBITS(24, a)      /* DF469  */
     481#define T_BDS_TOEMOD(a)                  ADDBITS(10, (a/8))  /* DF470  */
     482#define T_BDS_IOD(a)                     ADDBITS( 8, a)      /* DF471  */
    483483
    484484/* Orbit Corrections */
     
    497497
    498498/* Biases */
    499 #define T_NO_OF_BIASES(a)                ADDBITS(5, a)                   /* DF, DF       IDF023 */ //_NO_OF_CODE_BIASES(a)T_NO_OF_PHASE_BIASES(a)
    500 
     499#define T_NO_OF_BIASES(a)                ADDBITS(5, a)                   /* DF479 DF379 IDF023 */
    501500#define T_GNSS_SIGNAL_IDENTIFIER(a)      ADDBITS(5, a)                   /* DF380, IDF024 */
    502501#define T_CODE_BIAS(a)                   SCALEADDBITS(14,      100.0, a) /* DF383, IDF025 */
     
    506505
    507506/* Phase specific part of GNSS phase bias message */
    508 #define T_INTEGER_INDICATOR(a)           ADDBITS( 1, a)                  /* DF483, IDF029 */
    509 #define T_WIDE_LANE_INDICATOR(a)         ADDBITS( 2, a)                  /* DF484, IDF030 */
    510 #define T_DISCONTINUITY_COUNTER(a)       ADDBITS( 4, a)                  /* DF485, IDF031 */
    511 #define T_DISPERSIVE_BIAS_INDICATOR(a)   ADDBITS( 1, a)                  /* DF486, IDF032 */
    512 #define T_MW_CONSISTENCY_INDICATOR(a)    ADDBITS( 1, a)                  /* DF487, IDF033 */
     507#define T_INTEGER_INDICATOR(a)           ADDBITS(1, a)                  /* DF483, IDF029 */
     508#define T_WIDE_LANE_INDICATOR(a)         ADDBITS(2, a)                  /* DF484, IDF030 */
     509#define T_DISCONTINUITY_COUNTER(a)       ADDBITS(4, a)                  /* DF485, IDF031 */
     510#define T_DISPERSIVE_BIAS_INDICATOR(a)   ADDBITS(1, a)                  /* DF486 (old RTCM), IDF032 */
     511#define T_YAW_INFO_INDICATOR(a)          ADDBITS(1, a)                  /* DF486 (new RTCM) */
     512#define T_MW_CONSISTENCY_INDICATOR(a)    ADDBITS(1, a)                  /* DF487 (old RTCM), IDF033 */
     513#define T_EXTENDED_PHASE_BIAS_ID(a)      ADDBITS(4, a)                  /* DF+002 (new RTCM) */
    513514
    514515/* URA */
    515 #define T_SSR_URA(a)                     ADDBITS( 6, a)                  /* DF389, IDF034 */
     516#define T_SSR_URA(a)                     ADDBITS( 6, a)                 /* DF389, IDF034 */
     517
     518/* Antenna Information*/
     519#define T_SATELLITE_ANTENNA_IOD(a)                      ADDBITS(6,  a)  /* DF+010 (new RTCM) */
     520#define T_PHASE_CENTER_INFO_INDICATOR(a)                ADDBITS(1,  a)  /* DF+011 (new RTCM) */   
     521#define T_GROUP_DELAY_INFO_INDICATOR(a)                 ADDBITS(1,  a)  /* DF+012 (new RTCM) */   
     522#define T_NADIR_ANGLE_DEPENDENT_CORR_INDICATOR(a)       ADDBITS(1,  a)  /* DF+013 (new RTCM) */
     523#define T_MAXIMUM_OFF_NADIR_ANGLE(a)                    ADDBITS(5,  a)  /* DF+014 (new RTCM) */ 
     524#define T_NADIR_ANGLE_DEPENDENT_CORR_RANGE_EXTENSION(a) ADDBITS(4,  a)  /* DF+015 (new RTCM) */
     525#define T_SATELLITE_SET_INDICATOR(a)                    ADDBITS(1,  a)  /* DF+016 (new RTCM) */
     526#define T_FREQUENCY_SET_INDICATOR(a)                    ADDBITS(1,  a)  /* DF+017 (new RTCM) */
     527#define T_GNSS_FREQUENCY_MASK(a)                        ADDBITS(6,  a)  /* DF+018 (new RTCM) */
     528#define T_NADIR_CORR_INDICATOR(a)                       ADDBITS(1,  a)  /* DF+019 (new RTCM) */
     529#define T_NADIR_CORRECTION(a)                           ADDBITS(12, a)  /* DF+020 (new RTCM) */
     530#define T_NADIR_ANGLE_DEPENDENT_CORRECTION(a)           SCALEADDBITS(3 + T_NADIR_ANGLE_DEPENDENT_CORR_RANGE_EXTENSION(a), 1000.0 a)  /* DF+021 (new RTCM)  NOT COMPLETED: can be extended up to 15/18 Bits*/
     531
     532/* Grid Messages */
     533#define T_GRID_ID(a)                                    ADDBITS(10, a)                     /* DF+022 (new RTCM) */
     534#define T_GRID_TYPE(a)                                  ADDBITS(3 , a)                     /* DF+023 (new RTCM) */
     535#define T_LATITUDE_OF_REFERENCE_POINT(a)                SCALEADDBITS(18, 1000.0, a)        /* DF+024 (new RTCM) */
     536#define T_LONGITUDE_OF_REFERENCE_POINT(a)               SCALEADDBITS(19, 1000.0, a)        /* DF+025 (new RTCM) */
     537#define T_ELLIPSOIDAL_HEIGHT_OF_REFERENCE_POINT(a)      SCALEADDBITS(10, 1/12.5, a+1000.0) /* DF+026 (new RTCM) */
     538#define T_NUMNBER_OF_RELATIVE_POINTS(a)                 ADDBITS(8, a)                      /* DF+027 (new RTCM) */
     539#define T_RELATIVE_LATITUDE(a)                          SCALEADDBITS(13, 1000.0, a)        /* DF+028 (new RTCM) */
     540#define T_RELATIVE_LONGITUDE(a)                         SCALEADDBITS(14, 1000.0, a)        /* DF+029 (new RTCM) */
     541#define T_RELATIVE_HIGHT(a)                             SCALEADDBITS(9,  1/12.5, a)        /* DF+030 (new RTCM) */
     542#define T_NUMBER_OF_ROWS_4_LATITIDE_DIRECTION(a)        ADDBITS(6,  a)                     /* DF+031 (new RTCM) */
     543#define T_NUMBER_OF_ROWS_4_LONGITUDE_DIRECTION(a)       ADDBITS(6,  a)                     /* DF+032 (new RTCM) */
     544#define T_GRID_STEP_SIZE_4_LATITIDE_DIRECTION(a)        SCALEADDBITS(9,  100.0, a)         /* DF+031 (new RTCM) */
     545#define T_GRID_STEP_SIZE_4_LONGITUDE_DIRECTION(a)       SCALEADDBITS(10, 100.0, a)         /* DF+032 (new RTCM) */
     546
     547
     548#define LATITUDE_OF_REFERENCE_POINT            SCALEADDBITS()                  /* DF+028 (new RTCM) */
     549#define LATITUDE_OF_REFERENCE_POINT            SCALEADDBITS()                  /* DF+029 (new RTCM) */
     550#define LATITUDE_OF_REFERENCE_POINT            SCALEADDBITS()                  /* DF+030 (new RTCM) */
     551
    516552
    517553/* Ionosphere */
    518 #define T_NO_IONO_LAYERS(a)              ADDBITS( 2, a-1)                /* DF472, IDF035 */
     554#define T_NO_IONO_LAYERS(a)              ADDBITS(2, a-1)                 /* DF472, IDF035 */
    519555#define T_IONO_HEIGHT(a)                 SCALEADDBITS( 8,  1/10000.0, a) /* DF473, IDF036 */
    520 #define T_IONO_DEGREE(a)                 ADDBITS( 4, a-1)                /* DF474, IDF037 */
    521 #define T_IONO_ORDER(a)                  ADDBITS( 4, a-1)                /* DF475, IDF038 */
     556#define T_IONO_DEGREE(a)                 ADDBITS(4, a-1)                 /* DF474, IDF037 */
     557#define T_IONO_ORDER(a)                  ADDBITS(4, a-1)                 /* DF475, IDF038 */
    522558#define T_IONO_COEFF_C(a)                SCALEADDBITS(16,      200.0, a) /* DF476, IDF039 */
    523559#define T_IONO_COEFF_S(a)                SCALEADDBITS(16,      200.0, a) /* DF477, IDF040 */
    524560#define T_VTEC_QUALITY_INDICATOR(a)      SCALEADDBITS( 9,       20.0, a) /* DF478, IDF041 */
     561
    525562
    526563static double URAToValue(int ura) {
     
    548585#define DECODESTART \
    549586  int numbits=0; \
    550   uint64_t bitbuffer=0;
     587  uint64_t bitbuffer=0; 
    551588
    552589#define LOADSSRBITS(a) { \
     
    598635
    599636/* GNSS macros - Header part */
    600 #define G_RTCM_MESSAGE_NUMBER(a)         GETSSRBITS(a, 12)      /* DF002         */
    601 #define G_IGS_MESSAGE_NUMBER(a)          GETSSRBITS(a,  8)      /*        IDF002 */
    602 #define G_IGS_SSR_VERSION(a)             GETSSRBITS(a,  3)      /*        IDF001 */
    603 #define G_SSR_EPOCH_TIME(a)              GETSSRBITS(a, 20)      /*DF385   IDF003 */
    604 #define G_SSR_EPOCH_TIME_CHECK(a, b)     {unsigned int temp; GETSSRBITS(temp, 20) \
    605  if(b && a != temp) return GCOBR_TIMEMISMATCH; a = temp;}
    606 #define G_GLONASS_EPOCH_TIME(a, b)       {unsigned int temp; GETSSRBITS(temp, 17) \
    607  if(b && a != temp) return GCOBR_TIMEMISMATCH; a = temp;}
     637#define G_RTCM_MESSAGE_NUMBER(a)         GETSSRBITS(a,12)      /* DF002  */
     638#define G_IGS_MESSAGE_NUMBER(a)          GETSSRBITS(a, 8)      /* IDF002 */
     639#define G_IGS_SSR_VERSION(a)             GETSSRBITS(a, 3)      /* IDF001 */
     640
     641#define G_GPS_EPOCH_TIME(a)              GETSSRBITS(a,20)      /* IDF003 DF385 DF458 DF460 DF465*/
     642#define G_GLONASS_EPOCH_TIME(a)          GETSSRBITS(a,17)      /* DF386 */
     643#define G_GPS_EPOCH_TIME_CHECK(a, b)     {unsigned int temp; GETSSRBITS(temp, 20) if(b && a != temp) return GCOBR_TIMEMISMATCH; a = temp;}
     644#define G_GLONASS_EPOCH_TIME_CHECK(a, b) {unsigned int temp; GETSSRBITS(temp, 17) if(b && a != temp) return GCOBR_TIMEMISMATCH; a = temp;}
    608645
    609646#define G_SSR_UPDATE_INTERVAL(a)         GETSSRBITS(a,  4)      /* DF391, IDF004 */
     
    616653
    617654/* GNSS macros - Satellite specific part */
    618 #define G_GNSS_SATELLITE_ID(a)           GETSSRBITS(a,  6)     /* DF068,  IDF011 */
    619 #define G_GLONASS_SATELLITE_ID(a)        GETSSRBITS(a,  5)     /* DF             */
    620 #define G_QZSS_SATELLITE_ID(a)           GETSSRBITS(a,  4)     /* DF249          */
    621 
    622 #define G_GNSS_IOD(a)                    GETSSRBITS(a,  8)     /*DF071, DF237,DF471        IDF012 */
     655#define G_GPS_SATELLITE_ID(a)            GETSSRBITS(a,  6)     /* IDF011 DF068 DF488 */
     656#define G_GLONASS_SATELLITE_ID(a)        GETSSRBITS(a,  5)     /* DF384 */
     657#define G_GLONASS_SATELLITE_ID_NEW(a)    GETSSRBITS(a,  6)     /* DF*/
     658#define G_QZSS_SATELLITE_ID(a)           GETSSRBITS(a,  4)     /* DF249 */
     659
     660#define G_GPS_IODE(a)                    GETSSRBITS(a,  8)     /*  DF071, DF467, IDF012 */
    623661#define G_GALILEO_IOD(a)                 GETSSRBITS(a, 10)          /* DF459 */
     662
    624663#define G_SBAS_T0MOD(a)                  GETSSRBITSFACTOR(a, 9, 16) /* DF468 */
    625664#define G_SBAS_IODCRC(a)                 GETSSRBITS(a, 24)          /* DF469 */
     
    641680
    642681/* Biases */
    643 #define G_NO_OF_BIASES(a)                GETSSRBITS(a,  5)                    /* DF, DF      IDF023 */
     682#define G_NO_OF_BIASES(a)                GETSSRBITS(a,  5)                    /* DF479 DF379 IDF023 */
    644683#define G_GNSS_SIGNAL_IDENTIFIER(a)      GETSSRBITS(a,  5)                    /* DF     IDF024 */
    645684#define G_CODE_BIAS(a)                   GETSSRFLOATSIGN(a, 14, 1/100.0)      /* DF383, IDF025 */
     
    649688
    650689/* Phase specific part of GNSS phase bias message */
    651 #define G_INTEGER_INDICATOR(a)           GETSSRBITS(a,  1)                    /* DF483, IDF029 */
    652 #define G_WIDE_LANE_INDICATOR(a)         GETSSRBITS(a,  2)                    /* DF484, IDF030 */
    653 #define G_DISCONTINUITY_COUNTER(a)       GETSSRBITS(a,  4)                    /* DF485, IDF031 */
    654 #define G_DISPERSIVE_BIAS_INDICATOR(a)   GETSSRBITS(a,  1)                    /* DF486, IDF032 */
    655 #define G_MW_CONSISTENCY_INDICATOR(a)    GETSSRBITS(a,  1)                    /* DF487, IDF033 */
     690#define G_INTEGER_INDICATOR(a)           GETSSRBITS(a, 1)                    /* DF483, IDF029 */
     691#define G_WIDE_LANE_INDICATOR(a)         GETSSRBITS(a, 2)                    /* DF484, IDF030 */
     692#define G_DISCONTINUITY_COUNTER(a)       GETSSRBITS(a, 4)                    /* DF485, IDF031 */
     693#define G_DISPERSIVE_BIAS_INDICATOR(a)   GETSSRBITS(a, 1)                    /* DF486 (old RTCM), IDF032 */
     694#define G_YAW_INFO_INDICATOR(a)          GETSSRBITS(a, 1)                    /* DF486 (new RTCM) */
     695#define G_MW_CONSISTENCY_INDICATOR(a)    GETSSRBITS(a, 1)                    /* DF487, IDF033 */
     696#define G_EXTENDED_PHASE_BIAS_ID(a)      GETSSRBITS(4, a)                    /* DF??  (new RTCM)*/
    656697
    657698/* URA */
    658 #define G_SSR_URA(a)                     {int temp; GETSSRBITS(temp, 6) \
    659  (a) = URAToValue(temp);}                                                  /* DF389, IDF034 */
    660 
     699#define G_SSR_URA(a)  {int temp; GETSSRBITS(temp, 6) \
     700  (a) = URAToValue(temp);} /* DF389, IDF034 */
     701
     702/* Antenna Information*/
     703#define G_SATELLITE_ANTENNA_IOD(a)                      GETSSRBITS(a,  6)          /* DF+010 (new RTCM) */
     704#define G_PHASE_CENTER_INFO_INDICATORD(a)               GETSSRBITS(a,  1)          /* DF+011 (new RTCM) */   
     705#define G_GROUP_DELAY_INFO_INDICATOR(a)                 GETSSRBITS(a,  1)          /* DF+012 (new RTCM) */   
     706#define G_NADIR_ANGLE_DEPENDENT_CORR_INDICATOR(a)       GETSSRBITS(a,  1)          /* DF+013 (new RTCM) */
     707#define G_MAXIMUM_OFF_NADIR_ANGLE(a)                    GETSSRBITS(a,  5)          /* DF+014 (new RTCM) */ 
     708#define G_NADIR_ANGLE_DEPENDENT_CORR_RANGE_EXTENSION(a) GETSSRBITS(a,  4)          /* DF+015 (new RTCM) */
     709#define G_SATELLITE_SET_INDICATOR(a)                    GETSSRBITS(a,  1)          /* DF+016 (new RTCM) */
     710#define G_FREQUENCY_SET_INDICATOR (a)                   GETSSRBITS(a,  1)          /* DF+017 (new RTCM) */
     711#define G_GNSS_FREQUENCY_MASK (a)                       GETSSRBITS(a,  6)          /* DF+018 (new RTCM) */
     712#define G_NADIR_CORR_INDICATOR(a)                       GETSSRBITS(a,  1)          /* DF+019 (new RTCM) */
     713#define G_NADIR_CORRECTION(a)                           GETSSRBITS(a, 12)          /* DF+020 (new RTCM) */
     714#define G_NADIR_ANGLE_DEPENDENT_CORRECTION(a)           GETSSRBITS(a,  3 + G_NADIR_ANGLE_DEPENDENT_CORR_RANGE_EXTENSION(a))          /* DF+021 (new RTCM) */
     715 
    661716/* Ionosphere */
    662717#define G_NO_IONO_LAYERS(a) {unsigned int temp; GETSSRBITS(temp, 2) a = temp+1;} /* DF472, IDF035 */
Note: See TracChangeset for help on using the changeset viewer.