source: ntrip/trunk/BNC/src/bncutils.h@ 7022

Last change on this file since 7022 was 6812, checked in by stoecker, 9 years ago

integrate RTCM3 parsing into BNC and directly fill target structures, add doxygen documentation

File size: 4.8 KB
RevLine 
[280]1// Part of BNC, a utility for retrieving decoding and
[464]2// converting GNSS data streams from NTRIP broadcasters.
[280]3//
[464]4// Copyright (C) 2007
[280]5// German Federal Agency for Cartography and Geodesy (BKG)
6// http://www.bkg.bund.de
[464]7// Czech Technical University Prague, Department of Geodesy
[280]8// http://www.fsv.cvut.cz
9//
10// Email: euref-ip@bkg.bund.de
11//
12// This program is free software; you can redistribute it and/or
13// modify it under the terms of the GNU General Public License
14// as published by the Free Software Foundation, version 2.
15//
16// This program is distributed in the hope that it will be useful,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19// GNU General Public License for more details.
20//
21// You should have received a copy of the GNU General Public License
22// along with this program; if not, write to the Free Software
23// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
[83]24
25#ifndef BNCUTILS_H
26#define BNCUTILS_H
27
[3408]28#include <vector>
29
[83]30#include <QString>
[125]31#include <QDateTime>
[83]32
[2043]33#include <newmat.h>
[2063]34#include <bncconst.h>
[6799]35#include <ephemeris.h>
[2043]36
[5807]37void expandEnvVar(QString& str);
[83]38
[6812]39/**
40 * Return GPS leap seconds for a given UTC time
41 * @param year 4 digit year
42 * @param month month in year (1-12)
43 * @param day day in month (1-31)
44 * @return number of leap seconds since 6.1.1980
45 */
46int gnumleap(int year, int month, int day);
47
48/**
49 * Convert Moscow time into GPS or UTC. Note that parts of a second are not preserved
50 * and must be handled separately.
51 * @param week GPS week number (must be prefilled, contains fixed value afterwards)
52 * @param secOfWeek seconds in GPS week (must be prefilled, contains fixed value afterwards)
53 * @param mSecOfWeek milli seconds in GLONASS time
54 * @param fixnumleap when <code>true</code> then result is UTC time, otherwise it is GPS
55 * @return does not return a value, but updates first two arguments
56 */
57void updatetime(int *week, int *secOfWeek, int mSecOfWeek, bool fixnumleap);
58
[5807]59QDateTime dateAndTimeFromGPSweek(int GPSWeek, double GPSWeeks);
[125]60
[5807]61void currentGPSWeeks(int& week, double& sec);
[210]62
[5807]63QDateTime currentDateAndTimeGPS();
[1154]64
[5807]65QByteArray ggaString(const QByteArray& latitude, const QByteArray& longitude,
[6786]66 const QByteArray& height, const QString& ggaType);
[1381]67
[5807]68void RSW_to_XYZ(const ColumnVector& rr, const ColumnVector& vv,
69 const ColumnVector& rsw, ColumnVector& xyz);
[2043]70
[5807]71void XYZ_to_RSW(const ColumnVector& rr, const ColumnVector& vv,
72 const ColumnVector& xyz, ColumnVector& rsw);
[2988]73
[5807]74t_irc xyz2ell(const double* XYZ, double* Ell);
[2063]75
[5807]76void xyz2neu(const double* Ell, const double* xyz, double* neu);
[2065]77
[5807]78void neu2xyz(const double* Ell, const double* neu, double* xyz);
[2582]79
[5807]80void jacobiXYZ_NEU(const double* Ell, Matrix& jacobi);
[5752]81
[5807]82void jacobiEll_XYZ(const double* Ell, Matrix& jacobi);
[5752]83
[5807]84void covariXYZ_NEU(const SymmetricMatrix& Qxyz, const double* Ell,
85 SymmetricMatrix& Qneu);
[5752]86
[5807]87void covariNEU_XYZ(const SymmetricMatrix& Qneu, const double* Ell,
88 SymmetricMatrix& Qxyz);
[5752]89
[5807]90double Frac(double x);
[5753]91
[5807]92double Modulo(double x, double y);
[3044]93
[5807]94double nint(double val);
[3044]95
[5807]96ColumnVector rungeKutta4(double xi, const ColumnVector& yi, double dx, double* acc,
97 ColumnVector (*der)(double x, const ColumnVector& y, double* acc));
[3171]98
[5807]99void GPSweekFromDateAndTime(const QDateTime& dateTime, int& GPSWeek, double& GPSWeeks);
[3044]100
[5807]101void GPSweekFromYMDhms(int year, int month, int day, int hour, int min, double sec,
102 int& GPSWeek, double& GPSWeeks);
[3408]103
[5807]104void mjdFromDateAndTime(const QDateTime& dateTime, int& mjd, double& dayfrac);
[3664]105
[5807]106bool findInVector(const std::vector<QString>& vv, const QString& str);
[3664]107
[5807]108int readInt(const QString& str, int pos, int len, int& value);
[4338]109
[5807]110int readDbl(const QString& str, int pos, int len, double& value);
[5230]111
[5807]112void topos(double xRec, double yRec, double zRec, double xSat, double ySat, double zSat,
113 double& rho, double& eleSat, double& azSat);
[5310]114
[5807]115void deg2DMS(double decDeg, int& deg, int& min, double& sec);
116
117QString fortranFormat(double value, int width, int prec);
118
119void kalman(const Matrix& AA, const ColumnVector& ll, const DiagonalMatrix& PP,
[6167]120 SymmetricMatrix& QQ, ColumnVector& xx);
[5807]121
[5885]122double djul(long j1, long m1, double tt);
123
[5886]124double gpjd(double second, int nweek) ;
125
[5885]126void jdgp(double tjul, double & second, long & nweek);
127
[5886]128void jmt (double djul, long& jj, long& mm, double& dd);
129
[5910]130void stripWhiteSpace(std::string& str);
131
[6799]132double accuracyFromIndex(int index, t_eph::e_type type);
133
134int indexFromAccuracy(double accuracy, t_eph::e_type type);
135
[83]136#endif
Note: See TracBrowser for help on using the repository browser.