mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-07-28 14:34:20 +00:00
126 lines
5.9 KiB
C
126 lines
5.9 KiB
C
![]() |
/*!
|
||
|
* \file rtklib_ephemeris.h
|
||
|
* \brief satellite ephemeris and clock functions
|
||
|
* \authors <ul>
|
||
|
* <li> 2007-2013, T. Takasu
|
||
|
* <li> 2017, Javier Arribas
|
||
|
* <li> 2017, Carles Fernandez
|
||
|
* </ul>
|
||
|
*
|
||
|
* This is a derived work from RTKLIB http://www.rtklib.com/
|
||
|
* The original source code at https://github.com/tomojitakasu/RTKLIB is
|
||
|
* released under the BSD 2-clause license with an additional exclusive clause
|
||
|
* that does not apply here. This additional clause is reproduced below:
|
||
|
*
|
||
|
* " The software package includes some companion executive binaries or shared
|
||
|
* libraries necessary to execute APs on Windows. These licenses succeed to the
|
||
|
* original ones of these software. "
|
||
|
*
|
||
|
* Neither the executive binaries nor the shared libraries are required by, used
|
||
|
* or included in GNSS-SDR.
|
||
|
*
|
||
|
* -------------------------------------------------------------------------
|
||
|
* Copyright (C) 2007-2013, T. Takasu
|
||
|
* Copyright (C) 2017, Javier Arribas
|
||
|
* Copyright (C) 2017, Carles Fernandez
|
||
|
* All rights reserved.
|
||
|
*
|
||
|
* Redistribution and use in source and binary forms, with or without
|
||
|
* modification, are permitted provided that the following conditions are
|
||
|
* met:
|
||
|
*
|
||
|
* 1. Redistributions of source code must retain the above copyright
|
||
|
* notice, this list of conditions and the following disclaimer.
|
||
|
*
|
||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||
|
* notice, this list of conditions and the following disclaimer in the
|
||
|
* documentation and/or other materials provided with the distribution.
|
||
|
*
|
||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||
|
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
|
|
||
|
* history : 2010/07/28 1.1 moved from rtkcmn.c
|
||
|
* added api:
|
||
|
* eph2clk(),geph2clk(),seph2clk(),satantoff()
|
||
|
* satposs()
|
||
|
* changed api:
|
||
|
* eph2pos(),geph2pos(),satpos()
|
||
|
* deleted api:
|
||
|
* satposv(),satposiode()
|
||
|
* 2010/08/26 1.2 add ephemeris option EPHOPT_LEX
|
||
|
* 2010/09/09 1.3 fix problem when precise clock outage
|
||
|
* 2011/01/12 1.4 add api alm2pos()
|
||
|
* change api satpos(),satposs()
|
||
|
* enable valid unhealthy satellites and output status
|
||
|
* fix bug on exception by glonass ephem computation
|
||
|
* 2013/01/10 1.5 support beidou (compass)
|
||
|
* use newton's method to solve kepler eq.
|
||
|
* update ssr correction algorithm
|
||
|
* 2013/03/20 1.6 fix problem on ssr clock relativitic correction
|
||
|
* 2013/09/01 1.7 support negative pseudorange
|
||
|
* fix bug on variance in case of ura ssr = 63
|
||
|
* 2013/11/11 1.8 change constant MAXAGESSR 70.0 -> 90.0
|
||
|
* 2014/10/24 1.9 fix bug on return of var_uraeph() if ura<0||15<ura
|
||
|
* 2014/12/07 1.10 modify MAXDTOE for qzss,gal and bds
|
||
|
* test max number of iteration for Kepler
|
||
|
* 2015/08/26 1.11 update RTOL_ELPLER 1E-14 -> 1E-13
|
||
|
* set MAX_ITER_KEPLER for alm2pos()
|
||
|
*-----------------------------------------------------------------------------*/
|
||
|
|
||
|
|
||
|
#ifndef RTKLIB_EPHEMERIS_H_
|
||
|
#define RTKLIB_EPHEMERIS_H_
|
||
|
|
||
|
#include "rtklib.h"
|
||
|
#include "rtklib_rtkcmn.h"
|
||
|
#include "rtklib_sbas.h"
|
||
|
#include "rtklib_preceph.h"
|
||
|
|
||
|
double var_uraeph(int ura);
|
||
|
double var_urassr(int ura);
|
||
|
void alm2pos(gtime_t time, const alm_t *alm, double *rs, double *dts);
|
||
|
double eph2clk(gtime_t time, const eph_t *eph);
|
||
|
void eph2pos(gtime_t time, const eph_t *eph, double *rs, double *dts,
|
||
|
double *var);
|
||
|
void deq(const double *x, double *xdot, const double *acc);
|
||
|
void glorbit(double t, double *x, const double *acc);
|
||
|
double geph2clk(gtime_t time, const geph_t *geph);
|
||
|
|
||
|
void geph2pos(gtime_t time, const geph_t *geph, double *rs, double *dts,
|
||
|
double *var);
|
||
|
double seph2clk(gtime_t time, const seph_t *seph);
|
||
|
void seph2pos(gtime_t time, const seph_t *seph, double *rs, double *dts,
|
||
|
double *var);
|
||
|
eph_t *seleph(gtime_t time, int sat, int iode, const nav_t *nav);
|
||
|
geph_t *selgeph(gtime_t time, int sat, int iode, const nav_t *nav);
|
||
|
seph_t *selseph(gtime_t time, int sat, const nav_t *nav);
|
||
|
int ephclk(gtime_t time, gtime_t teph, int sat, const nav_t *nav,
|
||
|
double *dts);
|
||
|
//satellite position and clock by broadcast ephemeris
|
||
|
int ephpos(gtime_t time, gtime_t teph, int sat, const nav_t *nav,
|
||
|
int iode, double *rs, double *dts, double *var, int *svh);
|
||
|
int satpos_sbas(gtime_t time, gtime_t teph, int sat, const nav_t *nav,
|
||
|
double *rs, double *dts, double *var, int *svh);
|
||
|
int satpos_ssr(gtime_t time, gtime_t teph, int sat, const nav_t *nav,
|
||
|
int opt, double *rs, double *dts, double *var, int *svh);
|
||
|
|
||
|
int satpos(gtime_t time, gtime_t teph, int sat, int ephopt,
|
||
|
const nav_t *nav, double *rs, double *dts, double *var,
|
||
|
int *svh);
|
||
|
void satposs(gtime_t teph, const obsd_t *obs, int n, const nav_t *nav,
|
||
|
int ephopt, double *rs, double *dts, double *var, int *svh);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#endif /* RTKLIB_EPHEMERIS_H_ */
|