icd_200_constants.hpp

Go to the documentation of this file.
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 //  This file is part of GPSTk, the GPS Toolkit.
00017 //
00018 //  The GPSTk is free software; you can redistribute it and/or modify
00019 //  it under the terms of the GNU Lesser General Public License as published
00020 //  by the Free Software Foundation; either version 2.1 of the License, or
00021 //  any later version.
00022 //
00023 //  The GPSTk is distributed in the hope that it will be useful,
00024 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
00025 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00026 //  GNU Lesser General Public License for more details.
00027 //
00028 //  You should have received a copy of the GNU Lesser General Public
00029 //  License along with GPSTk; if not, write to the Free Software Foundation,
00030 //  Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00031 //  
00032 //  Copyright 2004, The University of Texas at Austin
00033 //
00034 //============================================================================
00035 
00036 //============================================================================
00037 //
00038 //This software developed by Applied Research Laboratories at the University of
00039 //Texas at Austin, under contract to an agency or agencies within the U.S. 
00040 //Department of Defense. The U.S. Government retains all rights to use,
00041 //duplicate, distribute, disclose, or release this software. 
00042 //
00043 //Pursuant to DoD Directive 523024 
00044 //
00045 // DISTRIBUTION STATEMENT A: This software has been approved for public 
00046 //                           release, distribution is unlimited.
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    // Modernized GPS
00098    const double L5_FREQ   = 1176.45e6;
00100    const double L5_WAVELENGTH  = 0.254828049;
00101 
00102    // Galileo-related
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 } // namespace
00182 
00183 #endif

Generated on Thu Feb 9 03:30:57 2012 for GPS ToolKit Software Library by  doxygen 1.3.9.1