Ignore:
Timestamp:
Nov 9, 2010, 2:50:16 PM (13 years ago)
Author:
stoecker
Message:

first test of MSM messages

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/rtcm3torinex/lib/rtcm3torinex.h

    r2502 r2659  
    2727#include <stdio.h>
    2828
     29#define NUMRTCM3PARSERSATS    144
    2930#define GNSS_MAXSATS 64
    3031
     
    3334#define PRN_GLONASS_START         38
    3435#define PRN_GLONASS_END           61
     36#define PRN_GALILEO_START         71
     37#define PRN_GALILEO_END           100
    3538#define PRN_WAAS_START            120
    3639#define PRN_WAAS_END              138
     40#define PRN_GIOVE_START           139
     41#define PRN_GIOVE_END             140
     42
     43#define PRN_GLONASS_NUM           (PRN_GLONASS_END-PRN_GLONASS_START+1)
     44
     45#define RTCM3_MSM_NUMSIG      24
     46#define RTCM3_MSM_NUMSAT      40
     47#define RTCM3_MSM_NUMCELLS    64
     48
     49/* system identifiers, use start PRN as value */
     50#define RTCM3_MSM_GPS     PRN_GPS_START
     51#define RTCM3_MSM_GLONASS PRN_GLONASS_START
     52#define RTCM3_MSM_GALILEO PRN_GALILEO_START
    3753
    3854#define GNSSENTRY_C1DATA     0
     
    5268#define GNSSENTRY_S2CDATA    14
    5369#define GNSSENTRY_S2PDATA    15
    54 #define GNSSENTRY_NUMBER     16 /* number of types!!! */
     70
     71#define GNSSENTRY_C5DATA     16
     72#define GNSSENTRY_L5DATA     17
     73#define GNSSENTRY_D5DATA     18
     74#define GNSSENTRY_S5DATA     19
     75#define GNSSENTRY_C6DATA     20
     76#define GNSSENTRY_L6DATA     21
     77#define GNSSENTRY_D6DATA     22
     78#define GNSSENTRY_S6DATA     23
     79#define GNSSENTRY_C5BDATA    24
     80#define GNSSENTRY_L5BDATA    25
     81#define GNSSENTRY_D5BDATA    26
     82#define GNSSENTRY_S5BDATA    27
     83#define GNSSENTRY_C5ABDATA   28
     84#define GNSSENTRY_L5ABDATA   29
     85#define GNSSENTRY_D5ABDATA   30
     86#define GNSSENTRY_S5ABDATA   31
     87
     88#define GNSSENTRY_NUMBER     32 /* number of types!!! */
    5589
    5690/* Data flags. These flags are used in the dataflags field of gpsdata structure
    57    and are used the determine, which data fields are filled with valid data. */
     91   and are required to determine, which data fields are filled with valid data. */
    5892#define GNSSDF_C1DATA         (1<<GNSSENTRY_C1DATA)
    5993#define GNSSDF_C2DATA         (1<<GNSSENTRY_C2DATA)
     
    73107#define GNSSDF_S2PDATA        (1<<GNSSENTRY_S2PDATA)
    74108
     109#define GNSSDF_C5DATA         (1<<GNSSENTRY_C5DATA)
     110#define GNSSDF_L5DATA         (1<<GNSSENTRY_L5DATA)
     111#define GNSSDF_D5DATA         (1<<GNSSENTRY_D5DATA)
     112#define GNSSDF_S5DATA         (1<<GNSSENTRY_S5DATA)
     113#define GNSSDF_C6DATA         (1<<GNSSENTRY_C6DATA)
     114#define GNSSDF_L6DATA         (1<<GNSSENTRY_L6DATA)
     115#define GNSSDF_D6DATA         (1<<GNSSENTRY_D6DATA)
     116#define GNSSDF_S6DATA         (1<<GNSSENTRY_S6DATA)
     117#define GNSSDF_C5BDATA        (1<<GNSSENTRY_C5BDATA)
     118#define GNSSDF_L5BDATA        (1<<GNSSENTRY_L5BDATA)
     119#define GNSSDF_D5BDATA        (1<<GNSSENTRY_D5BDATA)
     120#define GNSSDF_S5BDATA        (1<<GNSSENTRY_S5BDATA)
     121#define GNSSDF_C5ABDATA       (1<<GNSSENTRY_C5ABDATA)
     122#define GNSSDF_L5ABDATA       (1<<GNSSENTRY_L5ABDATA)
     123#define GNSSDF_D5ABDATA       (1<<GNSSENTRY_D5ABDATA)
     124#define GNSSDF_S5ABDATA       (1<<GNSSENTRY_S5ABDATA)
     125
    75126#define RINEXENTRY_C1DATA     0
    76127#define RINEXENTRY_C2DATA     1
     
    83134#define RINEXENTRY_S1DATA     8
    84135#define RINEXENTRY_S2DATA     9
    85 #define RINEXENTRY_NUMBER     10
     136
     137#define RINEXENTRY_C5DATA     10
     138#define RINEXENTRY_L5DATA     11
     139#define RINEXENTRY_D5DATA     12
     140#define RINEXENTRY_S5DATA     13
     141#define RINEXENTRY_C6DATA     14
     142#define RINEXENTRY_L6DATA     15
     143#define RINEXENTRY_D6DATA     16
     144#define RINEXENTRY_S6DATA     17
     145#define RINEXENTRY_C5BDATA    18
     146#define RINEXENTRY_L5BDATA    19
     147#define RINEXENTRY_D5BDATA    20
     148#define RINEXENTRY_S5BDATA    21
     149#define RINEXENTRY_C5ABDATA   22
     150#define RINEXENTRY_L5ABDATA   23
     151#define RINEXENTRY_D5ABDATA   24
     152#define RINEXENTRY_S5ABDATA   25
     153
     154#define RINEXENTRY_NUMBER     26
    86155
    87156#define LIGHTSPEED         2.99792458e8    /* m/sec */
    88157#define GPS_FREQU_L1       1575420000.0  /* Hz */
    89158#define GPS_FREQU_L2       1227600000.0  /* Hz */
     159#define GPS_FREQU_L5       1176450000.0  /* Hz */
    90160#define GPS_WAVELENGTH_L1  (LIGHTSPEED / GPS_FREQU_L1) /* m */
    91161#define GPS_WAVELENGTH_L2  (LIGHTSPEED / GPS_FREQU_L2) /* m */
     162#define GPS_WAVELENGTH_L5  (LIGHTSPEED / GPS_FREQU_L5) /* m */
    92163
    93164#define GLO_FREQU_L1_BASE  1602000000.0  /* Hz */
     
    100171#define GLO_WAVELENGTH_L2(a) (LIGHTSPEED / GLO_FREQU_L2(a)) /* m */
    101172
     173#define GAL_FREQU_E1       1575420000.0  /* Hz */
     174#define GAL_FREQU_E5A      1176450000.0  /* Hz */
     175#define GAL_FREQU_E5AB     1197950000.0  /* Hz */
     176#define GAL_FREQU_E5B      1207140000.0  /* Hz */
     177#define GAL_FREQU_E6       1278750000.0  /* Hz */
     178#define GAL_WAVELENGTH_E1     (LIGHTSPEED / GAL_FREQU_E1) /* m */
     179#define GAL_WAVELENGTH_E5A    (LIGHTSPEED / GAL_FREQU_E5A) /* m */
     180#define GAL_WAVELENGTH_E5AB   (LIGHTSPEED / GAL_FREQU_E5AB) /* m */
     181#define GAL_WAVELENGTH_E5B    (LIGHTSPEED / GAL_FREQU_E5B) /* m */
     182#define GAL_WAVELENGTH_E6     (LIGHTSPEED / GAL_FREQU_E6) /* m */
     183
     184#define PRN_GIOVE_OFFSET 51
     185
    102186/* Additional flags for the data field, which tell us more. */
    103 #define GNSSDF_XCORRL2        (1<<28)  /* cross-correlated L2 */
    104 #define GNSSDF_LOCKLOSSL1     (1<<29)  /* lost lock on L1 */
    105 #define GNSSDF_LOCKLOSSL2     (1<<30)  /* lost lock on L2 */
     187#define GNSSDF2_XCORRL2        (1<<0)  /* cross-correlated L2 */
     188#define GNSSDF2_LOCKLOSSL1     (1<<1)  /* lost lock on L1 */
     189#define GNSSDF2_LOCKLOSSL2     (1<<2)  /* lost lock on L2 */
     190#define GNSSDF2_LOCKLOSSL5     (1<<3)  /* lost lock on L5 */
     191#define GNSSDF2_LOCKLOSSE6     (1<<4)  /* lost lock on E6 */
     192#define GNSSDF2_LOCKLOSSE5B    (1<<5)  /* lost lock on E5B */
     193#define GNSSDF2_LOCKLOSSE5AB   (1<<6)  /* lost lock on E5AB */
     194
     195#define UINT64(c) c ## ULL
    106196
    107197struct converttimeinfo {
     
    115205
    116206struct gnssdata {
    117   int    flags;              /* GPSF_xxx */
     207  int    flags;              /* GNSSF_xxx */
    118208  int    week;               /* week number of GPS date */
    119209  int    numsats;
    120210  double timeofweek;         /* milliseconds in GPS week */
    121211  double measdata[GNSS_MAXSATS][GNSSENTRY_NUMBER];  /* data fields */
    122   int    dataflags[GNSS_MAXSATS];      /* GPSDF_xxx */
     212  unsigned int dataflags[GNSS_MAXSATS];      /* GNSSDF_xxx */
     213  unsigned int dataflags2[GNSS_MAXSATS];     /* GNSSDF2_xxx */
    123214  int    satellites[GNSS_MAXSATS];     /* SV - IDs */
    124215  int    channels[GNSS_MAXSATS];       /* Glonass channels - valid of Glonass SV only */
     
    208299  struct glonassephemeris ephemerisGLONASS;
    209300  struct gnssdata DataNew;
     301  int    GLOFreq[PRN_GLONASS_NUM]; /* frequency numbers of GLONASS + 100 */
    210302  int    size;
    211303  int    lastlockGPSl1[64];
     
    213305  int    lastlockGLOl1[64];
    214306  int    lastlockGLOl2[64];
     307  int    lastlockmsm[RTCM3_MSM_NUMCELLS][NUMRTCM3PARSERSATS];
    215308#ifdef NO_RTCM3_MAIN
    216309  double antX;
Note: See TracChangeset for help on using the changeset viewer.