Ignore:
Timestamp:
Jul 20, 2020, 3:54:44 PM (4 years ago)
Author:
stuerze
Message:

initial import igs ssr encoding and decoding + debug output

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/BNC_2.12/src/RTCM3/clock_and_orbit/clock_orbit_rtcm.h

    r8943 r8987  
    1313#include <string.h>
    1414
    15 enum SatelliteReferenceDatum { DATUM_ITRF=0, DATUM_LOCAL=1 };
     15
     16
     17
     18
     19
     20enum SatelliteReferenceDatum {
     21  DATUM_ITRF  = 0,
     22  DATUM_LOCAL = 1
     23};
    1624
    1725enum COR_BASE {
    18   COBBASE_GPS = 1057,
     26  COBBASE_GPS     = 1057,
    1927  COBBASE_GLONASS = 1063,
    2028  COBBASE_GALILEO = 1240,
    21   COBBASE_QZSS = 1246,
    22   COBBASE_SBAS = 1252,
    23   COBBASE_BDS = 1258,
     29  COBBASE_QZSS    = 1246,
     30  COBBASE_SBAS    = 1252,
     31  COBBASE_BDS     = 1258,
     32  COBBASE_NUM
    2433};
    2534
     
    2736  COBOFS_ORBIT = 0,
    2837  COBOFS_CLOCK,
    29   COBOFS_BIAS,
     38  COBOFS_CBIAS,
    3039  COBOFS_COMBINED,
    3140  COBOFS_URA,
     
    3544
    3645enum ClockOrbitType {
    37   COTYPE_GPSORBIT = COBBASE_GPS + COBOFS_ORBIT,
     46  COTYPE_GPSORBIT        = COBBASE_GPS    + COBOFS_ORBIT,
    3847  COTYPE_GPSCLOCK,
    39   COTYPE_GPSCOMBINED = COBBASE_GPS + COBOFS_COMBINED,
     48  COTYPE_GPSCOMBINED     = COBBASE_GPS    + COBOFS_COMBINED,
    4049  COTYPE_GPSURA,
    4150  COTYPE_GPSHR,
    4251
    43   COTYPE_GLONASSORBIT = COBBASE_GLONASS + COBOFS_ORBIT,
     52  COTYPE_GLONASSORBIT    = COBBASE_GLONASS + COBOFS_ORBIT,
    4453  COTYPE_GLONASSCLOCK,
    4554  COTYPE_GLONASSCOMBINED = COBBASE_GLONASS + COBOFS_COMBINED,
     
    4756  COTYPE_GLONASSHR,
    4857
    49   COTYPE_GALILEOORBIT = COBBASE_GALILEO + COBOFS_ORBIT,
     58  COTYPE_GALILEOORBIT    = COBBASE_GALILEO + COBOFS_ORBIT,
    5059  COTYPE_GALILEOCLOCK,
    5160  COTYPE_GALILEOCOMBINED = COBBASE_GALILEO + COBOFS_COMBINED,
     
    5362  COTYPE_GALILEOHR,
    5463
    55   COTYPE_QZSSORBIT = COBBASE_QZSS + COBOFS_ORBIT,
     64  COTYPE_QZSSORBIT       = COBBASE_QZSS    + COBOFS_ORBIT,
    5665  COTYPE_QZSSCLOCK,
    57   COTYPE_QZSSCOMBINED = COBBASE_QZSS + COBOFS_COMBINED,
     66  COTYPE_QZSSCOMBINED    = COBBASE_QZSS    + COBOFS_COMBINED,
    5867  COTYPE_QZSSURA,
    5968  COTYPE_QZSSHR,
    6069
    61   COTYPE_SBASORBIT = COBBASE_SBAS + COBOFS_ORBIT,
     70  COTYPE_SBASORBIT       = COBBASE_SBAS    + COBOFS_ORBIT,
    6271  COTYPE_SBASCLOCK,
    63   COTYPE_SBASCOMBINED = COBBASE_SBAS + COBOFS_COMBINED,
     72  COTYPE_SBASCOMBINED    = COBBASE_SBAS    + COBOFS_COMBINED,
    6473  COTYPE_SBASURA,
    6574  COTYPE_SBASHR,
    6675
    67   COTYPE_BDSORBIT = COBBASE_BDS + COBOFS_ORBIT,
     76  COTYPE_BDSORBIT        = COBBASE_BDS    + COBOFS_ORBIT,
    6877  COTYPE_BDSCLOCK,
    69   COTYPE_BDSCOMBINED = COBBASE_BDS + COBOFS_COMBINED,
     78  COTYPE_BDSCOMBINED     = COBBASE_BDS + COBOFS_COMBINED,
    7079  COTYPE_BDSURA,
    7180  COTYPE_BDSHR,
     
    7584
    7685enum CodeBiasType {
    77   BTYPE_GPS = COBBASE_GPS + COBOFS_BIAS,
    78   BTYPE_GLONASS = COBBASE_GLONASS + COBOFS_BIAS,
    79   BTYPE_GALILEO = COBBASE_GALILEO + COBOFS_BIAS,
    80   BTYPE_QZSS = COBBASE_QZSS + COBOFS_BIAS,
    81   BTYPE_SBAS = COBBASE_SBAS + COBOFS_BIAS,
    82   BTYPE_BDS = COBBASE_BDS + COBOFS_BIAS,
    83   BTYPE_AUTO = 0
    84 };
    85 
    86 enum PhaseBiasType {
    87   PBTYPE_BASE = 1265,
    88   PBTYPE_GPS = PBTYPE_BASE,
     86  CBTYPE_GPS     = COBBASE_GPS     + COBOFS_CBIAS,
     87  CBTYPE_GLONASS = COBBASE_GLONASS + COBOFS_CBIAS,
     88  CBTYPE_GALILEO = COBBASE_GALILEO + COBOFS_CBIAS,
     89  CBTYPE_QZSS    = COBBASE_QZSS    + COBOFS_CBIAS,
     90  CBTYPE_SBAS    = COBBASE_SBAS    + COBOFS_CBIAS,
     91  CBTYPE_BDS     = COBBASE_BDS     + COBOFS_CBIAS,
     92  CBTYPE_AUTO    = 0
     93};
     94
     95enum PhaseBiasType{
     96  PBTYPE_BASE    = 1265,
     97  PBTYPE_GPS     = PBTYPE_BASE,
    8998  PBTYPE_GLONASS,
    9099  PBTYPE_GALILEO,
     
    92101  PBTYPE_SBAS,
    93102  PBTYPE_BDS,
    94   PBTYPE_AUTO = 0
     103  PBTYPE_AUTO    = 0
    95104};
    96105
     
    102111for these systems to save space */
    103112enum COR_CONSTANTS {
    104   CLOCKORBIT_BUFFERSIZE=8192,
    105   CLOCKORBIT_NUMGPS=32,
    106   CLOCKORBIT_NUMGLONASS=26,
    107   CLOCKORBIT_NUMGALILEO=36,
    108   CLOCKORBIT_NUMQZSS=10,
    109   CLOCKORBIT_NUMSBAS=38,
    110   CLOCKORBIT_NUMBDS=65,
    111   CLOCKORBIT_NUMBIAS=100,
    112   CLOCKORBIT_NUMIONOLAYERS=4,
    113   CLOCKORBIT_MAXIONOORDER=16,
    114   CLOCKORBIT_MAXIONODEGREE=16
     113  CLOCKORBIT_BUFFERSIZE    = 8192,
     114  CLOCKORBIT_NUMGPS        =   32,
     115  CLOCKORBIT_NUMGLONASS    =   26,
     116  CLOCKORBIT_NUMGALILEO    =   36,
     117  CLOCKORBIT_NUMQZSS       =   10,
     118  CLOCKORBIT_NUMSBAS       =   38,
     119  CLOCKORBIT_NUMBDS        =   65,
     120  CLOCKORBIT_NUMBIAS       =  100,
     121  CLOCKORBIT_NUMIONOLAYERS =    4,
     122  CLOCKORBIT_MAXIONOORDER  =   16,
     123  CLOCKORBIT_MAXIONODEGREE =   16
    115124};
    116125
     
    126135
    127136enum COR_OFFSETS {
    128   CLOCKORBIT_OFFSETGPS=0,
    129   CLOCKORBIT_OFFSETGLONASS=CLOCKORBIT_NUMGPS,
    130   CLOCKORBIT_OFFSETGALILEO=CLOCKORBIT_NUMGPS+CLOCKORBIT_NUMGLONASS,
    131   CLOCKORBIT_OFFSETQZSS=CLOCKORBIT_NUMGPS+CLOCKORBIT_NUMGLONASS
    132   +CLOCKORBIT_NUMGALILEO,
    133   CLOCKORBIT_OFFSETSBAS=CLOCKORBIT_NUMGPS+CLOCKORBIT_NUMGLONASS
    134   +CLOCKORBIT_NUMGALILEO+CLOCKORBIT_NUMQZSS,
    135   CLOCKORBIT_OFFSETBDS=CLOCKORBIT_NUMGPS+CLOCKORBIT_NUMGLONASS
    136   +CLOCKORBIT_NUMGALILEO+CLOCKORBIT_NUMQZSS+CLOCKORBIT_NUMSBAS,
    137   CLOCKORBIT_COUNTSAT=CLOCKORBIT_NUMGPS+CLOCKORBIT_NUMGLONASS
    138   +CLOCKORBIT_NUMGALILEO+CLOCKORBIT_NUMQZSS+CLOCKORBIT_NUMSBAS
    139   +CLOCKORBIT_NUMBDS
     137  CLOCKORBIT_OFFSETGPS     = 0,
     138  CLOCKORBIT_OFFSETGLONASS = CLOCKORBIT_NUMGPS,
     139  CLOCKORBIT_OFFSETGALILEO = CLOCKORBIT_NUMGPS  + CLOCKORBIT_NUMGLONASS,
     140  CLOCKORBIT_OFFSETQZSS    = CLOCKORBIT_NUMGPS  + CLOCKORBIT_NUMGLONASS + CLOCKORBIT_NUMGALILEO,
     141  CLOCKORBIT_OFFSETSBAS    = CLOCKORBIT_NUMGPS  + CLOCKORBIT_NUMGLONASS + CLOCKORBIT_NUMGALILEO
     142                           + CLOCKORBIT_NUMQZSS,
     143  CLOCKORBIT_OFFSETBDS     = CLOCKORBIT_NUMGPS  + CLOCKORBIT_NUMGLONASS + CLOCKORBIT_NUMGALILEO
     144                           + CLOCKORBIT_NUMQZSS + CLOCKORBIT_NUMSBAS,
     145  CLOCKORBIT_COUNTSAT      = CLOCKORBIT_NUMGPS  + CLOCKORBIT_NUMGLONASS + CLOCKORBIT_NUMGALILEO
     146                           + CLOCKORBIT_NUMQZSS + CLOCKORBIT_NUMSBAS    + CLOCKORBIT_NUMBDS
    140147};
    141148
     
    220227  CODETYPE_SBAS_L5_Q         = 2,
    221228  CODETYPE_SBAS_L5_IQ        = 3,
     229
    222230  CODETYPE_BDS_B1_I          = 0,
    223231  CODETYPE_BDS_B1_Q          = 1,
     
    234242  CODETYPE_BDS_B2a_D         = 12,
    235243  CODETYPE_BDS_B2a_P         = 13,
    236   CODETYPE_BDS_B2a_DP        = 14,
    237 
    238   CODETYPE_IRNSS_S_SPS       = 8,
    239   CODETYPE_IRNSS_L5_SPS      = 22
     244  CODETYPE_BDS_B2a_DP        = 14
    240245};
    241246
     
    247252xxx->Sat[CLOCKORBIT_OFFSETGPS]. */
    248253
    249 #ifdef COR_LEGACY
    250 /* old names */
    251 #define NumberOfGPSSat     NumberOfSat[CLOCKORBIT_SATGPS]
    252 #define NumberOfGLONASSSat NumberOfSat[CLOCKORBIT_SATGLONASS]
    253 #define GPSEpochTime       EpochTime[CLOCKORBIT_SATGPS] /* 0 .. 604799 s */
    254 #define GLONASSEpochTime   EpochTime[CLOCKORBIT_SATGLONASS] /* 0 .. 86399 s (86400 for leap second) */
    255 #define ClockDataSupplied  Supplied[COBOFS_CLOCK]
    256 #define HRDataSupplied     Supplied[COBOFS_HR]
    257 #define OrbitDataSupplied  Supplied[COBOFS_ORBIT]
    258 #define URADataSupplied    Supplied[COBOFS_URA]
    259 #define GetClockOrbitBias(a,b,c,d,e) GetSSR(a,b,0,0,c,d,e)
    260 #endif /* COR_LEGACY */
    261 
    262 /* latency check code, disabled by default */
    263 #ifdef COR_LATENCY
    264 #define COR_LATENCYCOUNT 100
    265 #endif
    266 
    267 struct ClockOrbit
    268 {
     254struct ClockOrbit {
    269255  enum ClockOrbitType messageType;
    270256  unsigned int EpochTime[CLOCKORBIT_SATNUM];   /* 0 .. system specific maximum */
    271257  unsigned int NumberOfSat[CLOCKORBIT_SATNUM]; /* 0 .. CLOCKORBIT_NUM... */
    272 
    273258  unsigned int Supplied[COBOFS_NUM];           /* boolean */
    274 #ifdef COR_LATENCY
    275   unsigned int epochGPS[COR_LATENCYCOUNT+1];   /* Weber, for latency */
    276   unsigned int epochSize;                      /* Weber, for latency */
    277 #endif
    278259  unsigned int SSRIOD;
    279260  unsigned int SSRProviderID;
     
    287268    double UserRangeAccuracy; /* accuracy values in [m] */
    288269    double hrclock;
    289     struct OrbitPart
    290     {
     270    struct OrbitPart {
    291271      double DeltaRadial;           /* m */
    292272      double DeltaAlongTrack;       /* m */
     
    296276      double DotDeltaCrossTrack;    /* m/s */
    297277    } Orbit;
    298     struct ClockPart
    299     {
     278    struct ClockPart {
    300279      double DeltaA0;               /* m */
    301280      double DeltaA1;               /* m/s */
     
    305284};
    306285
    307 struct CodeBias
    308 {
     286struct CodeBias {
    309287  enum CodeBiasType messageType;
    310288  unsigned int EpochTime[CLOCKORBIT_SATNUM];   /* 0 .. system specific maximum */
     
    314292  unsigned int SSRProviderID;
    315293  unsigned int SSRSolutionID;
    316   struct BiasSat
    317   {
     294  struct BiasSat {
    318295    unsigned int ID; /* all */
    319296    unsigned int NumberOfCodeBiases;
    320     struct CodeBiasEntry
    321     {
     297    struct CodeBiasEntry {
    322298      enum CodeType Type;
    323299      float         Bias;           /* m */
     
    326302};
    327303
    328 struct PhaseBias
    329 {
     304struct PhaseBias {
    330305  enum PhaseBiasType messageType;
    331306  unsigned int EpochTime[CLOCKORBIT_SATNUM];   /* 0 .. system specific maximum */
     
    337312  unsigned int DispersiveBiasConsistencyIndicator;
    338313  unsigned int MWConsistencyIndicator;
    339   struct PhaseBiasSat
    340   {
     314  struct PhaseBiasSat {
    341315    unsigned int ID; /* all */
    342316    unsigned int NumberOfPhaseBiases;
    343317    double YawAngle; /* radiant */
    344318    double YawRate;  /* radiant/s */
    345     struct PhaseBiasEntry
    346     {
     319    struct PhaseBiasEntry {
    347320      enum CodeType Type;
    348321      unsigned int  SignalIntegerIndicator;
     
    354327};
    355328
    356 struct VTEC
    357 {
     329struct VTEC {
    358330  unsigned int EpochTime; /* GPS */
    359331  unsigned int UpdateInterval;
     
    384356enum GCOB_RETURN {
    385357  /* all well */
    386   GCOBR_MESSAGEFOLLOWS = 1,
    387   GCOBR_OK = 0,
     358  GCOBR_MESSAGEFOLLOWS        = 1,
     359  GCOBR_OK                    = 0,
    388360  /* unknown data, a warning */
    389   GCOBR_UNKNOWNTYPE = -1,
    390   GCOBR_UNKNOWNDATA = -2,
    391   GCOBR_CRCMISMATCH = -3,
    392   GCOBR_SHORTMESSAGE = -4,
     361  GCOBR_UNKNOWNTYPE           = -1,
     362  GCOBR_UNKNOWNDATA           = -2,
     363  GCOBR_CRCMISMATCH           = -3,
     364  GCOBR_SHORTMESSAGE          = -4,
    393365  /* failed to do the work */
    394366  GCOBR_NOCLOCKORBITPARAMETER = -10,
    395   GCOBR_NOCODEBIASPARAMETER = -11,
    396   GCOBR_NOPHASEBIASPARAMETER = -12,
    397   GCOBR_NOVTECPARAMETER = -13,
     367  GCOBR_NOCODEBIASPARAMETER   = -11,
     368  GCOBR_NOPHASEBIASPARAMETER  = -12,
     369  GCOBR_NOVTECPARAMETER       = -13,
    398370  /* data mismatch - data in storage does not match new data */
    399   GCOBR_TIMEMISMATCH = -20,
    400   GCOBR_DATAMISMATCH = -21,
     371  GCOBR_TIMEMISMATCH          = -20,
     372  GCOBR_DATAMISMATCH          = -21,
    401373  /* not enough data - can decode the block completely */
    402   GCOBR_SHORTBUFFER = -30,
    403   GCOBR_MESSAGEEXCEEDSBUFFER = -31};
     374  GCOBR_SHORTBUFFER           = -30,
     375  GCOBR_MESSAGEEXCEEDSBUFFER  = -31};
    404376
    405377/* NOTE: When an error message has been emitted, the output structures may have been modified. Make a copy of the previous variant before calling the
Note: See TracChangeset for help on using the changeset viewer.