mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-12-15 12:40:35 +00:00
Merge branch 'next' of https://github.com/carlesfernandez/gnss-sdr into next
This commit is contained in:
commit
0e5098f985
26
AUTHORS
26
AUTHORS
@ -1,7 +1,7 @@
|
|||||||
GNSS-SDR Authorship
|
GNSS-SDR Authorship
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
The GNSS-SDR project is hosted and sponsored by the Centre Tecnologic de
|
The GNSS-SDR project is hosted and sponsored by the Centre Tecnològic de
|
||||||
Telecomunicacions de Catalunya (CTTC), a non-profit research foundation located
|
Telecomunicacions de Catalunya (CTTC), a non-profit research foundation located
|
||||||
in Castelldefels (40.396764 N, 3.713379 E), 20 km south of Barcelona, Spain.
|
in Castelldefels (40.396764 N, 3.713379 E), 20 km south of Barcelona, Spain.
|
||||||
GNSS-SDR is the by-product of GNSS research conducted at the Communications
|
GNSS-SDR is the by-product of GNSS research conducted at the Communications
|
||||||
@ -33,24 +33,24 @@ Contact Information
|
|||||||
|
|
||||||
List of authors
|
List of authors
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
Carles Fernandez-Prades carles.fernandez@cttc.cat Project manager
|
Carles Fernández-Prades carles.fernandez@cttc.cat Project manager
|
||||||
Javier Arribas javier.arribas@cttc.es Developer
|
Javier Arribas javier.arribas@cttc.es Developer
|
||||||
Luis Esteve Elfau luis@epsilon-formacion.com Developer
|
Luis Esteve Elfau luis@epsilon-formacion.com Developer
|
||||||
Antonio Ramos antonio.ramos@cttc.es Developer
|
Antonio Ramos antonio.ramosdet@gmail.com Developer
|
||||||
Marc Majoral marc.majoral@cttc.cat Developer
|
Marc Majoral marc.majoral@cttc.cat Developer
|
||||||
|
Jordi Vilà-Valls jordi.vila@cttc.cat Consultant
|
||||||
Pau Closas pau.closas@northeastern.edu Consultant
|
Pau Closas pau.closas@northeastern.edu Consultant
|
||||||
Jordi Vila-Valls jordi.vila@cttc.cat Consultant
|
Andres Cecilia Luque a.cecilia.luque@gmail.com Contributor
|
||||||
Carlos Aviles carlos.avilesr@googlemail.com Contributor
|
Anthony Arnold anthony.arnold@uqconnect.edu.au Contributor
|
||||||
|
Carlos Avilés carlos.avilesr@googlemail.com Contributor
|
||||||
|
Cillian O'Driscoll cillian.odriscoll@gmail.com Contributor
|
||||||
|
Damian Miralles dmiralles2009@gmail.com Contributor
|
||||||
|
Daniel Fehr daniel.co@bluewin.ch Contributor
|
||||||
David Pubill david.pubill@cttc.cat Contributor
|
David Pubill david.pubill@cttc.cat Contributor
|
||||||
|
Fran Fabra fabra@ice.csic.es Contributor
|
||||||
|
Gabriel Araujo gabriel.araujo.5000@gmail.com Contributor
|
||||||
|
Leonardo Tonetto tonetto.dev@gmail.com Contributor
|
||||||
Mara Branzanti mara.branzanti@gmail.com Contributor
|
Mara Branzanti mara.branzanti@gmail.com Contributor
|
||||||
Marc Molina marc.molina.pena@gmail.com Contributor
|
Marc Molina marc.molina.pena@gmail.com Contributor
|
||||||
Daniel Fehr daniel.co@bluewin.ch Contributor
|
|
||||||
Marc Sales marcsales92@gmail.com Contributor
|
Marc Sales marcsales92@gmail.com Contributor
|
||||||
Damian Miralles dmiralles2009@gmail.com Contributor
|
|
||||||
Andres Cecilia Luque a.cecilia.luque@gmail.com Contributor
|
|
||||||
Leonardo Tonetto tonetto.dev@gmail.com Contributor
|
|
||||||
Anthony Arnold anthony.arnold@uqconnect.edu.au Contributor
|
|
||||||
Fran Fabra fabra@ice.csic.es Contributor
|
|
||||||
Cillian O'Driscoll cillian.odriscoll@gmail.com Contributor
|
|
||||||
Gabriel Araujo gabriel.araujo.5000@gmail.com Contributor
|
|
||||||
Carlos Paniego carpanie@hotmail.com Artwork
|
Carlos Paniego carpanie@hotmail.com Artwork
|
||||||
|
@ -5,17 +5,18 @@ tags:
|
|||||||
- gnss
|
- gnss
|
||||||
- gps
|
- gps
|
||||||
- Galileo
|
- Galileo
|
||||||
|
- Glonass
|
||||||
author:
|
author:
|
||||||
- Carles Fernandez-Prades <carles.fernandez@cttc.es>
|
- Carles Fernandez-Prades <carles.fernandez@cttc.es>
|
||||||
- Javier Arribas <javier.arribas@cttc.es>
|
- Javier Arribas <javier.arribas@cttc.es>
|
||||||
- et altri (see AUTHORS file for a list of contributors)
|
- et altri (see AUTHORS file for a list of contributors)
|
||||||
copyright_owner:
|
copyright_owner:
|
||||||
- The Authors
|
- The Authors
|
||||||
dependencies: gnuradio (>= 3.7.3), armadillo, gflags, glog, gnutls
|
dependencies: gnuradio (>= 3.7.3), armadillo, gflags, glog, gnutls, matio
|
||||||
license: GPLv3+
|
license: GPLv3+
|
||||||
repo: https://github.com/gnss-sdr/gnss-sdr
|
repo: https://github.com/gnss-sdr/gnss-sdr
|
||||||
website: https://gnss-sdr.org
|
website: https://gnss-sdr.org
|
||||||
icon: https://a.fsdn.com/con/app/proj/gnss-sdr/screenshots/logo400x400.jpg
|
icon: https://raw.githubusercontent.com/gnss-sdr/gnss-sdr/master/docs/doxygen/images/gnss-sdr_logo.png
|
||||||
---
|
---
|
||||||
Global Navigation Satellite Systems receiver defined by software. It performs all the signal
|
Global Navigation Satellite Systems receiver defined by software. It performs all the signal
|
||||||
processing from raw signal samples up to the computation of the Position-Velocity-Time solution,
|
processing from raw signal samples up to the computation of the Position-Velocity-Time solution,
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
# that follow. The default is UTF-8 which is also the encoding used for all
|
# that follow. The default is UTF-8 which is also the encoding used for all
|
||||||
# text before the first occurrence of this tag. Doxygen uses libiconv (or the
|
# text before the first occurrence of this tag. Doxygen uses libiconv (or the
|
||||||
# iconv built into libc) for the transcoding. See
|
# iconv built into libc) for the transcoding. See
|
||||||
# http://www.gnu.org/software/libiconv for the list of possible encodings.
|
# https://www.gnu.org/software/libiconv for the list of possible encodings.
|
||||||
|
|
||||||
DOXYFILE_ENCODING = UTF-8
|
DOXYFILE_ENCODING = UTF-8
|
||||||
|
|
||||||
@ -551,7 +551,7 @@ LAYOUT_FILE =
|
|||||||
# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
|
# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
|
||||||
# the reference definitions. This must be a list of .bib files. The .bib
|
# the reference definitions. This must be a list of .bib files. The .bib
|
||||||
# extension is automatically appended if omitted. This requires the bibtex tool
|
# extension is automatically appended if omitted. This requires the bibtex tool
|
||||||
# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
|
# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info.
|
||||||
# For LaTeX the style of the bibliography can be controlled using
|
# For LaTeX the style of the bibliography can be controlled using
|
||||||
# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
|
# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
|
||||||
# search path. See also \cite for info how to create references.
|
# search path. See also \cite for info how to create references.
|
||||||
@ -623,7 +623,7 @@ INPUT = @top_srcdir@/src @top_srcdir@/docs/doxygen/other
|
|||||||
# This tag can be used to specify the character encoding of the source files
|
# This tag can be used to specify the character encoding of the source files
|
||||||
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
|
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
|
||||||
# also the default input encoding. Doxygen uses libiconv (or the iconv built
|
# also the default input encoding. Doxygen uses libiconv (or the iconv built
|
||||||
# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
|
# into libc) for the transcoding. See https://www.gnu.org/software/libiconv for
|
||||||
# the list of possible encodings.
|
# the list of possible encodings.
|
||||||
|
|
||||||
INPUT_ENCODING = UTF-8
|
INPUT_ENCODING = UTF-8
|
||||||
@ -796,7 +796,7 @@ SOURCE_TOOLTIPS = YES
|
|||||||
# If the USE_HTAGS tag is set to YES then the references to source code
|
# If the USE_HTAGS tag is set to YES then the references to source code
|
||||||
# will point to the HTML generated by the htags(1) tool instead of doxygen
|
# will point to the HTML generated by the htags(1) tool instead of doxygen
|
||||||
# built-in source browser. The htags tool is part of GNU's global source
|
# built-in source browser. The htags tool is part of GNU's global source
|
||||||
# tagging system (see http://www.gnu.org/software/global/global.html). You
|
# tagging system (see https://www.gnu.org/software/global/global.html). You
|
||||||
# will need version 4.8.6 or higher.
|
# will need version 4.8.6 or higher.
|
||||||
|
|
||||||
USE_HTAGS = NO
|
USE_HTAGS = NO
|
||||||
@ -875,7 +875,7 @@ HTML_STYLESHEET =
|
|||||||
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
|
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
|
||||||
# Doxygen will adjust the colors in the stylesheet and background images
|
# Doxygen will adjust the colors in the stylesheet and background images
|
||||||
# according to this color. Hue is specified as an angle on a colorwheel,
|
# according to this color. Hue is specified as an angle on a colorwheel,
|
||||||
# see http://en.wikipedia.org/wiki/Hue for more information.
|
# see https://en.wikipedia.org/wiki/Hue for more information.
|
||||||
# For instance the value 0 represents red, 60 is yellow, 120 is green,
|
# For instance the value 0 represents red, 60 is yellow, 120 is green,
|
||||||
# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
|
# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
|
||||||
# The allowed range is 0 to 359.
|
# The allowed range is 0 to 359.
|
||||||
@ -925,8 +925,6 @@ HTML_DYNAMIC_SECTIONS = NO
|
|||||||
# directory and running "make install" will install the docset in
|
# directory and running "make install" will install the docset in
|
||||||
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
|
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
|
||||||
# it at startup.
|
# it at startup.
|
||||||
# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
|
|
||||||
# for more information.
|
|
||||||
|
|
||||||
GENERATE_DOCSET = NO
|
GENERATE_DOCSET = NO
|
||||||
|
|
||||||
@ -1123,7 +1121,7 @@ FORMULA_FONTSIZE = 10
|
|||||||
FORMULA_TRANSPARENT = YES
|
FORMULA_TRANSPARENT = YES
|
||||||
|
|
||||||
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
|
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
|
||||||
# (see http://www.mathjax.org) which uses client side Javascript for the
|
# (see https://www.mathjax.org) which uses client side Javascript for the
|
||||||
# rendering instead of using prerendered bitmaps. Use this if you do not
|
# rendering instead of using prerendered bitmaps. Use this if you do not
|
||||||
# have LaTeX installed or if you want to formulas look prettier in the HTML
|
# have LaTeX installed or if you want to formulas look prettier in the HTML
|
||||||
# output. When enabled you also need to install MathJax separately and
|
# output. When enabled you also need to install MathJax separately and
|
||||||
@ -1133,7 +1131,7 @@ USE_MATHJAX = @GNSSSDR_USE_MATHJAX@
|
|||||||
|
|
||||||
# When MathJax is enabled you can set the default output format to be used for
|
# When MathJax is enabled you can set the default output format to be used for
|
||||||
# the MathJax output. See the MathJax site (see:
|
# the MathJax output. See the MathJax site (see:
|
||||||
# http://docs.mathjax.org/en/latest/output.html) for more details.
|
# https://docs.mathjax.org/en/latest/output.html) for more details.
|
||||||
# Possible values are: HTML-CSS (which is slower, but has the best
|
# Possible values are: HTML-CSS (which is slower, but has the best
|
||||||
# compatibility), NativeMML (i.e. MathML) and SVG.
|
# compatibility), NativeMML (i.e. MathML) and SVG.
|
||||||
# The default value is: HTML-CSS.
|
# The default value is: HTML-CSS.
|
||||||
@ -1149,7 +1147,7 @@ MATHJAX_FORMAT = HTML-CSS
|
|||||||
# MathJax, but it is strongly recommended to install a local copy of MathJax
|
# MathJax, but it is strongly recommended to install a local copy of MathJax
|
||||||
# before deployment.
|
# before deployment.
|
||||||
|
|
||||||
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
|
MATHJAX_RELPATH = https://cdnjs.com/libraries/mathjax/
|
||||||
|
|
||||||
# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
|
# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
|
||||||
# extension names that should be enabled during MathJax rendering. For example
|
# extension names that should be enabled during MathJax rendering. For example
|
||||||
@ -1160,7 +1158,7 @@ MATHJAX_EXTENSIONS =
|
|||||||
|
|
||||||
# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
|
# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
|
||||||
# of code that will be used on startup of the MathJax code. See the MathJax site
|
# of code that will be used on startup of the MathJax code. See the MathJax site
|
||||||
# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
|
# (see: https://docs.mathjax.org/en/latest/output.html) for more details. For an
|
||||||
# example see the documentation.
|
# example see the documentation.
|
||||||
# This tag requires that the tag USE_MATHJAX is set to YES.
|
# This tag requires that the tag USE_MATHJAX is set to YES.
|
||||||
|
|
||||||
@ -1194,7 +1192,7 @@ SERVER_BASED_SEARCH = NO
|
|||||||
#
|
#
|
||||||
# Doxygen ships with an example indexer (doxyindexer) and search engine
|
# Doxygen ships with an example indexer (doxyindexer) and search engine
|
||||||
# (doxysearch.cgi) which are based on the open source search engine library
|
# (doxysearch.cgi) which are based on the open source search engine library
|
||||||
# Xapian (see: http://xapian.org/).
|
# Xapian (see: https://xapian.org/).
|
||||||
#
|
#
|
||||||
# See the section "External Indexing and Searching" for details.
|
# See the section "External Indexing and Searching" for details.
|
||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
@ -1207,7 +1205,7 @@ EXTERNAL_SEARCH = NO
|
|||||||
#
|
#
|
||||||
# Doxygen ships with an example indexer (doxyindexer) and search engine
|
# Doxygen ships with an example indexer (doxyindexer) and search engine
|
||||||
# (doxysearch.cgi) which are based on the open source search engine library
|
# (doxysearch.cgi) which are based on the open source search engine library
|
||||||
# Xapian (see: http://xapian.org/). See the section "External Indexing and
|
# Xapian (see: https://xapian.org/). See the section "External Indexing and
|
||||||
# Searching" for details.
|
# Searching" for details.
|
||||||
# This tag requires that the tag SEARCHENGINE is set to YES.
|
# This tag requires that the tag SEARCHENGINE is set to YES.
|
||||||
|
|
||||||
@ -1358,7 +1356,7 @@ LATEX_SOURCE_CODE = NO
|
|||||||
|
|
||||||
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
|
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
|
||||||
# bibliography, e.g. plainnat, or ieeetr. See
|
# bibliography, e.g. plainnat, or ieeetr. See
|
||||||
# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
|
# https://en.wikipedia.org/wiki/BibTeX and \cite for more info.
|
||||||
# The default value is: plain.
|
# The default value is: plain.
|
||||||
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
# This tag specifies the encoding used for all characters in the config file
|
# This tag specifies the encoding used for all characters in the config file
|
||||||
# that follow. The default is UTF-8 which is also the encoding used for all text
|
# that follow. The default is UTF-8 which is also the encoding used for all text
|
||||||
# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
|
# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
|
||||||
# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
|
# built into libc) for the transcoding. See https://www.gnu.org/software/libiconv
|
||||||
# for the list of possible encodings.
|
# for the list of possible encodings.
|
||||||
# The default value is: UTF-8.
|
# The default value is: UTF-8.
|
||||||
|
|
||||||
@ -287,7 +287,7 @@ EXTENSION_MAPPING =
|
|||||||
|
|
||||||
# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
|
# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
|
||||||
# according to the Markdown format, which allows for more readable
|
# according to the Markdown format, which allows for more readable
|
||||||
# documentation. See http://daringfireball.net/projects/markdown/ for details.
|
# documentation. See https://daringfireball.net/projects/markdown/ for details.
|
||||||
# The output of markdown processing is further processed by doxygen, so you can
|
# The output of markdown processing is further processed by doxygen, so you can
|
||||||
# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
|
# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
|
||||||
# case of backward compatibilities issues.
|
# case of backward compatibilities issues.
|
||||||
@ -320,7 +320,7 @@ BUILTIN_STL_SUPPORT = NO
|
|||||||
CPP_CLI_SUPPORT = NO
|
CPP_CLI_SUPPORT = NO
|
||||||
|
|
||||||
# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
|
# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
|
||||||
# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
|
# https://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
|
||||||
# will parse them like normal C++ but will assume all classes use public instead
|
# will parse them like normal C++ but will assume all classes use public instead
|
||||||
# of private inheritance when no explicit protection keyword is present.
|
# of private inheritance when no explicit protection keyword is present.
|
||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
@ -679,7 +679,7 @@ LAYOUT_FILE = @PROJECT_SOURCE_DIR@/DoxygenLayout.xml
|
|||||||
# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
|
# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
|
||||||
# the reference definitions. This must be a list of .bib files. The .bib
|
# the reference definitions. This must be a list of .bib files. The .bib
|
||||||
# extension is automatically appended if omitted. This requires the bibtex tool
|
# extension is automatically appended if omitted. This requires the bibtex tool
|
||||||
# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
|
# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info.
|
||||||
# For LaTeX the style of the bibliography can be controlled using
|
# For LaTeX the style of the bibliography can be controlled using
|
||||||
# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
|
# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
|
||||||
# search path. Do not use file names with spaces, bibtex cannot handle them. See
|
# search path. Do not use file names with spaces, bibtex cannot handle them. See
|
||||||
@ -761,7 +761,7 @@ INPUT = @PROJECT_SOURCE_DIR@
|
|||||||
# This tag can be used to specify the character encoding of the source files
|
# This tag can be used to specify the character encoding of the source files
|
||||||
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
|
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
|
||||||
# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
|
# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
|
||||||
# documentation (see: http://www.gnu.org/software/libiconv) for the list of
|
# documentation (see: https://www.gnu.org/software/libiconv) for the list of
|
||||||
# possible encodings.
|
# possible encodings.
|
||||||
# The default value is: UTF-8.
|
# The default value is: UTF-8.
|
||||||
|
|
||||||
@ -994,7 +994,7 @@ SOURCE_TOOLTIPS = YES
|
|||||||
# If the USE_HTAGS tag is set to YES then the references to source code will
|
# If the USE_HTAGS tag is set to YES then the references to source code will
|
||||||
# point to the HTML generated by the htags(1) tool instead of doxygen built-in
|
# point to the HTML generated by the htags(1) tool instead of doxygen built-in
|
||||||
# source browser. The htags tool is part of GNU's global source tagging system
|
# source browser. The htags tool is part of GNU's global source tagging system
|
||||||
# (see http://www.gnu.org/software/global/global.html). You will need version
|
# (see https://www.gnu.org/software/global/global.html). You will need version
|
||||||
# 4.8.6 or higher.
|
# 4.8.6 or higher.
|
||||||
#
|
#
|
||||||
# To use it do the following:
|
# To use it do the following:
|
||||||
@ -1137,7 +1137,7 @@ HTML_EXTRA_FILES =
|
|||||||
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
|
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
|
||||||
# will adjust the colors in the stylesheet and background images according to
|
# will adjust the colors in the stylesheet and background images according to
|
||||||
# this color. Hue is specified as an angle on a colorwheel, see
|
# this color. Hue is specified as an angle on a colorwheel, see
|
||||||
# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
|
# https://en.wikipedia.org/wiki/Hue for more information. For instance the value
|
||||||
# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
|
# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
|
||||||
# purple, and 360 is red again.
|
# purple, and 360 is red again.
|
||||||
# Minimum value: 0, maximum value: 359, default value: 220.
|
# Minimum value: 0, maximum value: 359, default value: 220.
|
||||||
@ -1195,13 +1195,12 @@ HTML_INDEX_NUM_ENTRIES = 100
|
|||||||
|
|
||||||
# If the GENERATE_DOCSET tag is set to YES, additional index files will be
|
# If the GENERATE_DOCSET tag is set to YES, additional index files will be
|
||||||
# generated that can be used as input for Apple's Xcode 3 integrated development
|
# generated that can be used as input for Apple's Xcode 3 integrated development
|
||||||
# environment (see: http://developer.apple.com/tools/xcode/), introduced with
|
# environment (see: https://developer.apple.com/xcode/), introduced with
|
||||||
# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
|
# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
|
||||||
# Makefile in the HTML output directory. Running make will produce the docset in
|
# Makefile in the HTML output directory. Running make will produce the docset in
|
||||||
# that directory and running make install will install the docset in
|
# that directory and running make install will install the docset in
|
||||||
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
|
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
|
||||||
# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
|
# startup.
|
||||||
# for more information.
|
|
||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||||
|
|
||||||
@ -1240,7 +1239,7 @@ DOCSET_PUBLISHER_NAME = Publisher
|
|||||||
# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
|
# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
|
||||||
# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
|
# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
|
||||||
# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
|
# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
|
||||||
# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
|
# (see: https://www.microsoft.com/en-us/download/details.aspx?id=21138) on
|
||||||
# Windows.
|
# Windows.
|
||||||
#
|
#
|
||||||
# The HTML Help Workshop contains a compiler that can convert all HTML output
|
# The HTML Help Workshop contains a compiler that can convert all HTML output
|
||||||
@ -1453,7 +1452,7 @@ FORMULA_FONTSIZE = 10
|
|||||||
FORMULA_TRANSPARENT = YES
|
FORMULA_TRANSPARENT = YES
|
||||||
|
|
||||||
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
|
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
|
||||||
# http://www.mathjax.org) which uses client side Javascript for the rendering
|
# https://www.mathjax.org) which uses client side Javascript for the rendering
|
||||||
# instead of using prerendered bitmaps. Use this if you do not have LaTeX
|
# instead of using prerendered bitmaps. Use this if you do not have LaTeX
|
||||||
# installed or if you want to formulas look prettier in the HTML output. When
|
# installed or if you want to formulas look prettier in the HTML output. When
|
||||||
# enabled you may also need to install MathJax separately and configure the path
|
# enabled you may also need to install MathJax separately and configure the path
|
||||||
@ -1465,7 +1464,7 @@ USE_MATHJAX = NO
|
|||||||
|
|
||||||
# When MathJax is enabled you can set the default output format to be used for
|
# When MathJax is enabled you can set the default output format to be used for
|
||||||
# the MathJax output. See the MathJax site (see:
|
# the MathJax output. See the MathJax site (see:
|
||||||
# http://docs.mathjax.org/en/latest/output.html) for more details.
|
# https://docs.mathjax.org/en/latest/output.html) for more details.
|
||||||
# Possible values are: HTML-CSS (which is slower, but has the best
|
# Possible values are: HTML-CSS (which is slower, but has the best
|
||||||
# compatibility), NativeMML (i.e. MathML) and SVG.
|
# compatibility), NativeMML (i.e. MathML) and SVG.
|
||||||
# The default value is: HTML-CSS.
|
# The default value is: HTML-CSS.
|
||||||
@ -1480,11 +1479,11 @@ MATHJAX_FORMAT = HTML-CSS
|
|||||||
# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
|
# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
|
||||||
# Content Delivery Network so you can quickly see the result without installing
|
# Content Delivery Network so you can quickly see the result without installing
|
||||||
# MathJax. However, it is strongly recommended to install a local copy of
|
# MathJax. However, it is strongly recommended to install a local copy of
|
||||||
# MathJax from http://www.mathjax.org before deployment.
|
# MathJax from https://www.mathjax.org before deployment.
|
||||||
# The default value is: http://cdn.mathjax.org/mathjax/latest.
|
# The default value is: https://cdnjs.com/libraries/mathjax/.
|
||||||
# This tag requires that the tag USE_MATHJAX is set to YES.
|
# This tag requires that the tag USE_MATHJAX is set to YES.
|
||||||
|
|
||||||
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
|
MATHJAX_RELPATH = https://cdnjs.com/libraries/mathjax/
|
||||||
|
|
||||||
# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
|
# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
|
||||||
# extension names that should be enabled during MathJax rendering. For example
|
# extension names that should be enabled during MathJax rendering. For example
|
||||||
@ -1495,7 +1494,7 @@ MATHJAX_EXTENSIONS =
|
|||||||
|
|
||||||
# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
|
# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
|
||||||
# of code that will be used on startup of the MathJax code. See the MathJax site
|
# of code that will be used on startup of the MathJax code. See the MathJax site
|
||||||
# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
|
# (see: https://docs.mathjax.org/en/latest/output.html) for more details. For an
|
||||||
# example see the documentation.
|
# example see the documentation.
|
||||||
# This tag requires that the tag USE_MATHJAX is set to YES.
|
# This tag requires that the tag USE_MATHJAX is set to YES.
|
||||||
|
|
||||||
@ -1542,7 +1541,7 @@ SERVER_BASED_SEARCH = NO
|
|||||||
#
|
#
|
||||||
# Doxygen ships with an example indexer ( doxyindexer) and search engine
|
# Doxygen ships with an example indexer ( doxyindexer) and search engine
|
||||||
# (doxysearch.cgi) which are based on the open source search engine library
|
# (doxysearch.cgi) which are based on the open source search engine library
|
||||||
# Xapian (see: http://xapian.org/).
|
# Xapian (see: https://xapian.org/).
|
||||||
#
|
#
|
||||||
# See the section "External Indexing and Searching" for details.
|
# See the section "External Indexing and Searching" for details.
|
||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
@ -1555,7 +1554,7 @@ EXTERNAL_SEARCH = NO
|
|||||||
#
|
#
|
||||||
# Doxygen ships with an example indexer ( doxyindexer) and search engine
|
# Doxygen ships with an example indexer ( doxyindexer) and search engine
|
||||||
# (doxysearch.cgi) which are based on the open source search engine library
|
# (doxysearch.cgi) which are based on the open source search engine library
|
||||||
# Xapian (see: http://xapian.org/). See the section "External Indexing and
|
# Xapian (see: https://xapian.org/). See the section "External Indexing and
|
||||||
# Searching" for details.
|
# Searching" for details.
|
||||||
# This tag requires that the tag SEARCHENGINE is set to YES.
|
# This tag requires that the tag SEARCHENGINE is set to YES.
|
||||||
|
|
||||||
@ -1726,7 +1725,7 @@ LATEX_SOURCE_CODE = NO
|
|||||||
|
|
||||||
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
|
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
|
||||||
# bibliography, e.g. plainnat, or ieeetr. See
|
# bibliography, e.g. plainnat, or ieeetr. See
|
||||||
# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
|
# https://en.wikipedia.org/wiki/BibTeX and \cite for more info.
|
||||||
# The default value is: plain.
|
# The default value is: plain.
|
||||||
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
||||||
|
|
||||||
|
@ -76,8 +76,7 @@ This will put the code for the new kernel into
|
|||||||
|
|
||||||
Other kernels must be added by hand. See the following webpages for
|
Other kernels must be added by hand. See the following webpages for
|
||||||
more information about creating VOLK kernels:
|
more information about creating VOLK kernels:
|
||||||
http://gnuradio.org/doc/doxygen/volk_gnsssdr_guide.html
|
https://www.gnuradio.org/doc/doxygen/volk_guide.html
|
||||||
http://gnuradio.org/redmine/projects/gnuradio/wiki/Volk
|
|
||||||
|
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
|
@ -22,30 +22,10 @@ list(SORT SIGNAL_SOURCE_ADAPTER_HEADERS)
|
|||||||
# Optional drivers
|
# Optional drivers
|
||||||
|
|
||||||
if(ENABLE_RAW_UDP)
|
if(ENABLE_RAW_UDP)
|
||||||
# - Try to find libpcap include dirs and libraries
|
|
||||||
#
|
|
||||||
# Usage of this module as follows:
|
|
||||||
#
|
|
||||||
# find_package(PCAP)
|
|
||||||
#
|
|
||||||
# Variables used by this module, they can change the default behaviour and need
|
|
||||||
# to be set before calling find_package:
|
|
||||||
#
|
|
||||||
# PCAP_ROOT_DIR Set this variable to the root installation of
|
|
||||||
# libpcap if the module has problems finding the
|
|
||||||
# proper installation path.
|
|
||||||
#
|
|
||||||
# Variables defined by this module:
|
|
||||||
#
|
|
||||||
# PCAP_FOUND System has libpcap, include and library dirs found
|
|
||||||
# PCAP_INCLUDE_DIR The libpcap include directories.
|
|
||||||
# PCAP_LIBRARY The libpcap library (possibly includes a thread
|
|
||||||
# library e.g. required by pf_ring's libpcap)
|
|
||||||
# HAVE_PF_RING If a found version of libpcap supports PF_RING
|
|
||||||
find_package(PCAP)
|
find_package(PCAP)
|
||||||
if(NOT PCAP_FOUND)
|
if(NOT PCAP_FOUND)
|
||||||
message(FATAL_ERROR "PCAP required to compile custom UDP packet sample source (ENABLE_RAW_UDP)")
|
message(FATAL_ERROR "PCAP required to compile custom UDP packet sample source (ENABLE_RAW_UDP)")
|
||||||
endif()
|
endif(NOT PCAP_FOUND)
|
||||||
get_filename_component(PCAP_LIBRARY_DIRS ${PCAP_LIBRARY} DIRECTORY CACHE)
|
get_filename_component(PCAP_LIBRARY_DIRS ${PCAP_LIBRARY} DIRECTORY CACHE)
|
||||||
set(OPT_LIBRARIES ${OPT_LIBRARIES} ${PCAP_LIBRARIES})
|
set(OPT_LIBRARIES ${OPT_LIBRARIES} ${PCAP_LIBRARIES})
|
||||||
set(OPT_DRIVER_INCLUDE_DIRS ${OPT_DRIVER_INCLUDE_DIRS} ${PCAP_INCLUDE_DIRS})
|
set(OPT_DRIVER_INCLUDE_DIRS ${OPT_DRIVER_INCLUDE_DIRS} ${PCAP_INCLUDE_DIRS})
|
||||||
|
@ -18,30 +18,10 @@
|
|||||||
|
|
||||||
|
|
||||||
if(ENABLE_RAW_UDP)
|
if(ENABLE_RAW_UDP)
|
||||||
# - Try to find libpcap include dirs and libraries
|
|
||||||
#
|
|
||||||
# Usage of this module as follows:
|
|
||||||
#
|
|
||||||
# find_package(PCAP)
|
|
||||||
#
|
|
||||||
# Variables used by this module, they can change the default behaviour and need
|
|
||||||
# to be set before calling find_package:
|
|
||||||
#
|
|
||||||
# PCAP_ROOT_DIR Set this variable to the root installation of
|
|
||||||
# libpcap if the module has problems finding the
|
|
||||||
# proper installation path.
|
|
||||||
#
|
|
||||||
# Variables defined by this module:
|
|
||||||
#
|
|
||||||
# PCAP_FOUND System has libpcap, include and library dirs found
|
|
||||||
# PCAP_INCLUDE_DIR The libpcap include directories.
|
|
||||||
# PCAP_LIBRARY The libpcap library (possibly includes a thread
|
|
||||||
# library e.g. required by pf_ring's libpcap)
|
|
||||||
# HAVE_PF_RING If a found version of libpcap supports PF_RING
|
|
||||||
find_package(PCAP)
|
find_package(PCAP)
|
||||||
if(NOT PCAP_FOUND)
|
if(NOT PCAP_FOUND)
|
||||||
message(FATAL_ERROR "PCAP required to compile custom UDP packet sample source (ENABLE_RAW_UDP)")
|
message(FATAL_ERROR "PCAP required to compile custom UDP packet sample source (ENABLE_RAW_UDP)")
|
||||||
endif()
|
endif(NOT PCAP_FOUND)
|
||||||
get_filename_component(PCAP_LIBRARY_DIRS ${PCAP_LIBRARY} DIRECTORY CACHE)
|
get_filename_component(PCAP_LIBRARY_DIRS ${PCAP_LIBRARY} DIRECTORY CACHE)
|
||||||
set(OPT_LIBRARIES ${OPT_LIBRARIES} ${PCAP_LIBRARIES})
|
set(OPT_LIBRARIES ${OPT_LIBRARIES} ${PCAP_LIBRARIES})
|
||||||
set(OPT_DRIVER_INCLUDE_DIRS ${OPT_DRIVER_INCLUDE_DIRS} ${PCAP_INCLUDE_DIRS})
|
set(OPT_DRIVER_INCLUDE_DIRS ${OPT_DRIVER_INCLUDE_DIRS} ${PCAP_INCLUDE_DIRS})
|
||||||
|
@ -16,13 +16,11 @@
|
|||||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
set(GNSS_SDR_OPTIONAL_LIBS "")
|
set(GNSS_SDR_OPTIONAL_LIBS "")
|
||||||
set(GNSS_SDR_OPTIONAL_HEADERS "")
|
set(GNSS_SDR_OPTIONAL_HEADERS "")
|
||||||
|
|
||||||
if(ENABLE_GPERFTOOLS)
|
if(ENABLE_GPERFTOOLS)
|
||||||
if(GPERFTOOLS_FOUND)
|
if(GPERFTOOLS_FOUND)
|
||||||
#set(GNSS_SDR_OPTIONAL_LIBS "${GNSS_SDR_OPTIONAL_LIBS};${GPERFTOOLS_LIBRARIES}")
|
|
||||||
set(GNSS_SDR_OPTIONAL_LIBS "${GNSS_SDR_OPTIONAL_LIBS};${GPERFTOOLS_PROFILER};${GPERFTOOLS_TCMALLOC}")
|
set(GNSS_SDR_OPTIONAL_LIBS "${GNSS_SDR_OPTIONAL_LIBS};${GPERFTOOLS_PROFILER};${GPERFTOOLS_TCMALLOC}")
|
||||||
set(GNSS_SDR_OPTIONAL_HEADERS "${GNSS_SDR_OPTIONAL_HEADERS};${GPERFTOOLS_INCLUDE_DIR}")
|
set(GNSS_SDR_OPTIONAL_HEADERS "${GNSS_SDR_OPTIONAL_HEADERS};${GPERFTOOLS_INCLUDE_DIR}")
|
||||||
endif(GPERFTOOLS_FOUND)
|
endif(GPERFTOOLS_FOUND)
|
||||||
@ -48,7 +46,6 @@ if(ORC_FOUND)
|
|||||||
set(GNSS_SDR_OPTIONAL_HEADERS ${GNSS_SDR_OPTIONAL_HEADERS} ${ORC_INCLUDE_DIRS})
|
set(GNSS_SDR_OPTIONAL_HEADERS ${GNSS_SDR_OPTIONAL_HEADERS} ${ORC_INCLUDE_DIRS})
|
||||||
endif(ORC_FOUND)
|
endif(ORC_FOUND)
|
||||||
|
|
||||||
|
|
||||||
include_directories(
|
include_directories(
|
||||||
${CMAKE_SOURCE_DIR}/src/core/system_parameters
|
${CMAKE_SOURCE_DIR}/src/core/system_parameters
|
||||||
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
||||||
@ -76,13 +73,11 @@ if(OS_IS_MACOSX)
|
|||||||
endif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
endif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||||
endif(OS_IS_MACOSX)
|
endif(OS_IS_MACOSX)
|
||||||
|
|
||||||
|
|
||||||
add_executable(gnss-sdr ${CMAKE_CURRENT_SOURCE_DIR}/main.cc)
|
add_executable(gnss-sdr ${CMAKE_CURRENT_SOURCE_DIR}/main.cc)
|
||||||
|
|
||||||
add_custom_command(TARGET gnss-sdr POST_BUILD
|
add_custom_command(TARGET gnss-sdr POST_BUILD
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:gnss-sdr>
|
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:gnss-sdr>
|
||||||
${CMAKE_SOURCE_DIR}/install/$<TARGET_FILE_NAME:gnss-sdr>
|
${CMAKE_SOURCE_DIR}/install/$<TARGET_FILE_NAME:gnss-sdr> )
|
||||||
)
|
|
||||||
|
|
||||||
target_link_libraries(gnss-sdr ${MAC_LIBRARIES}
|
target_link_libraries(gnss-sdr ${MAC_LIBRARIES}
|
||||||
${Boost_LIBRARIES}
|
${Boost_LIBRARIES}
|
||||||
@ -97,18 +92,14 @@ target_link_libraries(gnss-sdr ${MAC_LIBRARIES}
|
|||||||
${GNSS_SDR_OPTIONAL_LIBS}
|
${GNSS_SDR_OPTIONAL_LIBS}
|
||||||
gnss_sp_libs
|
gnss_sp_libs
|
||||||
gnss_sdr_flags
|
gnss_sdr_flags
|
||||||
gnss_rx
|
gnss_rx )
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
install(TARGETS gnss-sdr
|
install(TARGETS gnss-sdr
|
||||||
RUNTIME DESTINATION bin
|
RUNTIME DESTINATION bin
|
||||||
COMPONENT "gnss-sdr"
|
COMPONENT "gnss-sdr" )
|
||||||
)
|
|
||||||
|
|
||||||
install(DIRECTORY ${CMAKE_SOURCE_DIR}/conf DESTINATION share/gnss-sdr
|
install(DIRECTORY ${CMAKE_SOURCE_DIR}/conf DESTINATION share/gnss-sdr
|
||||||
FILES_MATCHING PATTERN "*.conf"
|
FILES_MATCHING PATTERN "*.conf" )
|
||||||
)
|
|
||||||
|
|
||||||
install(FILES ${CMAKE_SOURCE_DIR}/conf/gnss-sdr.conf DESTINATION share/gnss-sdr/conf
|
install(FILES ${CMAKE_SOURCE_DIR}/conf/gnss-sdr.conf DESTINATION share/gnss-sdr/conf
|
||||||
RENAME default.conf)
|
RENAME default.conf)
|
||||||
@ -118,7 +109,6 @@ if(NOT VOLK_GNSSSDR_FOUND)
|
|||||||
install(PROGRAMS ${CMAKE_BINARY_DIR}/volk_gnsssdr_module/build/apps/volk_gnsssdr-config-info DESTINATION bin COMPONENT "volk_gnsssdr")
|
install(PROGRAMS ${CMAKE_BINARY_DIR}/volk_gnsssdr_module/build/apps/volk_gnsssdr-config-info DESTINATION bin COMPONENT "volk_gnsssdr")
|
||||||
endif(NOT VOLK_GNSSSDR_FOUND)
|
endif(NOT VOLK_GNSSSDR_FOUND)
|
||||||
|
|
||||||
|
|
||||||
find_program(GZIP
|
find_program(GZIP
|
||||||
gzip
|
gzip
|
||||||
/bin
|
/bin
|
||||||
@ -127,6 +117,7 @@ find_program(GZIP
|
|||||||
/opt/local/bin
|
/opt/local/bin
|
||||||
/sbin
|
/sbin
|
||||||
)
|
)
|
||||||
|
|
||||||
if(NOT GZIP_NOTFOUND)
|
if(NOT GZIP_NOTFOUND)
|
||||||
execute_process(COMMAND gzip -9 -c ${CMAKE_SOURCE_DIR}/docs/manpage/gnss-sdr-manpage
|
execute_process(COMMAND gzip -9 -c ${CMAKE_SOURCE_DIR}/docs/manpage/gnss-sdr-manpage
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR} OUTPUT_FILE "${CMAKE_BINARY_DIR}/gnss-sdr.1.gz")
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR} OUTPUT_FILE "${CMAKE_BINARY_DIR}/gnss-sdr.1.gz")
|
||||||
|
@ -146,8 +146,6 @@ FrontEndCal_msg_rx::FrontEndCal_msg_rx() : gr::block("FrontEndCal_msg_rx", gr::i
|
|||||||
FrontEndCal_msg_rx::~FrontEndCal_msg_rx() {}
|
FrontEndCal_msg_rx::~FrontEndCal_msg_rx() {}
|
||||||
|
|
||||||
|
|
||||||
// ###########################################################
|
|
||||||
|
|
||||||
void wait_message()
|
void wait_message()
|
||||||
{
|
{
|
||||||
while (!stop)
|
while (!stop)
|
||||||
@ -234,8 +232,6 @@ bool front_end_capture(std::shared_ptr<ConfigurationInterface> configuration)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//delete conditioner;
|
|
||||||
//delete source;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -275,7 +271,6 @@ int main(int argc, char** argv)
|
|||||||
if (FLAGS_log_dir.empty())
|
if (FLAGS_log_dir.empty())
|
||||||
{
|
{
|
||||||
std::cout << "Logging will be done at "
|
std::cout << "Logging will be done at "
|
||||||
|
|
||||||
<< "/tmp"
|
<< "/tmp"
|
||||||
<< std::endl
|
<< std::endl
|
||||||
<< "Use front-end-cal --log_dir=/path/to/log to change that."
|
<< "Use front-end-cal --log_dir=/path/to/log to change that."
|
||||||
@ -296,18 +291,16 @@ int main(int argc, char** argv)
|
|||||||
<< FLAGS_log_dir << std::endl;
|
<< FLAGS_log_dir << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 0. Instantiate the FrontEnd Calibration class
|
// 0. Instantiate the FrontEnd Calibration class
|
||||||
FrontEndCal front_end_cal;
|
FrontEndCal front_end_cal;
|
||||||
|
|
||||||
// 1. Load configuration parameters from config file
|
// 1. Load configuration parameters from config file
|
||||||
|
|
||||||
std::shared_ptr<ConfigurationInterface> configuration = std::make_shared<FileConfiguration>(FLAGS_config_file);
|
std::shared_ptr<ConfigurationInterface> configuration = std::make_shared<FileConfiguration>(FLAGS_config_file);
|
||||||
|
|
||||||
front_end_cal.set_configuration(configuration);
|
front_end_cal.set_configuration(configuration);
|
||||||
|
|
||||||
|
|
||||||
// 2. Get SUPL information from server: Ephemeris record, assistance info and TOW
|
// 2. Get SUPL information from server: Ephemeris record, assistance info and TOW
|
||||||
|
try
|
||||||
|
{
|
||||||
if (front_end_cal.get_ephemeris() == true)
|
if (front_end_cal.get_ephemeris() == true)
|
||||||
{
|
{
|
||||||
std::cout << "SUPL data received OK!" << std::endl;
|
std::cout << "SUPL data received OK!" << std::endl;
|
||||||
@ -316,6 +309,11 @@ int main(int argc, char** argv)
|
|||||||
{
|
{
|
||||||
std::cout << "Failure connecting to SUPL server" << std::endl;
|
std::cout << "Failure connecting to SUPL server" << std::endl;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
catch (const boost::exception& e)
|
||||||
|
{
|
||||||
|
std::cout << "Failure connecting to SUPL server" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
// 3. Capture some front-end samples to hard disk
|
// 3. Capture some front-end samples to hard disk
|
||||||
try
|
try
|
||||||
@ -378,11 +376,6 @@ int main(int argc, char** argv)
|
|||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
//gr_basic_block_sptr head = gr_make_head(sizeof(gr_complex), nsamples);
|
|
||||||
//gr_head_sptr head_sptr = boost::dynamic_pointer_cast<gr_head>(head);
|
|
||||||
//head_sptr->set_length(nsamples);
|
|
||||||
//head_sptr->reset();
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
acquisition->connect(top_block);
|
acquisition->connect(top_block);
|
||||||
@ -449,7 +442,14 @@ int main(int argc, char** argv)
|
|||||||
{
|
{
|
||||||
std::cout << " . ";
|
std::cout << " . ";
|
||||||
}
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
channel_internal_queue.push(3);
|
channel_internal_queue.push(3);
|
||||||
|
}
|
||||||
|
catch (const boost::exception& e)
|
||||||
|
{
|
||||||
|
LOG(INFO) << "Exception caught while pushing to he internal queue.";
|
||||||
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ch_thread.join();
|
ch_thread.join();
|
||||||
@ -516,8 +516,8 @@ int main(int argc, char** argv)
|
|||||||
|
|
||||||
std::cout << "Reference location (defined in config file):" << std::endl;
|
std::cout << "Reference location (defined in config file):" << std::endl;
|
||||||
|
|
||||||
std::cout << "Latitude=" << lat_deg << " [<EFBFBD>]" << std::endl;
|
std::cout << "Latitude=" << lat_deg << " [º]" << std::endl;
|
||||||
std::cout << "Longitude=" << lon_deg << " [<EFBFBD>]" << std::endl;
|
std::cout << "Longitude=" << lon_deg << " [º]" << std::endl;
|
||||||
std::cout << "Altitude=" << altitude_m << " [m]" << std::endl;
|
std::cout << "Altitude=" << altitude_m << " [m]" << std::endl;
|
||||||
|
|
||||||
if (doppler_measurements_map.size() == 0)
|
if (doppler_measurements_map.size() == 0)
|
||||||
|
@ -1,49 +0,0 @@
|
|||||||
# CMAKE for GPSTK by Javier Arribas 2012
|
|
||||||
cmake_minimum_required (VERSION 2.6)
|
|
||||||
project (gnsspvt_project)
|
|
||||||
|
|
||||||
include_directories(${gnsspvt_project_SOURCE_DIR}/src)
|
|
||||||
|
|
||||||
add_library (kml_printer_gpstk ${gnsspvt_project_SOURCE_DIR}/src/kml_printer_gpstk.cpp)
|
|
||||||
add_executable(gnsspvt ${gnsspvt_project_SOURCE_DIR}/src/gnsspvt.cpp)
|
|
||||||
|
|
||||||
target_link_libraries (gnsspvt kml_printer_gpstk)
|
|
||||||
|
|
||||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMakeModules/")
|
|
||||||
|
|
||||||
find_package(GPSTK REQUIRED)
|
|
||||||
|
|
||||||
if ( NOT GPSTK_FOUND )
|
|
||||||
message(FATAL_ERROR "GPSTK library not found!")
|
|
||||||
endif( NOT GPSTK_FOUND )
|
|
||||||
|
|
||||||
find_package(GLOG REQUIRED)
|
|
||||||
if ( NOT GLOG_FOUND )
|
|
||||||
message(FATAL_ERROR "GLOG library not found!")
|
|
||||||
endif( NOT GLOG_FOUND )
|
|
||||||
|
|
||||||
include_directories(${GLOG_INCLUDE_DIRS})
|
|
||||||
|
|
||||||
# IMPORTANT NOTICE: The GPSTK linking order is critical. First it is required to link agains libprocframe to avoid vtable errors
|
|
||||||
include_directories(${GPSTK_INCLUDE_DIR}/gpstk ${GEOMATICS_INCLUDE_DIR} ${PROCFRAME_INCLUDE_DIR} ${VDRAW_INCLUDE_DIR} ${VPLOT_INCLUDE_DIR} ${RXIO_INCLUDE_DIR})
|
|
||||||
# set(LIBS ${LIBS} ${GPSTK_LIBRARIES} ${GEOMATICS_LIBRARIES} ${VDRAW_LIBRARIES} ${VPLOT_LIBRARIES} ${RXIO_LIBRARIES})
|
|
||||||
set(LIBS ${LIBS} ${PROCFRAME_LIBRARIES} ${GPSTK_LIBRARIES} ${GEOMATICS_LIBRARIES} ${GLOG_LIBRARIES})
|
|
||||||
|
|
||||||
|
|
||||||
target_link_libraries(gnsspvt ${LIBS})
|
|
||||||
|
|
||||||
message(STATUS "GPSTK_INCLUDE_DIR="${GLOG_LIBRARIES})
|
|
||||||
#message(STATUS "GPSTK_LIBRARIES=${GPSTK_LIBRARIES}")
|
|
||||||
#message(STATUS "LIBS=${LIBS}")
|
|
||||||
|
|
||||||
# debug info: print all variables
|
|
||||||
#get_cmake_property(_variableNames VARIABLES)
|
|
||||||
#foreach (_variableName ${_variableNames})
|
|
||||||
# message(STATUS "${_variableName}=${${_variableName}}")
|
|
||||||
#endforeach()
|
|
||||||
|
|
||||||
#get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
|
|
||||||
#foreach(dir ${dirs})
|
|
||||||
# message(STATUS "INCLUDE_DIRECTORIES='${dir}'")
|
|
||||||
#endforeach()
|
|
||||||
|
|
@ -1,103 +0,0 @@
|
|||||||
# - Try to find the Google Glog library
|
|
||||||
#
|
|
||||||
# This module defines the following variables
|
|
||||||
#
|
|
||||||
# GLOG_FOUND - Was Glog found
|
|
||||||
# GLOG_INCLUDE_DIRS - the Glog include directories
|
|
||||||
# GLOG_LIBRARIES - Link to this
|
|
||||||
#
|
|
||||||
# This module accepts the following variables
|
|
||||||
#
|
|
||||||
# GLOG_ROOT - Can be set to Glog install path or Windows build path
|
|
||||||
#
|
|
||||||
#=============================================================================
|
|
||||||
# FindGlog.cmake, adapted from FindBullet.cmake which has the following
|
|
||||||
# copyright -
|
|
||||||
#-----------------------------------------------------------------------------
|
|
||||||
# Copyright 2009 Kitware, Inc.
|
|
||||||
# Copyright 2009 Philip Lowman <philip@yhbt.com>
|
|
||||||
#
|
|
||||||
# Distributed under the OSI-approved BSD License (the "License");
|
|
||||||
# see accompanying file Copyright.txt for details.
|
|
||||||
#
|
|
||||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
||||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
# See the License for more information.
|
|
||||||
#=============================================================================
|
|
||||||
# (To distribute this file outside of CMake, substitute the full
|
|
||||||
# License text for the above reference.)
|
|
||||||
|
|
||||||
if (NOT DEFINED GLOG_ROOT)
|
|
||||||
set (GLOG_ROOT /usr /usr/local)
|
|
||||||
endif (NOT DEFINED GLOG_ROOT)
|
|
||||||
|
|
||||||
if(MSVC)
|
|
||||||
set(LIB_PATHS ${GLOG_ROOT} ${GLOG_ROOT}/Release)
|
|
||||||
else(MSVC)
|
|
||||||
set (LIB_PATHS ${GLOG_ROOT} ${GLOG_ROOT}/lib)
|
|
||||||
endif(MSVC)
|
|
||||||
|
|
||||||
macro(_FIND_GLOG_LIBRARIES _var)
|
|
||||||
find_library(${_var}
|
|
||||||
NAMES
|
|
||||||
${ARGN}
|
|
||||||
PATHS
|
|
||||||
${LIB_PATHS}
|
|
||||||
PATH_SUFFIXES lib
|
|
||||||
)
|
|
||||||
mark_as_advanced(${_var})
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
macro(_GLOG_APPEND_LIBRARIES _list _release)
|
|
||||||
set(_debug ${_release}_DEBUG)
|
|
||||||
if(${_debug})
|
|
||||||
set(${_list} ${${_list}} optimized ${${_release}} debug ${${_debug}})
|
|
||||||
else()
|
|
||||||
set(${_list} ${${_list}} ${${_release}})
|
|
||||||
endif()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
if(MSVC)
|
|
||||||
find_path(GLOG_INCLUDE_DIR NAMES raw_logging.h
|
|
||||||
PATHS
|
|
||||||
${GLOG_ROOT}/src/windows
|
|
||||||
${GLOG_ROOT}/src/windows/glog
|
|
||||||
)
|
|
||||||
else(MSVC)
|
|
||||||
# Linux/OS X builds
|
|
||||||
find_path(GLOG_INCLUDE_DIR NAMES raw_logging.h
|
|
||||||
PATHS
|
|
||||||
${GLOG_ROOT}/include/glog
|
|
||||||
)
|
|
||||||
endif(MSVC)
|
|
||||||
|
|
||||||
# Find the libraries
|
|
||||||
if(MSVC)
|
|
||||||
_FIND_GLOG_LIBRARIES(GLOG_LIBRARIES libglog.lib)
|
|
||||||
else(MSVC)
|
|
||||||
# Linux/OS X builds
|
|
||||||
_FIND_GLOG_LIBRARIES(GLOG_LIBRARIES libglog.so)
|
|
||||||
endif(MSVC)
|
|
||||||
|
|
||||||
message("glog library = " ${GLOG_LIBRARIES})
|
|
||||||
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set GLOG_FOUND to TRUE if
|
|
||||||
# all listed variables are TRUE
|
|
||||||
include("${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake")
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Glog DEFAULT_MSG
|
|
||||||
GLOG_LIBRARIES)
|
|
||||||
|
|
||||||
if(MSVC)
|
|
||||||
string(REGEX REPLACE "/glog$" "" VAR_WITHOUT ${GLOG_INCLUDE_DIR})
|
|
||||||
string(REGEX REPLACE "/windows$" "" VAR_WITHOUT ${VAR_WITHOUT})
|
|
||||||
set(GLOG_INCLUDE_DIRS ${GLOG_INCLUDE_DIRS} "${VAR_WITHOUT}")
|
|
||||||
string(REGEX REPLACE "/libglog.lib" "" GLOG_LIBRARIES_DIR ${GLOG_LIBRARIES})
|
|
||||||
else(MSVC)
|
|
||||||
# Linux/OS X builds
|
|
||||||
set(GLOG_INCLUDE_DIRS ${GLOG_INCLUDE_DIR})
|
|
||||||
string(REGEX REPLACE "/libglog.so" "" GLOG_LIBRARIES_DIR ${GLOG_LIBRARIES})
|
|
||||||
endif(MSVC)
|
|
||||||
|
|
||||||
if(GLOG_FOUND)
|
|
||||||
# _GLOG_APPEND_LIBRARIES(GLOG GLOG_LIBRARIES)
|
|
||||||
endif()
|
|
@ -1,87 +0,0 @@
|
|||||||
# - Find gpstk library
|
|
||||||
# Find the native gpstk includes and library
|
|
||||||
# This module defines
|
|
||||||
# GPSTK_INCLUDE_DIR, where to find tiff.h, etc.
|
|
||||||
# GPSTK_LIBRARIES, libraries to link against to use GPSTK.
|
|
||||||
# GPSTK_FOUND, If false, do not try to use GPSTK.
|
|
||||||
# also defined, but not for general use are
|
|
||||||
# GPSTK_LIBRARY, where to find the GPSTK library.
|
|
||||||
|
|
||||||
FIND_PATH(GPSTK_INCLUDE_DIR gpstk/Matrix.hpp)
|
|
||||||
FIND_PATH(GEOMATICS_INCLUDE_DIR gpstk/random.hpp)
|
|
||||||
FIND_PATH(PROCFRAME_INCLUDE_DIR gpstk/SolverWMS.hpp)
|
|
||||||
FIND_PATH(VDRAW_INCLUDE_DIR gpstk/Layout.hpp)
|
|
||||||
FIND_PATH(VPLOT_INCLUDE_DIR gpstk/ScatterPlot.hpp)
|
|
||||||
FIND_PATH(RXIO_INCLUDE_DIR gpstk/EphReader.hpp)
|
|
||||||
|
|
||||||
SET(GPSTK_NAMES ${GPSTK_NAMES} gpstk libgpstk)
|
|
||||||
FIND_LIBRARY(GPSTK_LIBRARY NAMES ${GPSTK_NAMES} )
|
|
||||||
|
|
||||||
SET(GEOMATICS_NAMES ${GEOMATICS_NAMES} geomatics libgeomatics)
|
|
||||||
FIND_LIBRARY(GEOMATICS_LIBRARY NAMES ${GEOMATICS_NAMES} )
|
|
||||||
|
|
||||||
SET(PROCFRAME_NAMES ${PROCFRAME_NAMES} procframe libprocframe)
|
|
||||||
FIND_LIBRARY(PROCFRAME_LIBRARY NAMES ${PROCFRAME_NAMES} )
|
|
||||||
|
|
||||||
SET(VDRAW_NAMES ${VDRAW_NAMES} vdraw libvdraw)
|
|
||||||
FIND_LIBRARY(VDRAW_LIBRARY NAMES ${VDRAW_NAMES} )
|
|
||||||
|
|
||||||
SET(VPLOT_NAMES ${VPLOT_NAMES} vplot libvplot)
|
|
||||||
FIND_LIBRARY(VPLOT_LIBRARY NAMES ${VPLOT_NAMES} )
|
|
||||||
|
|
||||||
SET(RXIO_NAMES ${RXIO_NAMES} rxio librxio)
|
|
||||||
FIND_LIBRARY(RXIO_LIBRARY NAMES ${RXIO_NAMES} )
|
|
||||||
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set GPSTK_FOUND to TRUE if
|
|
||||||
# all listed variables are TRUE
|
|
||||||
INCLUDE(FindPackageHandleStandardArgs)
|
|
||||||
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GPSTK DEFAULT_MSG GPSTK_LIBRARY GPSTK_INCLUDE_DIR)
|
|
||||||
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GEOMATICS DEFAULT_MSG GEOMATICS_LIBRARY GEOMATICS_INCLUDE_DIR)
|
|
||||||
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PROCFRAME DEFAULT_MSG PROCFRAME_LIBRARY PROCFRAME_INCLUDE_DIR)
|
|
||||||
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(VDRAW DEFAULT_MSG VDRAW_LIBRARY VDRAW_INCLUDE_DIR)
|
|
||||||
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(VPLOT DEFAULT_MSG VPLOT_LIBRARY VPLOT_INCLUDE_DIR)
|
|
||||||
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(RXIO DEFAULT_MSG RXIO_LIBRARY RXIO_INCLUDE_DIR)
|
|
||||||
|
|
||||||
IF(GPSTK_FOUND)
|
|
||||||
SET( GPSTK_LIBRARIES ${GPSTK_LIBRARY} )
|
|
||||||
ENDIF(GPSTK_FOUND)
|
|
||||||
|
|
||||||
IF(GEOMATICS_FOUND)
|
|
||||||
SET( GEOMATICS_LIBRARIES ${GEOMATICS_LIBRARY} )
|
|
||||||
ENDIF(GEOMATICS_FOUND)
|
|
||||||
|
|
||||||
IF(PROCFRAME_FOUND)
|
|
||||||
SET( PROCFRAME_LIBRARIES ${PROCFRAME_LIBRARY} )
|
|
||||||
ENDIF(PROCFRAME_FOUND)
|
|
||||||
|
|
||||||
IF(VDRAW_FOUND)
|
|
||||||
SET( VDRAW_LIBRARIES ${VDRAW_LIBRARY} )
|
|
||||||
ENDIF(VDRAW_FOUND)
|
|
||||||
|
|
||||||
IF(VPLOT_FOUND)
|
|
||||||
SET( VPLOT_LIBRARIES ${VPLOT_LIBRARY} )
|
|
||||||
ENDIF(VPLOT_FOUND)
|
|
||||||
|
|
||||||
IF(RXIO_FOUND)
|
|
||||||
SET( RXIO_LIBRARIES ${RXIO_LIBRARY} )
|
|
||||||
ENDIF(RXIO_FOUND)
|
|
||||||
|
|
||||||
MARK_AS_ADVANCED(GPSTK_INCLUDE_DIR GPSTK_LIBRARY)
|
|
||||||
|
|
||||||
MARK_AS_ADVANCED(GEOMATICS_INCLUDE_DIR GEOMATICS_LIBRARY)
|
|
||||||
|
|
||||||
MARK_AS_ADVANCED(PROCFRAME_INCLUDE_DIR PROCFRAME_LIBRARY)
|
|
||||||
|
|
||||||
MARK_AS_ADVANCED(VDRAW_INCLUDE_DIR VDRAW_LIBRARY)
|
|
||||||
|
|
||||||
MARK_AS_ADVANCED(VPLOT_INCLUDE_DIR VPLOT_LIBRARY)
|
|
||||||
|
|
||||||
MARK_AS_ADVANCED(RXIO_INCLUDE_DIR RXIO_LIBRARY)
|
|
||||||
|
|
||||||
|
|
@ -1,62 +0,0 @@
|
|||||||
ABOUT GNSSPVT
|
|
||||||
----------------------
|
|
||||||
This program uses the high level GpsTk classes to implement a simple PVT solver
|
|
||||||
that uses RINEX files as an input.
|
|
||||||
The output is written both in the console and in a Google Earth KML file.
|
|
||||||
|
|
||||||
HOW TO BUILD GNSSPVT
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
Installation in Ubuntu 11.04, 11.10, 12.04 (32 and 64 bits)
|
|
||||||
-----------------------------------------------------------
|
|
||||||
|
|
||||||
- Install CMake through your OS's package manager or by some other means.
|
|
||||||
|
|
||||||
- Install GpsTk:
|
|
||||||
|
|
||||||
The following procedure will build and install the GPSTk.
|
|
||||||
|
|
||||||
Ensure that prerequisites such as jam have been installed.
|
|
||||||
Download the GPSTk source distribution from http://www.gpstk.org/bin/view/Documentation/GPSTkDownloads
|
|
||||||
Extract the GPSTk tarball. For example, using GNU tar
|
|
||||||
|
|
||||||
tar xvzf gpstk.tar.gz
|
|
||||||
|
|
||||||
Change into the gpstk/dev directory (if using Subversion) or the gpstk/ directory (if using the tarball)and type
|
|
||||||
|
|
||||||
jam
|
|
||||||
|
|
||||||
To build the source documentation using doxygen:
|
|
||||||
|
|
||||||
doxygen
|
|
||||||
|
|
||||||
To install GPSTk as a system library in /usr/local, assume root privileges then execute
|
|
||||||
|
|
||||||
jam install
|
|
||||||
|
|
||||||
To install to a different directory, define the environment variable PREFIX to point to the root of the installation
|
|
||||||
|
|
||||||
|
|
||||||
- Download, unzip, configure, build and install glog, a Google's library that implements application-level logging:
|
|
||||||
|
|
||||||
$ wget http://google-glog.googlecode.com/files/glog-0.3.2.tar.gz
|
|
||||||
$ tar xvfz glog-0.3.2.tar.gz
|
|
||||||
$ cd glog-0.3.2
|
|
||||||
$ ./configure
|
|
||||||
$ make
|
|
||||||
$ sudo make install
|
|
||||||
|
|
||||||
- Go to GNSSPVT root directory and compile the gnsspvt:
|
|
||||||
|
|
||||||
$ cd gnss-sdr/src/utils/gpstk/gnsspvt/
|
|
||||||
$ mkdir build
|
|
||||||
$ cd build
|
|
||||||
$ cmake ../
|
|
||||||
$ make
|
|
||||||
|
|
||||||
If everything goes well, the executable file is available in the build directory.
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
./gnsspvt -i path_to_rinex_observable_file -n path_to_rinex_navigation_file -k path_to_kml_output_file
|
|
@ -1,593 +0,0 @@
|
|||||||
/*!
|
|
||||||
* \file gnsspvt.cpp
|
|
||||||
* \brief Adapted version of high level gpstk PVT solver to read RINEX files,
|
|
||||||
* compute the position, velocity and time solution, and write Google Earth KML output file.
|
|
||||||
* The input Observables and Navigation files can be RINEX 2.10 or RINEX 3.00.
|
|
||||||
* It is a modified version of the example5.cpp code provided in gpstk source code.
|
|
||||||
*
|
|
||||||
* \author Javier Arribas, 2012. jarribas(at)cttc.es
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* -------------------------------------------------------------------------
|
|
||||||
*
|
|
||||||
* Copyright (C) 2010-2012 (see AUTHORS file for a list of contributors)
|
|
||||||
*
|
|
||||||
* GNSS-SDR is a software defined Global Navigation
|
|
||||||
* Satellite Systems receiver
|
|
||||||
*
|
|
||||||
* This file is part of GNSS-SDR.
|
|
||||||
*
|
|
||||||
* GNSS-SDR is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* GNSS-SDR is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*
|
|
||||||
* -------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Modified Example program Nro 5 for GPSTk
|
|
||||||
// This program shows how to use some high-level GPSTk classes
|
|
||||||
|
|
||||||
// Basic input/output C++ class
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
// Classes for handling observations RINEX files (data)
|
|
||||||
#include "gpstk/Rinex3ObsData.hpp"
|
|
||||||
#include "gpstk/Rinex3ObsStream.hpp"
|
|
||||||
|
|
||||||
// Class to easily extract data from Rinex3ObsData objects
|
|
||||||
#include "gpstk/ExtractData.hpp"
|
|
||||||
|
|
||||||
// Classes for handling satellite navigation parameters RINEX files
|
|
||||||
// (Broadcast ephemerides)
|
|
||||||
#include "gpstk/Rinex3NavHeader.hpp"
|
|
||||||
#include "gpstk/Rinex3NavData.hpp"
|
|
||||||
#include "gpstk/Rinex3NavStream.hpp"
|
|
||||||
|
|
||||||
// Class to store satellite broadcast navigation data
|
|
||||||
#include "gpstk/GPSEphemerisStore.hpp"
|
|
||||||
|
|
||||||
// Class to model GPS data for a mobile receiver
|
|
||||||
#include "gpstk/ModeledPR.hpp"
|
|
||||||
|
|
||||||
#include "gpstk/GNSSconstants.hpp"
|
|
||||||
#include "gpstk/CommonTime.hpp"
|
|
||||||
#include "gpstk/SatID.hpp"
|
|
||||||
#include "gpstk/Matrix.hpp"
|
|
||||||
#include "gpstk/XvtStore.hpp"
|
|
||||||
#include "gpstk/TropModel.hpp"
|
|
||||||
|
|
||||||
// Class to model the tropospheric delays
|
|
||||||
#include "gpstk/TropModel.hpp"
|
|
||||||
|
|
||||||
// Classes to model ans store ionospheric delays
|
|
||||||
#include "gpstk/IonoModel.hpp"
|
|
||||||
#include "gpstk/IonoModelStore.hpp"
|
|
||||||
|
|
||||||
// Class to solve the equations system using a Weighted Least Mean Square method
|
|
||||||
#include "gpstk/SolverWMS.hpp"
|
|
||||||
|
|
||||||
// Class to compute the weights to be used for each satellite
|
|
||||||
#include "gpstk/MOPSWeight.hpp"
|
|
||||||
|
|
||||||
// Basic framework for programs in the GPSTk. The 'process()' method MUST
|
|
||||||
// be implemented
|
|
||||||
#include "gpstk/BasicFramework.hpp"
|
|
||||||
|
|
||||||
#include "gpstk/geometry.hpp" // DEG_TO_RAD
|
|
||||||
|
|
||||||
// Time-class year-day-second
|
|
||||||
#include "gpstk/YDSTime.hpp"
|
|
||||||
|
|
||||||
#include "kml_printer_gpstk.h"
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
using namespace gpstk;
|
|
||||||
|
|
||||||
|
|
||||||
// A new class is declared that will handle program behaviour
|
|
||||||
// This class inherits from BasicFramework
|
|
||||||
class gpstk_solver : public BasicFramework
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
// Constructor declaration
|
|
||||||
gpstk_solver(char* arg0);
|
|
||||||
~gpstk_solver();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
// Method that will take care of processing
|
|
||||||
virtual void process();
|
|
||||||
|
|
||||||
// Method that hold code to be run BEFORE processing
|
|
||||||
virtual void spinUp();
|
|
||||||
|
|
||||||
virtual int Prepare( const CommonTime& Tr,
|
|
||||||
std::vector<SatID>& Satellite,
|
|
||||||
std::vector<double>& Pseudorange,
|
|
||||||
const XvtStore<SatID>& Eph );
|
|
||||||
virtual int Prepare2( const CommonTime& Tr,
|
|
||||||
const Vector<SatID>& Satellite,
|
|
||||||
const Vector<double>& Pseudorange,
|
|
||||||
const XvtStore<SatID>& Eph );
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
// These field represent options at command line interface (CLI)
|
|
||||||
CommandOptionWithArg dataFile;
|
|
||||||
CommandOptionWithArg navFile;
|
|
||||||
CommandOptionWithArg kmlFile;
|
|
||||||
|
|
||||||
Kml_Printer_gpstk kml_printer;
|
|
||||||
|
|
||||||
// If you want to share objects and variables among methods, you'd
|
|
||||||
// better declare them here
|
|
||||||
Rinex3ObsStream rObsFile; // Object to read Rinex observation data files
|
|
||||||
Rinex3ObsData rData; // Object to store Rinex observation data
|
|
||||||
Rinex3NavStream rNavFile; // Object to read Rinex navigation data files
|
|
||||||
Rinex3NavData rNavData; // Object to store Rinex navigation data
|
|
||||||
Rinex3NavHeader rNavHeader; // Object to read the header of Rinex
|
|
||||||
// navigation data files
|
|
||||||
IonoModelStore ionoStore; // Object to store ionospheric models
|
|
||||||
GPSEphemerisStore bceStore; // Object to store ephemeris
|
|
||||||
ModeledPR modelPR; // Declare a ModeledReferencePR object
|
|
||||||
MOPSTropModel mopsTM; // Declare a MOPSTropModel object
|
|
||||||
ExtractData obsC1; // Declare an ExtractData object
|
|
||||||
int indexC1; // Index to "C1" observation
|
|
||||||
bool useFormerPos; // Flag indicating if we have an a priori
|
|
||||||
// position
|
|
||||||
Position formerPosition; // Object to store the former position
|
|
||||||
IonoModel ioModel; // Declare a Ionospheric Model object
|
|
||||||
SolverWMS solver; // Declare an object to apply WMS method
|
|
||||||
MOPSWeight mopsWeights; // Object to compute satellites' weights
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// Let's implement constructor details
|
|
||||||
gpstk_solver::gpstk_solver(char* arg0)
|
|
||||||
: BasicFramework(arg0, "\nProgram to print the position solution in ECEF "
|
|
||||||
"and longitude, latitude, height, based in C1 and "
|
|
||||||
"given a RINEX observations file and a RINEX "
|
|
||||||
"broadcast navigation file.\n\n"
|
|
||||||
"The output is: \n"
|
|
||||||
" Time(sec) X(m) Y(m) Z(m) Lon(deg) "
|
|
||||||
" Lat(deg) Height(m)\n"),
|
|
||||||
// Option initialization. "true" means a mandatory option
|
|
||||||
dataFile(CommandOption::stdType, 'i', "datainput",
|
|
||||||
" [-i|--datainput] Name of RINEX observations file.", true),
|
|
||||||
navFile(CommandOption::stdType, 'n', "navinput",
|
|
||||||
" [-n|--navinput] Name of RINEX broadcast navigation file.", true),
|
|
||||||
kmlFile(CommandOption::stdType, 'k', "kmloutput",
|
|
||||||
" [-n|--navinput] Name of KML output file.", true)
|
|
||||||
{
|
|
||||||
// These options may appear just once at CLI
|
|
||||||
dataFile.setMaxCount(1);
|
|
||||||
navFile.setMaxCount(1);
|
|
||||||
kmlFile.setMaxCount(1);
|
|
||||||
} // End of constructor details
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Method to set an a priori position of receiver using
|
|
||||||
* Bancroft's method.
|
|
||||||
*
|
|
||||||
* @param Tr Time of observation
|
|
||||||
* @param Satellite std::vector of satellites in view
|
|
||||||
* @param Pseudorange std::vector of pseudoranges measured from
|
|
||||||
* rover station to satellites
|
|
||||||
* @param Eph Satellites Ephemeris
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
* 0 if OK
|
|
||||||
* -1 if problems arose
|
|
||||||
*/
|
|
||||||
int gpstk_solver::Prepare( const CommonTime& Tr,
|
|
||||||
std::vector<SatID>& Satellite,
|
|
||||||
std::vector<double>& Pseudorange,
|
|
||||||
const XvtStore<SatID>& Eph )
|
|
||||||
{
|
|
||||||
|
|
||||||
Matrix<double> SVP;
|
|
||||||
Bancroft Ban;
|
|
||||||
Vector<double> vPos;
|
|
||||||
PRSolution2 raimObj;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
cerr << "Tr=" <<Tr<<std::endl;
|
|
||||||
for (std::vector<SatID>::iterator it = Satellite.begin() ; it != Satellite.end(); ++it)
|
|
||||||
{
|
|
||||||
cerr << "SatID=" << *it<<endl;
|
|
||||||
cerr << "EphemerisStore Sat XYZ= " << bceStore.getXvt(*it,rData.time).x<<std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (std::vector<double>::iterator it = Pseudorange.begin() ; it != Pseudorange.end(); ++it)
|
|
||||||
{
|
|
||||||
cerr << "PseudoRanges=" << *it<<endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
//cerr << "Eph=" << Eph <<std::endl;
|
|
||||||
//cerr << "SVP=" << SVP <<std::endl;
|
|
||||||
raimObj.PrepareAutonomousSolution( Tr,
|
|
||||||
Satellite,
|
|
||||||
Pseudorange,
|
|
||||||
Eph,
|
|
||||||
SVP );
|
|
||||||
|
|
||||||
if( Ban.Compute(SVP, vPos) < 0 )
|
|
||||||
{
|
|
||||||
cerr << "Error 1" <<std::endl;
|
|
||||||
cerr << "SVP="<<SVP<<std::endl;
|
|
||||||
cerr << "vPos=" << vPos <<std::endl;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch(Exception &error)
|
|
||||||
{
|
|
||||||
cerr << "Excepción 1: "<<error;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
cerr << "OK prepare"<<endl;
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
} // End of method 'ModeledPR::Prepare()'
|
|
||||||
|
|
||||||
/* Method to set an a priori position of receiver using
|
|
||||||
* Bancroft's method.
|
|
||||||
*
|
|
||||||
* @param Tr Time of observation
|
|
||||||
* @param Satellite Vector of satellites in view
|
|
||||||
* @param Pseudorange Pseudoranges measured from rover station to
|
|
||||||
* satellites
|
|
||||||
* @param Eph Satellites Ephemeris
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
* 0 if OK
|
|
||||||
* -1 if problems arose
|
|
||||||
*/
|
|
||||||
int gpstk_solver::Prepare2( const CommonTime& Tr,
|
|
||||||
const Vector<SatID>& Satellite,
|
|
||||||
const Vector<double>& Pseudorange,
|
|
||||||
const XvtStore<SatID>& Eph )
|
|
||||||
{
|
|
||||||
|
|
||||||
int i;
|
|
||||||
std::vector<SatID> vSat;
|
|
||||||
std::vector<double> vPR;
|
|
||||||
|
|
||||||
// Convert from gpstk::Vector to std::vector
|
|
||||||
for (i = 0; i < (int)Satellite.size(); i++)
|
|
||||||
{
|
|
||||||
vSat.push_back(Satellite[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < (int)Pseudorange.size(); i++)
|
|
||||||
{
|
|
||||||
vPR.push_back(Pseudorange[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Prepare(Tr, vSat, vPR, Eph);
|
|
||||||
|
|
||||||
} // End of method 'ModeledPR::Prepare()'
|
|
||||||
|
|
||||||
|
|
||||||
// Method that will be executed AFTER initialization but BEFORE processing
|
|
||||||
void gpstk_solver::spinUp()
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
//open KML output file
|
|
||||||
if (kml_printer.set_headers(kmlFile.getValue()[0].c_str())!=true)
|
|
||||||
{
|
|
||||||
cerr << "Problem creating the kml file "<<kmlFile.getValue()[0].c_str();
|
|
||||||
exit (-1);
|
|
||||||
}
|
|
||||||
// From now on, some parts may look similar to 'example3.cpp' and
|
|
||||||
// 'example4.cpp'
|
|
||||||
// Activate failbit to enable exceptions
|
|
||||||
rObsFile.exceptions(ios::failbit);
|
|
||||||
|
|
||||||
// First, data RINEX reading object
|
|
||||||
try
|
|
||||||
{
|
|
||||||
rObsFile.open(dataFile.getValue()[0].c_str(), std::ios::in);
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{
|
|
||||||
cerr << "Problem opening file " << dataFile.getValue()[0].c_str()
|
|
||||||
<< endl;
|
|
||||||
cerr << "Maybe it doesn't exist or you don't have proper read "
|
|
||||||
<< "permissions." << endl;
|
|
||||||
|
|
||||||
exit (-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// We need to read the header of the observations file
|
|
||||||
Rinex3ObsHeader roh;
|
|
||||||
rObsFile >> roh;
|
|
||||||
|
|
||||||
// We need the index pointing to C1-type observations
|
|
||||||
try
|
|
||||||
{
|
|
||||||
indexC1 = roh.getObsIndex( "C1" );
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{
|
|
||||||
cerr << "The observation file doesn't have C1 pseudoranges." << endl;
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Activate failbit to enable exceptions
|
|
||||||
rNavFile.exceptions(ios::failbit);
|
|
||||||
|
|
||||||
// Read nav file and store unique list of ephemerides
|
|
||||||
try
|
|
||||||
{
|
|
||||||
rNavFile.open(navFile.getValue()[0].c_str(), std::ios::in);
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{
|
|
||||||
cerr << "Problem opening file " << navFile.getValue()[0].c_str() << endl;
|
|
||||||
cerr << "Maybe it doesn't exist or you don't have proper read "
|
|
||||||
<< "permissions." << endl;
|
|
||||||
|
|
||||||
exit (-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// We will need to read ionospheric parameters (Klobuchar model) from
|
|
||||||
// the file header
|
|
||||||
rNavFile >> rNavHeader;
|
|
||||||
|
|
||||||
// Let's feed the ionospheric model (Klobuchar type) from data in the
|
|
||||||
// navigation (ephemeris) file header. First, we must check if there are
|
|
||||||
// valid ionospheric correction parameters in the header
|
|
||||||
if(rNavHeader.valid & Rinex3NavHeader::validIonoCorrGPS)
|
|
||||||
{
|
|
||||||
// Extract the Alpha and Beta parameters from the header
|
|
||||||
double* ionAlpha = rNavHeader.mapIonoCorr["GPSA"].param;
|
|
||||||
double* ionBeta = rNavHeader.mapIonoCorr["GPSB"].param;
|
|
||||||
|
|
||||||
// Feed the ionospheric model with the parameters
|
|
||||||
ioModel.setModel(ionAlpha, ionBeta);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cerr << "WARNING: Navigation file " << navFile.getValue()[0].c_str()
|
|
||||||
<< " doesn't have valid ionospheric correction parameters." << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
// WARNING-WARNING-WARNING: In this case, the same model will be used
|
|
||||||
// for the full data span
|
|
||||||
ionoStore.addIonoModel(CommonTime::BEGINNING_OF_TIME, ioModel);
|
|
||||||
|
|
||||||
// Storing the ephemeris in "bceStore"
|
|
||||||
while (rNavFile >> rNavData)
|
|
||||||
{
|
|
||||||
bceStore.addEphemeris(rNavData);
|
|
||||||
rNavData.dump(cerr);
|
|
||||||
cerr<<endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setting the criteria for looking up ephemeris
|
|
||||||
bceStore.SearchPast(); // This is the default
|
|
||||||
|
|
||||||
// This is set to true if the former computed positon will be used as
|
|
||||||
// a priori position
|
|
||||||
useFormerPos = false; // At first, we don't have an a priori position
|
|
||||||
|
|
||||||
// Prepare for printing later on
|
|
||||||
cout << fixed << setprecision(8);
|
|
||||||
|
|
||||||
} // End of gpstk_solver::spinUp()
|
|
||||||
|
|
||||||
|
|
||||||
// Method that will really process information
|
|
||||||
void gpstk_solver::process()
|
|
||||||
{
|
|
||||||
|
|
||||||
// Let's read the observations RINEX, epoch by epoch
|
|
||||||
while( rObsFile >> rData )
|
|
||||||
{
|
|
||||||
|
|
||||||
// Begin usable data with enough number of satellites
|
|
||||||
if( (rData.epochFlag == 0 || rData.epochFlag == 1) &&
|
|
||||||
(rData.numSVs > 3) )
|
|
||||||
{
|
|
||||||
|
|
||||||
// Number of satellites with valid data in this epoch
|
|
||||||
int validSats = 0;
|
|
||||||
int prepareResult;
|
|
||||||
double rxAltitude; // Receiver altitude for tropospheric model
|
|
||||||
double rxLatitude; // Receiver latitude for tropospheric model
|
|
||||||
|
|
||||||
// We need to extract C1 data from this epoch. Skip epoch if not
|
|
||||||
// enough data (4 SV at least) is available
|
|
||||||
if( obsC1.getData(rData, indexC1) < 4 )
|
|
||||||
{
|
|
||||||
// The former position will not be valid next time
|
|
||||||
useFormerPos = false;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// If possible, use former position as a priori
|
|
||||||
if( useFormerPos )
|
|
||||||
{
|
|
||||||
|
|
||||||
prepareResult = modelPR.Prepare(formerPosition);
|
|
||||||
|
|
||||||
// We need to seed this kind of tropospheric model with
|
|
||||||
// receiver altitude
|
|
||||||
rxAltitude = formerPosition.getAltitude();
|
|
||||||
rxLatitude = formerPosition.getGeodeticLatitude();
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Use Bancroft method is no a priori position is available
|
|
||||||
cerr << "Bancroft method was used at epoch "
|
|
||||||
<< static_cast<YDSTime>(rData.time).sod << endl;
|
|
||||||
|
|
||||||
Prepare2( rData.time,obsC1.availableSV,obsC1.obsData,bceStore );
|
|
||||||
prepareResult = modelPR.Prepare( rData.time,
|
|
||||||
obsC1.availableSV,
|
|
||||||
obsC1.obsData,
|
|
||||||
bceStore );
|
|
||||||
|
|
||||||
// We need to seed this kind of tropospheric model with
|
|
||||||
// receiver altitude
|
|
||||||
rxAltitude = modelPR.rxPos.getAltitude();
|
|
||||||
rxLatitude = modelPR.rxPos.getGeodeticLatitude();
|
|
||||||
}
|
|
||||||
|
|
||||||
// If there were problems with Prepare(), skip this epoch
|
|
||||||
if( prepareResult )
|
|
||||||
{
|
|
||||||
// The former position will not be valid next time
|
|
||||||
useFormerPos = false;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If there were no problems, let's feed the tropospheric model
|
|
||||||
mopsTM.setReceiverHeight(rxAltitude);
|
|
||||||
mopsTM.setReceiverLatitude(rxLatitude);
|
|
||||||
mopsTM.setDayOfYear(static_cast<YDSTime>(rData.time).doy);
|
|
||||||
|
|
||||||
|
|
||||||
// Now, let's compute the GPS model for our observable (C1)
|
|
||||||
validSats = modelPR.Compute( rData.time,
|
|
||||||
obsC1.availableSV,
|
|
||||||
obsC1.obsData,
|
|
||||||
bceStore,
|
|
||||||
&mopsTM,
|
|
||||||
&ionoStore );
|
|
||||||
|
|
||||||
// Only get into further computations if there are enough
|
|
||||||
// satellites
|
|
||||||
if( validSats >= 4 )
|
|
||||||
{
|
|
||||||
|
|
||||||
// Now let's solve the navigation equations using the WMS method
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// First, compute the satellites' weights
|
|
||||||
int goodSv = mopsWeights.getWeights( rData.time,
|
|
||||||
modelPR.availableSV,
|
|
||||||
bceStore,
|
|
||||||
modelPR.ionoCorrections,
|
|
||||||
modelPR.elevationSV,
|
|
||||||
modelPR.azimuthSV,
|
|
||||||
modelPR.rxPos );
|
|
||||||
|
|
||||||
// Some minimum checking is in order
|
|
||||||
if ( goodSv != (int)modelPR.prefitResiduals.size() ) continue;
|
|
||||||
|
|
||||||
// Then, solve the system
|
|
||||||
solver.Compute( modelPR.prefitResiduals,
|
|
||||||
modelPR.geoMatrix,
|
|
||||||
mopsWeights.weightsVector );
|
|
||||||
|
|
||||||
}
|
|
||||||
catch( InvalidSolver& e )
|
|
||||||
{
|
|
||||||
cerr << "Couldn't solve equations system at epoch "
|
|
||||||
<< static_cast<YDSTime>(rData.time).sod << endl;
|
|
||||||
cerr << e << endl;
|
|
||||||
|
|
||||||
// The former position will not be valid next time
|
|
||||||
useFormerPos = false;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// With "solver", we got the difference vector between the
|
|
||||||
// a priori position and the computed, 'real' position. Then,
|
|
||||||
// let's convert the solution to a Position object
|
|
||||||
Position solPos( (modelPR.rxPos.X() + solver.solution[0]),
|
|
||||||
(modelPR.rxPos.Y() + solver.solution[1]),
|
|
||||||
(modelPR.rxPos.Z() + solver.solution[2]) );
|
|
||||||
|
|
||||||
// Print results
|
|
||||||
cout << static_cast<YDSTime>(rData.time).sod
|
|
||||||
<< " "; // Output field #1
|
|
||||||
cout << "X="<<solPos.X() << "; "; // Output field #2
|
|
||||||
cout << "Y="<<solPos.Y() << "; "; // Output field #3
|
|
||||||
cout << "Z="<<solPos.Z() << "; "; // Output field #4
|
|
||||||
cout << solPos.longitude() << " "; // Output field #5
|
|
||||||
cout << solPos.geodeticLatitude() << " "; // Output field #6
|
|
||||||
cout << solPos.height() << " "; // Output field #7
|
|
||||||
cout << endl;
|
|
||||||
|
|
||||||
cout << "Geocentric Latitude="<< solPos.geocentricLatitude() << " "; // Output field #5
|
|
||||||
cout << endl;
|
|
||||||
|
|
||||||
// write KML PVT line
|
|
||||||
kml_printer.print_position(solPos);
|
|
||||||
|
|
||||||
formerPosition = solPos;
|
|
||||||
|
|
||||||
// Next time, former position will be used as a priori
|
|
||||||
useFormerPos = true;
|
|
||||||
|
|
||||||
} // End of 'if( validSats >= 4 )'
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// The former position will not be valid next time
|
|
||||||
useFormerPos = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // End of 'if( (rData.epochFlag == 0 || rData.epochFlag == 1) &&...'
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// The former position will not be valid next time
|
|
||||||
useFormerPos = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // End of 'while( rObsFile >> rData )'
|
|
||||||
|
|
||||||
return;
|
|
||||||
|
|
||||||
} // End of 'gpstk_solver::process()'
|
|
||||||
|
|
||||||
gpstk_solver::~gpstk_solver()
|
|
||||||
{
|
|
||||||
kml_printer.close_file();
|
|
||||||
}
|
|
||||||
// Main function
|
|
||||||
int main(int argc, char* argv[])
|
|
||||||
{
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
gpstk_solver program(argv[0]);
|
|
||||||
if (!program.initialize(argc, argv))
|
|
||||||
return 0;
|
|
||||||
if (!program.run())
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
catch(Exception& e)
|
|
||||||
{
|
|
||||||
cout << "Problem: " << e << endl;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{
|
|
||||||
cout << "Unknown error." << endl;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
} // End of 'main()'
|
|
@ -1,136 +0,0 @@
|
|||||||
/*!
|
|
||||||
* \file kml_printer.cc
|
|
||||||
* \brief Implementation of a class that prints PVT information to a kml file
|
|
||||||
* for GPSTK data structures
|
|
||||||
* \author Javier Arribas, 2012. jarribas(at)cttc.es
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* -------------------------------------------------------------------------
|
|
||||||
*
|
|
||||||
* Copyright (C) 2010-2012 (see AUTHORS file for a list of contributors)
|
|
||||||
*
|
|
||||||
* GNSS-SDR is a software defined Global Navigation
|
|
||||||
* Satellite Systems receiver
|
|
||||||
*
|
|
||||||
* This file is part of GNSS-SDR.
|
|
||||||
*
|
|
||||||
* GNSS-SDR is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* GNSS-SDR is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*
|
|
||||||
* -------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "kml_printer_gpstk.h"
|
|
||||||
#include <glog/log_severity.h>
|
|
||||||
#include <glog/logging.h>
|
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
bool Kml_Printer_gpstk::set_headers(std::string filename)
|
|
||||||
{
|
|
||||||
time_t rawtime;
|
|
||||||
struct tm * timeinfo;
|
|
||||||
time ( &rawtime );
|
|
||||||
timeinfo = localtime ( &rawtime );
|
|
||||||
kml_file.open(filename.c_str());
|
|
||||||
if (kml_file.is_open())
|
|
||||||
{
|
|
||||||
DLOG(INFO) << "KML printer writing on " << filename.c_str();
|
|
||||||
// Set iostream numeric format and precision
|
|
||||||
kml_file.setf(kml_file.fixed,kml_file.floatfield);
|
|
||||||
kml_file << std::setprecision(14);
|
|
||||||
kml_file << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << std::endl
|
|
||||||
<< "<kml xmlns=\"http://www.opengis.net/kml/2.2\">" << std::endl
|
|
||||||
<< " <Document>" << std::endl
|
|
||||||
<< " <name>GNSS Track</name>" << std::endl
|
|
||||||
<< " <description>GNSS-SDR Receiver position log file created at " << asctime (timeinfo)
|
|
||||||
<< " </description>" << std::endl
|
|
||||||
<< "<Style id=\"yellowLineGreenPoly\">" << std::endl
|
|
||||||
<< " <LineStyle>" << std::endl
|
|
||||||
<< " <color>7f00ffff</color>" << std::endl
|
|
||||||
<< " <width>1</width>" << std::endl
|
|
||||||
<< " </LineStyle>" << std::endl
|
|
||||||
<< "<PolyStyle>" << std::endl
|
|
||||||
<< " <color>7f00ff00</color>" << std::endl
|
|
||||||
<< "</PolyStyle>" << std::endl
|
|
||||||
<< "</Style>" << std::endl
|
|
||||||
<< "<Placemark>" << std::endl
|
|
||||||
<< "<name>GNSS-SDR PVT</name>" << std::endl
|
|
||||||
<< "<description>GNSS-SDR position log</description>" << std::endl
|
|
||||||
<< "<styleUrl>#yellowLineGreenPoly</styleUrl>" << std::endl
|
|
||||||
<< "<LineString>" << std::endl
|
|
||||||
<< "<extrude>0</extrude>" << std::endl
|
|
||||||
<< "<tessellate>1</tessellate>" << std::endl
|
|
||||||
<< "<altitudeMode>absolute</altitudeMode>" << std::endl
|
|
||||||
<< "<coordinates>" << std::endl;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool Kml_Printer_gpstk::print_position(gpstk::Position position)
|
|
||||||
{
|
|
||||||
double latitude;
|
|
||||||
double longitude;
|
|
||||||
double height;
|
|
||||||
latitude = position.geodeticLatitude();
|
|
||||||
longitude = position.getLongitude();
|
|
||||||
if (longitude>190)
|
|
||||||
{
|
|
||||||
longitude=longitude-360;
|
|
||||||
}
|
|
||||||
height = position.getHeight();
|
|
||||||
|
|
||||||
if (kml_file.is_open())
|
|
||||||
{
|
|
||||||
kml_file << longitude << "," << latitude << "," << height << std::endl;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool Kml_Printer_gpstk::close_file()
|
|
||||||
{
|
|
||||||
if (kml_file.is_open())
|
|
||||||
{
|
|
||||||
kml_file << "</coordinates>" << std::endl
|
|
||||||
<< "</LineString>" << std::endl
|
|
||||||
<< "</Placemark>" << std::endl
|
|
||||||
<< "</Document>" << std::endl
|
|
||||||
<< "</kml>";
|
|
||||||
kml_file.close();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Kml_Printer_gpstk::Kml_Printer_gpstk () {}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Kml_Printer_gpstk::~Kml_Printer_gpstk () {}
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
|||||||
/*!
|
|
||||||
* \file kml_printer.h
|
|
||||||
* \brief Interface of a class that prints PVT information to a kml file
|
|
||||||
* for GPSTK data structures
|
|
||||||
* \author Javier Arribas, 2012. jarribas(at)cttc.es
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* -------------------------------------------------------------------------
|
|
||||||
*
|
|
||||||
* Copyright (C) 2010-2018 (see AUTHORS file for a list of contributors)
|
|
||||||
*
|
|
||||||
* GNSS-SDR is a software defined Global Navigation
|
|
||||||
* Satellite Systems receiver
|
|
||||||
*
|
|
||||||
* This file is part of GNSS-SDR.
|
|
||||||
*
|
|
||||||
* GNSS-SDR is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* GNSS-SDR is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*
|
|
||||||
* -------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef GNSS_SDR_KML_PRINTER_H_
|
|
||||||
#define GNSS_SDR_KML_PRINTER_H_
|
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
#include <fstream>
|
|
||||||
#include "gpstk/Position.hpp"
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Prints PVT information to OGC KML format file (can be viewed with Google Earth)
|
|
||||||
*
|
|
||||||
* See http://www.opengeospatial.org/standards/kml
|
|
||||||
*/
|
|
||||||
class Kml_Printer_gpstk
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
std::ofstream kml_file;
|
|
||||||
|
|
||||||
public:
|
|
||||||
bool set_headers(std::string filename);
|
|
||||||
bool print_position(gpstk::Position position);
|
|
||||||
bool close_file();
|
|
||||||
Kml_Printer_gpstk();
|
|
||||||
~Kml_Printer_gpstk();
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -4,7 +4,7 @@ Continuous Reproducibility in GNSS Signal Processing
|
|||||||
|
|
||||||
This folder contains files required for the reproduction of the experiment proposed in:
|
This folder contains files required for the reproduction of the experiment proposed in:
|
||||||
|
|
||||||
C. Fernández-Prades, J. Vilà-Valls, J. Arribas and A. Ramos, [*Continuous Reproducibility in GNSS Signal Processing*](http://ieeexplore.ieee.org/document/8331069/), IEEE Access, accepted for publication, April 2018. DOI: 10.1109/ACCESS.2018.2822835
|
C. Fernández-Prades, J. Vilà-Valls, J. Arribas and A. Ramos, [*Continuous Reproducibility in GNSS Signal Processing*](https://ieeexplore.ieee.org/document/8331069/), IEEE Access, Vol. 6, No. 1, pp. 20451-20463, April 2018. DOI: [10.1109/ACCESS.2018.2822835](https://doi.org/10.1109/ACCESS.2018.2822835)
|
||||||
|
|
||||||
The data set used in this paper is available at https://zenodo.org/record/1184601
|
The data set used in this paper is available at https://zenodo.org/record/1184601
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user