00001 #pragma ident "$Id: icd_200_constants.hpp 2536 2011-03-25 18:28:44Z yanweignss $"
00002
00003
00004
00011 #ifndef GPSTK_ICD_200_CONSTANTS_HPP
00012 #define GPSTK_ICD_200_CONSTANTS_HPP
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052 #include <cmath>
00053
00054
00055 namespace gpstk
00056 {
00063
00064 const double PI = 3.1415926535898;
00066 const double TWO_PI = 6.2831853071796;
00068 const double SQRT_PI = 1.7724539;
00070 const double REL_CONST = -4.442807633e-10;
00072 const double OSC_FREQ = 10.23e6;
00074 const double PY_CHIP_FREQ = OSC_FREQ;
00076 const double CA_CHIP_FREQ = OSC_FREQ / 10.0;
00078 const double C_GPS_M = 2.99792458e8;
00080 const double RSVCLK = 10.22999999543e6;
00082 const double L1_FREQ = 1575.42e6;
00084 const double L1_WAVELENGTH = 0.190293672798;
00086 const double L2_FREQ = 1227.60e6;
00088 const double L2_WAVELENGTH = 0.244210213425;
00090 const double L1_MULT = 154.0;
00092 const double L2_MULT = 120.0;
00094 const double GAMMA_GPS = 1.646944444;
00095
00096
00098 const double L5_FREQ = 1176.45e6;
00100 const double L5_WAVELENGTH = 0.254828049;
00101
00102
00104 const double L6_FREQ = 1278.75e6;
00106 const double L6_WAVELENGTH = 0.234441805;
00108 const double L7_FREQ = 1207.140e6;
00110 const double L7_WAVELENGTH = 0.24834937;
00112 const double L8_FREQ = 1191.795e6;
00114 const double L8_WAVELENGTH = 0.251547001;
00115
00117 const int SV_ACCURACY_MAX_INDEX_VALUE = 15;
00119 const double SV_ACCURACY_MIN_INDEX[] = {0.0, 2.4, 3.4, 4.85, 6.85, 9.65,
00120 13.65, 24.0, 48.0, 96.0, 192.0,
00121 384.0, 768.0, 1536.0, 3072.0,
00122 6144.0};
00125 const double SV_ACCURACY_NOMINAL_INDEX[] = {2.0, 2.8, 4.0, 5.7, 8.0,
00126 11.3, 16.0, 32.0, 64.0, 128.0,
00127 256.0, 512.0, 1024.0, 2048.0,
00128 4096.0, 9.999999999999e99};
00130 const double SV_ACCURACY_MAX_INDEX[] = {2.4, 3.4, 4.85, 6.85, 9.65,
00131 13.65, 24.0, 48.0, 96.0, 192.0,
00132 384.0, 768.0, 1536.0, 3072.0,
00133 6144.0, 9.999999999999e99};
00134
00135 inline
00136 short accuracy2ura(const double& acc) throw()
00137 {
00138 short ura = 0;
00139 while ( (ura <= SV_ACCURACY_MAX_INDEX_VALUE) &&
00140 (acc > SV_ACCURACY_MAX_INDEX[ura]))
00141 ura++;
00142 if (ura > SV_ACCURACY_MAX_INDEX_VALUE)
00143 ura = SV_ACCURACY_MAX_INDEX_VALUE;
00144 return ura;
00145 }
00146
00147 inline
00148 double ura2accuracy(const short& ura) throw()
00149 {
00150 if(ura < 0)
00151 return SV_ACCURACY_MAX_INDEX[0];
00152 if(ura > SV_ACCURACY_MAX_INDEX_VALUE)
00153 return SV_ACCURACY_MAX_INDEX[SV_ACCURACY_MAX_INDEX_VALUE];
00154 return SV_ACCURACY_MAX_INDEX[ura];
00155 }
00156
00157 inline
00158 short nominalAccuracy2ura(const double& acc) throw()
00159 {
00160 short ura = 0;
00161 while ( (ura <= SV_ACCURACY_MAX_INDEX_VALUE) &&
00162 (acc > SV_ACCURACY_NOMINAL_INDEX[ura]))
00163 ura++;
00164 if (ura > SV_ACCURACY_MAX_INDEX_VALUE)
00165 ura = SV_ACCURACY_MAX_INDEX_VALUE;
00166 return ura;
00167 }
00168
00169 inline
00170 double ura2nominalAccuracy(const short& ura) throw()
00171 {
00172 if(ura < 0)
00173 return SV_ACCURACY_NOMINAL_INDEX[0];
00174 if(ura > SV_ACCURACY_MAX_INDEX_VALUE)
00175 return SV_ACCURACY_NOMINAL_INDEX[SV_ACCURACY_MAX_INDEX_VALUE];
00176 return SV_ACCURACY_NOMINAL_INDEX[ura];
00177 }
00178
00180
00181 }
00182
00183 #endif