Instead of writing the data downloaded from the assistance servers
in the corresponding global queues, write straight to the maps and
have it available immediately.
Signed-off-by: Carles Fernandez <carles.fernandez@gmail.com>
To avoid memory leaks, make sure the supl_ctx_t data structure is
initialized and cleaned as well as the connection is closed with
the server.
Signed-off-by: Carles Fernandez <carles.fernandez@gmail.com>
Now we are reading the assistance data from xml files if the correct
configuration option is set; defined the name for the xml files as
const inside control_thread.h; and finally moved the manipulation
of these files to the gnss_sdr_supl_client class, not anymore inside
the control_thread.
Signed-off-by: Javier Arribas <jarribas@cttc.es>
- Bug fixes at Galileo telemetry decoder state machine
- Bug fixes at Galileo Ephemeris decoder (two complement's data interpreted as unsigned, mismatch at the LSB weights)
Galileo KML output is avalable!!
Galileo RINEX is still under construction
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@433 64b25241-fba3-4117-9849-534c7e92360d
Bug fix in galileo tracking
Several improvements in Galileo telemetry decoder.
Code cleaning in observables
Galileo PVT is able to decode Galileo time and get satellite ECEF positions
Galileo PVT soluton is still under development
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@432 64b25241-fba3-4117-9849-534c7e92360d
- Changes in Galileo telemetry decoding (still under construction)
- Bug correction in tracking blocks that could cause random segmentation faults on some configurations
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@431 64b25241-fba3-4117-9849-534c7e92360d
gps_l1_ca_pcps_multithread_acquisition
gps_l1_ca_pcps_tong_acquisition
galileo_e1_pcps_cccwsr_ambiguous_acquisition
galileo_e1_pcps_tong_ambiguous_acquisition
galileo_e1_pcps_8ms_ambiguous_acquisition
and test for all the algorithms.
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@411 64b25241-fba3-4117-9849-534c7e92360d
· Bug fixed in the configuration parser that prevented the use of non-integer thresholds
· Provisional patch added to disable the PVT output if the height is above 50 km (due to a random bug that appears with some satellite configurations..)
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@407 64b25241-fba3-4117-9849-534c7e92360d
- The GNSS-SDR code-based Observable generation algorithm for GPS L1 C/A was migrated from common TX time to common RX time. One of the main reasons is that the common TX algorithm was incompatible with the standard RINEX observables, wich requires the oservables at the same time of reception.
- Using common Rx time, the code was simplified and now requires less memory due to the lack of symbol buffer
- Now it is possible to use standard RINEX post processing software (gpstk and rtklib for instance) to get PVT and the obtained precision is comparable to the internal Least Squares solver. It is possible to use also the carrier phase observable, but is still experimental.
- The default RINEX version output was set to 2.11 in this revision. RINEX 3.00 is under verification now.
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@364 64b25241-fba3-4117-9849-534c7e92360d
- Some channel and acquisition properties are now common for all channels
- You can choose between channel-specific properties or properties common to all
- Updating config file with the new options
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@360 64b25241-fba3-4117-9849-534c7e92360d
PSEUDORANGE
CARRIER PHASE
CARRIER DOPPLER
SIGNAL STRENGTH (dB-Hz)
thus, it enables the realtime kinematics and PPP positioning for first time in an open source GNSS SDR. Enjoy!
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@359 64b25241-fba3-4117-9849-534c7e92360d
- New SUPL parameters available in GNSS-SDR.conf
- Ephemeris assistance for real-time operation is now functional
- SUPL client now stores the received ephemeris in XML file. This file can be loaded on request to enable post-processing SUPL assistance and to enable SUPL assistance without internet connection. -> thowards a complete warm start GNSS-SDR.
BUG FIXES:
- GN3S driver firmware file copy operation in CmakeLists.txt had an error that mismatches the gn3s_firmware.ihx file location and prevents the correct firmware loading for GN3S SiGe USB dongles.
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@351 64b25241-fba3-4117-9849-534c7e92360d
- Gps telemetry decoder and PVT now uses independent queues for ephemeris, iono, utc_model and almanac. The old gps_navigation_queue is now deprecated and it is removed from the implementation. This affect almost all the PVT and Rinex printer classes.
- Rinex printer class updated to use the new ephemeris, iono, utc_model objects
Bug fixes and correction:
- The pseudorange generation now is based on the computed TOW for each received symbol. The History_Shift computation become simplier in this way. This modification is also a solution for a bug where the pseudoranges became temporally invalid when the TOW is updated (that happen every 6 secons!)
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@343 64b25241-fba3-4117-9849-534c7e92360d
- The local code replica is pre-initialized and resampled to the nominal PRN code sample rate (no code Doppler correction)
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@242 64b25241-fba3-4117-9849-534c7e92360d
- Added a pre-compiled custom GN3S firmware.
- Added a fully-compliant GNU Radio source block for GN3S USB dongle. It can be used also from GNU Radio companion and from Python applications.
- Added a new GN3S_Signal_Source block. It is possible to disable the GN3S signal source compilation. See README.
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@217 64b25241-fba3-4117-9849-534c7e92360d
1) Galileo E1 Acquisition adapter block added (Gnuradio block modification to use the same block with the 2 systems with 2 adapters)
2) Tests and signal samples for Galileo E1 Acquisition signal block
3) Library for Galileo E1 signal processing
4) Galileo_E1.h with constant variables for this system
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@209 64b25241-fba3-4117-9849-534c7e92360d
const bits_slice INTEGRITY_STATUS_FLAG = {{23,1}};
used in GPS_L1_CA.h are not allowed in the C++11 standard since they do not correspond to any valid constructor. This is accepted by the current version of gcc (probably due to backward compatibility with C and earlier versions of C++), but it *could* not be accepted in future versions. This can be fixed by putting the struct into a std::vector. I don't know if this is the best way but it seems to work well and does not implies major changes in the code.
There is another issue with the Gnss_Synchro class. Since it had a constructor and a destructor, it could not be considered a POD (Plain Old Data) structure and this has some limitations: while gcc and the C99 standard allowed an array's size to be determined at run time, this extension is not permitted in standard C++. This issue has implications when passing Gnss_Synchro through memory between signal processing blocks. In order to fix this, I have removed the Gnss_Synchro.cc implementation and now this is a header-only class where the array size can be determined at compile time
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@204 64b25241-fba3-4117-9849-534c7e92360d
- Updated all available trackings to generate the tracking_timestamp_secs taking into account the remainder code phase.
- Updated the telemetry decoder to track the number of symbol shifted from the preamble start symbol (to be used in observables).
- Updated observables to align the reference channel symbol with the corresponding symbols in the other channels and compute pseudorranges using the common transmission time algorithm.
- Updated PVT to independize the display output rate from the RINEX and KML log files. New options available in config file!
- Some minor improvements and code cleaning.
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@193 64b25241-fba3-4117-9849-534c7e92360d
- Fir_Filter implementation for InputFilter block in SignalConditioner
- Tests for InputFilter and Resampler
- Fixed some bugs
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@176 64b25241-fba3-4117-9849-534c7e92360d
Experimental storage of ephemeris in RINEX NAV file.
Some double variables are now int.
The nav message header and data Rinex printer handles both versions 2.11 and 3.01.
Change of filename: rinex_2_1_printer is now rinex_printer.
Class rinex_printer is now Rinex_Printer.
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@117 64b25241-fba3-4117-9849-534c7e92360d
./gnss-sdr --config_file="my_receiver.conf"
and another --signal_source flag that, if specified, overrides the file in the configuration:
./gnss-sdr --signal_source=/path/to/file.dat
Requires gflags 1.6 or later.
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@100 64b25241-fba3-4117-9849-534c7e92360d
- The executable file and the default configuration file is now changed from "./install/mercurio" and "./conf/mercurio.conf" to "./install/gnss-sdr" and "./conf/gnss-sdr.conf", respectively.
- Configuration file structure changed to define in a single entry the internal sampling frequency (after the signal conditioner). NOTICE that this change affects the all the adapters (acquisition, tracking, telemetry_decoder, observables, and PVT). All the adapters are now modified to work with this feature.
- Moved several in-line GPS L1 CA parameters (a.k.a magic numbers..) to ./src/core/system_parameters/GPS_L1_CA.h definition file.
- Tracking blocks now uses DOUBLE values in their outputs.
- Observables and PVT now are separated. PVT and their associated libraries are moved to ./src/algorithms/PVT
- Temporarily disabled the RINEX output (I am working on that!)
- GNSS-SDR screen output now gives extended debug information of the receiver status and events. In the future, this output will be redirected to a log file.
- Bug fixes:
- FILE_SIGNAL_SOURCE now works correctly when the user configures GNSS-SDR to process the entire file.
- GPS_L1_CA_DLL_PLL now computes correctly the PRN start values.
- GPS_L1_CA_DLL_FLL_PLL now computes correctly the PRN start values.
- Several modifications in GPS_L1_CA_Telemetry_Decoder, GPS_L1_CA_Observables, and GPS_L1_CA_PVT modules to fix the GPS position computation.
- New features
- Tracking blocks perform a signal integrity check against NaN outliers before the correlation process.
- Tracking and PVT binary dump options are now documented and we provide MATLAB libraries and sample files to read it. Available in ./utils/matlab" and "./utils/matlab/libs"
- Observables output rate can be configured. This option enables the GPS L1 CA PVT computation at a maximum rate of 1ms.
- GPS_L1_CA_PVT now can perform a moving average Latitude, Longitude, and Altitude output for each of the Observables output. It is configurable using the configuration file.
- Added Google Earth compatible Keyhole Markup Language (KML) output writer class (./src/algorithms/PVT/libs/kml_printer.h and ./src/algorithms/PVT/libs/kml_printer.cc ). You can see the receiver position directly using Google Earth.
- We provide a master configuration file which includes an in-line documentation with all the new (and old) options. It can be found in ./conf/master.conf
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@84 64b25241-fba3-4117-9849-534c7e92360d
New tracking libraries:
- tracking_discriminators: Library with a set of code tracking and carrier tracking discriminators that is used by the tracking algorithms. (fully documented, including math algorithms using doxygen!)
- tracking_2rd_DLL_filter: Class that implements 2 order DLL filter for code tracking loop.
- tracking_2rd_PLL_filter: Class that implements 2 order PLL filter for carrier tracking loop.
- tracking_FLL_PLL_filter: Class that implements hybrid FLL and PLL filter for tracking carrier loop.
- CN_estimators: Library with a set of Carrier to Noise estimators and lock detectors. (fully documented, including math algorithms using doxygen!)
Tracking:
- gps_l1_ca_dll_pll_tracking: The existing DLL + PLL tracking module, which is the K.Borre and D.Akos one, is now completely re-factored. Now uses the above described libraries.
- gps_l1_ca_dll_fll_pll_tracking: This is a brand new tracking module, which implements the FLL assisted PLL described in Kaplan (2nd edition). (also documentedwith references)
Configuration options:
- The following tracking parameters are added:
;######### TRACKING CONFIG ############
; Tracking.implementation=GPS_L1_CA_DLL_PLL_Tracking or GPS_L1_CA_DLL_FLL_PLL_Tracking
Tracking.implementation=GPS_L1_CA_DLL_FLL_PLL_Tracking
;PLL filter bandwidth in Hz.
Tracking.pll_bw_hz=50.0;
;DLL filter bandwidth in Hz.
Tracking.dll_bw_hz=2.0;
;FLL filter bandwidth in Hz.
Tracking.fll_bw_hz=50;
;filter order: choice between 2 or 3 at this moment, only for FLL assisted PLL
Tracking.order=2;
;Correlator space in chips units
Tracking.early_late_space_chips=0.5;
Other files have also been modified with minor changes to adapt to new modules or minor bug fixes.
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@80 64b25241-fba3-4117-9849-534c7e92360d