From 8a06fffcc08c07478fcffad28c938c817db984cf Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Fri, 11 Feb 2022 14:13:36 +0100 Subject: [PATCH 1/4] Document Galileo E5b chain --- _pages/index.md | 2 +- ...-07-configuration-options-building-time.md | 4 +- _quick-start/04-my-first-position-fix.md | 14 +-- _quick-start/05-configurations.md | 4 +- _sp-blocks/07-channels.md | 12 ++- _sp-blocks/08-acquisition.md | 102 ++++++++++++++---- _sp-blocks/09-tracking.md | 72 +++++++++++++ _sp-blocks/10-telemetry-decoder.md | 73 ++++++++++--- _sp-blocks/12-pvt.md | 4 +- _sp-blocks/13-monitor.md | 4 +- serviceworker.js | 5 +- 11 files changed, 236 insertions(+), 60 deletions(-) diff --git a/_pages/index.md b/_pages/index.md index b66fda20..4d4579cf 100644 --- a/_pages/index.md +++ b/_pages/index.md @@ -12,7 +12,7 @@ header: url: "/build-and-install/" caption: teaser: /assets/images/logo-gnss-sdr.png -excerpt: 'An open source Global Navigation Satellite Systems software-defined receiver.
Current release: [v0.0.15](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.15)

' +excerpt: 'An open-source Global Navigation Satellite Systems software-defined receiver.
Current release: [v0.0.16](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.16)

' feature_row: - image_path: /assets/images/fix.png alt: "Using the software-defined receiver" diff --git a/_posts/2017-03-07-configuration-options-building-time.md b/_posts/2017-03-07-configuration-options-building-time.md index d4279ef7..fcdfb200 100644 --- a/_posts/2017-03-07-configuration-options-building-time.md +++ b/_posts/2017-03-07-configuration-options-building-time.md @@ -13,7 +13,7 @@ sidebar: toc: true toc_sticky: true show_date: false -last_modified_at: 2021-01-11T09:17:02+02:00 +last_modified_at: 2022-02-09T09:17:02+02:00 --- @@ -194,7 +194,7 @@ package (`sudo apt-get install gnss-sdr`), the option `ENABLE_OSMOSDR` is set to | `-DENABLE_OWN_GLOG` | `ON` / `OFF` | `OFF` | If set to `ON`, it forces to download, build and link a working version of [glog](https://github.com/google/glog) locally, even if it is already installed. If [GFlags](https://github.com/gflags/gflags) is not found, it will also download, build and link it. | | `-DENABLE_LOG` | `ON` / `OFF` | `ON` | If set to `OFF`, it disables runtime logging with [glog](https://github.com/google/glog). This can be useful in storage-limited systems. GNSS-SDR will still produce outputs such as RINEX or KML files. | | `-DENABLE_STRIP` | `ON` / `OFF` | `OFF` | If set to `ON`, it activates the generation of stripped binaries (without debugging information), smaller in size and potentially providing better performance than non-stripped counterparts. Only valid when using the `Release` build mode and `ENABLE_PACKAGING` is set to `OFF`, otherwise ignored. | -| `-DENABLE_OWN_CPUFEATURES` | `ON` / `OFF` | `ON` | This option defaults to `ON` when building `gnss-sdr`, but it defaults to `OFF` when building a stand-alone version of `volk_gnsssdr`. When this building option is set to `ON`, it forces the building of the local version of the [cpu_features](https://github.com/google/cpu_features) library, regardless of whether it is already installed or not. If set to `OFF`, CMake searches for the cpu_features files installed by VOLK and makes use of them. NOTE: This option is only available from the `next` branch of the upstream repository, and it will be available in the next stable release. | +| `-DENABLE_OWN_CPUFEATURES` | `ON` / `OFF` | `ON` | This option defaults to `ON` when building `gnss-sdr`, but it defaults to `OFF` when building a stand-alone version of `volk_gnsssdr`. When this building option is set to `ON`, it forces the building of the local version of the [cpu_features](https://github.com/google/cpu_features) library, regardless of whether it is already installed or not. If set to `OFF`, CMake searches for the cpu_features files installed by VOLK and makes use of them. | |---------- diff --git a/_quick-start/04-my-first-position-fix.md b/_quick-start/04-my-first-position-fix.md index fb1899c3..10c347ee 100644 --- a/_quick-start/04-my-first-position-fix.md +++ b/_quick-start/04-my-first-position-fix.md @@ -2,7 +2,7 @@ title: "My first position fix" permalink: /my-first-fix/ excerpt: "How to quickly get a position fix with GNSS-SDR." -last_modified_at: 2020-03-14T08:54:02+02:00 +last_modified_at: 2022-02-09T08:54:02+02:00 header: teaser: "/assets/images/gn3s_pvt_4_sats.jpg" sidebar: @@ -35,16 +35,16 @@ you should see something similar to: ```console $ gnss-sdr --version -gnss-sdr version 0.0.15 +gnss-sdr version 0.0.16 $ ``` {: class="no-copy"} -Please check that your installed version is 0.0.15 (or something like -0.0.15.git-`branchname`-`githash` if you built the code from a source code +Please check that your installed version is 0.0.16 (or something like +0.0.16.git-`branchname`-`githash` if you built the code from a source code snapshot). Older versions could not work for the example shown here. If you installed GNSS-SDR by doing `sudo apt-get install gnss-sdr` and you got a -version earlier to 0.0.15, please do `sudo apt-get remove gnss-sdr` and [build +version earlier to 0.0.16, please do `sudo apt-get remove gnss-sdr` and [build it from source]({{ "/build-and-install/#build" | relative_url }}). {: .notice--warning} @@ -126,7 +126,7 @@ Resampler.item_type=gr_complex ;######### CHANNELS GLOBAL CONFIG ############ Channels_1C.count=8 -Channels.in_acquisition=1 +Channels.in_acquisition=8 Channel.signal=1C ;######### ACQUISITION GLOBAL CONFIG ############ @@ -201,7 +201,7 @@ You should see something similar to: ``` $ gnss-sdr --config_file=./my-first-GNSS-SDR-receiver.conf -Initializing GNSS-SDR v0.0.15 ... Please wait. +Initializing GNSS-SDR v0.0.16 ... Please wait. Logging will be done at "/tmp" Use gnss-sdr --log_dir=/path/to/log to change that. Processing file /home/your-username/work/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat, which contains 1600000000 [bytes] diff --git a/_quick-start/05-configurations.md b/_quick-start/05-configurations.md index cced7e46..75c3239f 100644 --- a/_quick-start/05-configurations.md +++ b/_quick-start/05-configurations.md @@ -3,7 +3,7 @@ title: "Configurations" permalink: /conf/ excerpt: "How to configure GNSS-SDR in a variety of setups." related: true -last_modified_at: 2020-08-13T13:54:02+02:00 +last_modified_at: 2022-02-09T13:54:02+02:00 header: teaser: "/assets/images/configuration.png" sidebar: @@ -347,7 +347,7 @@ You should see something similar to: ```console $ gnss-sdr --config_file=./my_GPS_receiver.conf -Initializing GNSS-SDR v0.0.15 ... Please wait. +Initializing GNSS-SDR v0.0.16 ... Please wait. Logging will be done at "/tmp" Use gnss-sdr --log_dir=/path/to/log to change that. -- X300 initialization sequence... diff --git a/_sp-blocks/07-channels.md b/_sp-blocks/07-channels.md index 0e1422cd..95bd6bb7 100644 --- a/_sp-blocks/07-channels.md +++ b/_sp-blocks/07-channels.md @@ -6,7 +6,7 @@ sidebar: nav: "sp-block" toc: true toc_sticky: true -last_modified_at: 2019-01-28T12:54:02+02:00 +last_modified_at: 2022-02-09T12:54:02+02:00 --- @@ -33,15 +33,16 @@ of the following signal identifiers: | `B3` | Beidou B3I | $$ 1268.520 $$ MHz | | `2G` | Glonass L2 C/A | $$ 1246.00 $$ MHz | | `2S` | GPS L2 L2CM | $$ 1227.60 $$ MHz | -| `5X` | Galileo E5a | $$ 1176.45 $$ MHz | +| `7X` | Galileo E5b | $$ 1207.140 $$ MHz | +| `5X` | Galileo E5a | $$ 1176.450 $$ MHz | | `L5` | GPS L5C | $$ 1176.45 $$ MHz | |----- -Then, nine parameters can be set: `Channels_1G.count`, `Channels_1C.count`, +Then, ten parameters can be set: `Channels_1G.count`, `Channels_1C.count`, `Channels_1B.count`, `Channels_B1.count`, `Channels_B3.count`, -`Channels_2G.count`, `Channels_2S.count`, `Channels_5X.count`, and -`Channels_L5.count`, all of them defaulting to $$ 0 $$. +`Channels_2G.count`, `Channels_2S.count`, `Channels_7X.count`, +`Channels_5X.count`, and `Channels_L5.count`, all of them defaulting to $$ 0 $$. In addition, the GNSS-SDR flow graph allows setting the number of channels that will be executing signal acquisition (which is known to require a high @@ -65,6 +66,7 @@ _Channels_ accepts the following parameters: | `Channels_B3.count` | Number of channels targeting BeiDou B3I signals. It defaults to $$ 0 $$.| Optional | | `Channels_2S.count` | Number of channels targeting GPS L2 L2CM signals. It defaults to $$ 0 $$.| Optional | | `Channels_2G.count` | Number of channels targeting Glonass L2 C/A signals. It defaults to $$ 0 $$. | Optional | +| `Channels_7X.count` | Number of channels targeting Galileo E5b (I+Q) signals. It defaults to $$ 0 $$. | Optional | | `Channels_5X.count` | Number of channels targeting Galileo E5a (I+Q) signals. It defaults to $$ 0 $$. | Optional | | `Channels_L5.count` | Number of channels targeting GPS L5 signals. It defaults to $$ 0 $$. | Optional | | `Channel.signal` | Assign all channels to a specific signal [`1C`, `1B`, `2S`, `5X`, `L5`]. Only required in single-system receivers. | Optional | diff --git a/_sp-blocks/08-acquisition.md b/_sp-blocks/08-acquisition.md index 9594dc63..9fdb1b66 100644 --- a/_sp-blocks/08-acquisition.md +++ b/_sp-blocks/08-acquisition.md @@ -146,7 +146,7 @@ This implementation accepts the following parameters: |---------- | **Global Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `GNSS-SDR.internal_fs_sps` | Input sample rate to the processing channels, in samples per second. | Mandatory | | `GNSS-SDR.use_acquisition_resampler` | [`true`, `false`]: If set to `true`, the Acquisition block makes use of the minimum possible sample rate during acquisition by setting a resampler at its input. This allows reducing the FFT size when using high data rates at `GNSS-SDR.internal_fs_sps`. All the required setup is configured automatically. It defaults to `false`. | Optional | @@ -155,7 +155,7 @@ This implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `GPS_L1_CA_PCPS_Acquisition` | Mandatory | | `item_type` | [`gr_complex`, `cshort`, `cbyte`]: Set the sample data type expected at the block input. It defaults to `gr_complex`. | Optional | @@ -197,7 +197,7 @@ This implementation accepts the following parameters: |---------- | **Global Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `GNSS-SDR.internal_fs_sps` | Input sample rate to the processing channels, in samples per second. | Mandatory | |-------------- @@ -205,7 +205,7 @@ This implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `GPS_L1_CA_PCPS_Acquisition_Fine_Doppler` | Mandatory | | `item_type` | [`gr_complex`]: Set the sample data type expected at the block input. Only `gr_complex` is defined in this version. It defaults to `gr_complex`. | Optional | @@ -259,7 +259,7 @@ This implementation accepts the following parameters: |---------- | **Global Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `GNSS-SDR.internal_fs_sps` | Input sample rate to the processing channels, in samples per second. | Mandatory | |-------------- @@ -267,7 +267,7 @@ This implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `GPS_L1_CA_Tong_PCPS_Acquisition` | Mandatory | | `item_type` | [`gr_complex`]: Set the sample data type expected at the block input. It defaults to `gr_complex`. | Optional | @@ -376,7 +376,7 @@ This implementation accepts the following parameters: |---------- | **Global Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `GNSS-SDR.internal_fs_sps` | Input sample rate to the processing channels, in samples per second. | Mandatory | | `GNSS-SDR.use_acquisition_resampler` | [`true`, `false`]: If set to `true`, the Acquisition block makes use of the minimum possible sample rate during acquisition by setting a resampler at its input. This allows reducing the FFT size when using high data rates at `GNSS-SDR.internal_fs_sps`. All the required setup is configured automatically. It defaults to `false`. | Optional | @@ -385,7 +385,7 @@ This implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Galileo_E1_PCPS_Ambiguous_Acquisition` | Mandatory | | `item_type` | [`gr_complex`, `cshort`, `cbyte`]: Set the sample data type expected at the block input. It defaults to `gr_complex`. | Optional | @@ -441,7 +441,7 @@ This implementation accepts the following parameters: |---------- | **Global Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `GNSS-SDR.internal_fs_sps` | Input sample rate to the processing channels, in samples per second. | Mandatory | |-------------- @@ -449,7 +449,7 @@ This implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Galileo_E1_PCPS_Tong_Ambiguous_Acquisition` | Mandatory | | `item_type` | [`gr_complex`]: Set the sample data type expected at the block input. It defaults to `gr_complex`. | Optional | @@ -491,7 +491,7 @@ This implementation accepts the following parameters: |---------- | **Global Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `GNSS-SDR.internal_fs_sps` | Input sample rate to the processing channels, in samples per second. | Mandatory | |-------------- @@ -499,7 +499,7 @@ This implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `GLONASS_L1_CA_PCPS_Acquisition` | Mandatory | | `item_type` | [`gr_complex`, `cshort`, `cbyte`]: Set the sample data type expected at the block input. It defaults to `gr_complex`. | Optional | @@ -539,7 +539,7 @@ This implementation accepts the following parameters: |---------- | **Global Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `GNSS-SDR.internal_fs_sps` | Input sample rate to the processing channels, in samples per second. | Mandatory | | `GNSS-SDR.use_acquisition_resampler` | [`true`, `false`]: If set to `true`, the Acquisition block makes use of the minimum possible sample rate during acquisition by setting a resampler at its input. This allows reducing the FFT size when using high data rates at `GNSS-SDR.internal_fs_sps`. All the required setup is configured automatically. It defaults to `false`. | Optional | @@ -548,7 +548,7 @@ This implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `GPS_L2_M_PCPS_Acquisition` | Mandatory | | `item_type` | [`gr_complex`, `cshort`, `cbyte`]: Set the sample data type expected at the block input. It defaults to `gr_complex`. | Optional | @@ -594,7 +594,7 @@ This implementation accepts the following parameters: |---------- | **Global Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `GNSS-SDR.internal_fs_sps` | Input sample rate to the processing channels, in samples per second. | Mandatory | |-------------- @@ -602,7 +602,7 @@ This implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `GLONASS_L2_CA_PCPS_Acquisition` | Mandatory | | `item_type` | [`gr_complex`, `cshort`, `cbyte`]: Set the sample data type expected at the block input. It defaults to `gr_complex`. | Optional | @@ -641,7 +641,7 @@ This implementation accepts the following parameters: |---------- | **Global Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `GNSS-SDR.internal_fs_sps` | Input sample rate to the processing channels, in samples per second. | Mandatory | | `GNSS-SDR.use_acquisition_resampler` | [`true`, `false`]: If set to `true`, the Acquisition block makes use of the minimum possible sample rate during acquisition by setting a resampler at its input. This allows reducing the FFT size when using high data rates at `GNSS-SDR.internal_fs_sps`. All the required setup is configured automatically. It defaults to `false`. | Optional | @@ -650,7 +650,7 @@ This implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `GPS_L5i_PCPS_Acquisition` | Mandatory | | `item_type` | [`gr_complex`, `cshort`, `cbyte`]: Set the sample data type expected at the block input. It defaults to `gr_complex`. | Optional | @@ -696,7 +696,7 @@ This implementation accepts the following parameters: |---------- | **Global Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `GNSS-SDR.internal_fs_sps` | Input sample rate to the processing channels, in samples per second. | Mandatory | | `GNSS-SDR.use_acquisition_resampler` | [`true`, `false`]: If set to `true`, the Acquisition block makes use of the minimum possible sample rate during acquisition by setting a resampler at its input. This allows reducing the FFT size when using high data rates at `GNSS-SDR.internal_fs_sps`. All the required setup is configured automatically. It defaults to `false`. | Optional | @@ -705,7 +705,7 @@ This implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Galileo_E5a_Pcps_Acquisition` | Mandatory | | `item_type` | [`gr_complex`, `cshort`]: Set the sample data type expected at the block input. It defaults to `gr_complex`. | Optional | @@ -750,7 +750,7 @@ This implementation accepts the following parameters: |---------- | **Global Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `GNSS-SDR.internal_fs_sps` | Input sample rate to the processing channels, in samples per second. | Mandatory | |-------------- @@ -758,7 +758,7 @@ This implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Galileo_E5a_Noncoherent_IQ_Acquisition_CAF` | Mandatory | | `item_type` | [`gr_complex`]: Set the sample data type expected at the block input. It defaults to `gr_complex`. | Optional | @@ -789,6 +789,64 @@ Acquisition_5X.doppler_max=10000 Acquisition_5X.doppler_step=250 ``` +## Galileo E5b signal acquisition + +### Implementation: `Galileo_E5b_Pcps_Acquisition` + +This implementation accepts the following parameters: + + +|---------- +| **Global Parameter** | **Description** | **Required** | +|:-:|:--|:-:| +|-------------- +| `GNSS-SDR.internal_fs_sps` | Input sample rate to the processing channels, in samples per second. | Mandatory | +| `GNSS-SDR.use_acquisition_resampler` | [`true`, `false`]: If set to `true`, the Acquisition block makes use of the minimum possible sample rate during acquisition by setting a resampler at its input. This allows reducing the FFT size when using high data rates at `GNSS-SDR.internal_fs_sps`. All the required setup is configured automatically. It defaults to `false`. | Optional | +|-------------- + + +|---------- +| **Parameter** | **Description** | **Required** | +|:-:|:--|:-:| +|-------------- +| `implementation` | `Galileo_E5b_Pcps_Acquisition` | Mandatory | +| `item_type` | [`gr_complex`, `cshort`]: Set the sample data type expected at the block input. It defaults to `gr_complex`. | Optional | +| `doppler_max` | Maximum Doppler value in the search grid, in Hz. It defaults to 5000 Hz. | Optional | +| `doppler_step` | Frequency step in the search grid, in Hz. It defaults to 500 Hz. | Optional | +| `threshold` | Decision threshold $$ \gamma $$ from which a signal will be considered present. It defaults to $$ 0.0 $$ (_i.e._, all signals are declared present), | Optional | +| `pfa` | If defined, it supersedes the `threshold` value and computes a new threshold $$ \gamma_{pfa} $$ based on the Probability of False Alarm. It defaults to $$ 0.0 $$ (_i.e._, not set). | Optional | +| `coherent_integration_time_ms` | Set the integration time $$ T_{int} $$, in ms. It defaults to 1 ms. | Optional | +| `bit_transition_flag` | [`true`, `false`]: If set to `true`, it takes into account the possible presence of a bit transition, so the effective integration time is doubled. When set, it invalidates the value of `max_dwells`. It defaults to `false`. | Optional | +| `max_dwells` | Set the maximum number of non-coherent dwells to declare a signal present. It defaults to 1. | Optional | +| `repeat_satellite` | [`true`, `false`]: If set to `true`, the block will search again for the same satellite once its presence has been discarded. Useful for testing. It defaults to `false`. | Optional | +| `blocking` | [`true`, `false`]: If set to `false`, the acquisition workload is executed in a separate thread, outside the GNU Radio scheduler that manages the flow graph, and the block skips over samples that arrive while the processing thread is busy. This is especially useful in real-time operation using radio frequency front-ends, overcoming the processing bottleneck for medium and high sampling rates. However, this breaks the determinism provided by the GNU Radio scheduler, and different processing results can be obtained in different machines. Do not use this option for file processing. It defaults to `true`. | Optional | +| `acquire_pilot` | [`true`, `false`]: If set to `true`, it enables the Acquisition of the pilot Galileo E5b signal (Q component). It defaults to `false`. | Optional | +| `acquire_iq` | [`true`, `false`]: If set to `true`, it enables the Acquisition of both, data (I) and pilot (Q) components of the Galileo E5b signal and overrides `acquire_pilot` to `false`. It is suitable for increasing the acquisition sensitivity of the receiver. It defaults to `false`. | Optional | +| `make_two_steps` | [`true`, `false`]: If set to `true`, an acquisition refinement stage is performed after a signal is declared present. This allows providing an updated, refined Doppler estimation to the Tracking block. It defaults to `false`. | Optional | +| `second_nbins` | If `make_two_steps` is set to `true`, this parameter sets the number of bins done in the acquisition refinement stage. It defaults to 4. | Optional | +| `second_doppler_step` | If `make_two_steps` is set to `true`, this parameter sets the Doppler step applied in the acquisition refinement stage, in Hz. It defaults to 125 Hz. | Optional | +| `dump` | [`true`, `false`]: If set to `true`, it enables the Acquisition internal binary data file logging. It defaults to `false`. | Optional | +| `dump_filename` | If `dump` is set to `true`, base name of the file(s) in which internal data will be stored. This parameter accepts either a relative or an absolute path; if there are non-existing specified folders, they will be created. It defaults to `./acquisition`, so files with name `./acquisition_E_7X_ch_N_K_sat_P.mat` (where `N` is the channel number defined by `dump_channel`, `K` is the dump number, and `P` is the targeted satellite's PRN number) will be generated. | Optional | +| `dump_channel` | If `dump` is set to `true`, channel number from which internal data will be stored. It defaults to 0. | Optional | +|-------------- + + _Acquisition implementation:_ **`Galileo_E5b_Pcps_Acquisition`**. + {: style="text-align: center;"} + +Example: + +```ini +;######### ACQUISITION CONFIG FOR GALILEO E5a CHANNELS ############ +Acquisition_7X.implementation=Galileo_E5b_PCPS_Acquisition +Acquisition_7X.item_type=gr_complex +Acquisition_7X.pfa=0.01 +Acquisition_7X.blocking=true +Acquisition_7X.doppler_max=5000 +Acquisition_7X.doppler_step=250 +Acquisition_7X.max_dwells=1 +Acquisition_7X.dump=false +Acquisition_7X.dump_filename=./acq_dump_x5 +``` ## Plotting results with MATLAB/Octave diff --git a/_sp-blocks/09-tracking.md b/_sp-blocks/09-tracking.md index da4c24b6..5a816ad7 100644 --- a/_sp-blocks/09-tracking.md +++ b/_sp-blocks/09-tracking.md @@ -1270,6 +1270,78 @@ Tracking_5X.dump=false Tracking_5X.dump_filename=./tracking_ch_ ``` +## Galileo E5b signal tracking + +### Implementation: `Galileo_E5b_DLL_PLL_Tracking` + +This implementation accepts the following parameters: + +|---------- +| **Global Parameter** | **Description** | **Required** | +|:-:|:--|:-:| +|-------------- +| `GNSS-SDR.internal_fs_sps` | Input sample rate to the processing channels, in samples per second. | Mandatory | +|-------------- + + +|---------- +| **Parameter** | **Description** | **Required** | +|:-:|:--|:-:| +|-------------- +| `implementation` | `Galileo_E5b_DLL_PLL_Tracking` | Mandatory | +| `item_type` | [`gr_complex`]: Set the sample data type expected at the block input. It defaults to `gr_complex`. | Optional | +| `track_pilot` | [`true`, `false`]: If set to `true`, the receiver is set to track the pilot signal E5bQ and enables an extra prompt correlator (slave to pilot's prompt) in the data component E5bI. If set to `false`, the receiver performs correlations on a data length of 1 ms over the E5bI component. This parameter defaults to `true`. | Optional | +| `extend_correlation_symbols` | If `track_pilot=true`, sets the number of correlation symbols to be extended after the secondary code $$ C_{E5bQs} $$ is removed from the pilot signal, in number of symbols. Each symbol is 1 ms, so setting this parameter to 25 means a coherent integration time of 25 ms. The higher this parameter is, the better local clock stability will be required. It defaults to 1. | Optional | +| `pll_bw_hz` | Bandwidth of the PLL low-pass filter, in Hz. It defaults to 50 Hz. | Optional | +| `pll_bw_narrow_hz` | Bandwidth of the PLL low-pass filter after the secondary code lock, in Hz. It defaults to 2 Hz. | Optional | +| `pll_filter_order` | [`2`, `3`]. Sets the order of the PLL low-pass filter. It defaults to 3. | Optional | +| `dll_bw_hz` | Bandwidth of the DLL low-pass filter, in Hz. It defaults to 2 Hz. | Optional | +| `dll_bw_narrow_hz` | Bandwidth of the DLL low-pass filter after the secondary code lock, in Hz. It defaults to 0.25 Hz. | Optional | +| `dll_filter_order` | [`1`, `2`, `3`]. Sets the order of the DLL low-pass filter. It defaults to 2. | Optional | +| `enable_fll_pull_in` | [`true`, `false`]. If set to `true`, enables the FLL during the pull-in time. It defaults to `false`. | Optional | +| `enable_fll_steady_state` | [`true`, `false`]. If set to `true`, the FLL is enabled beyond the pull-in stage. It defaults to `false`. | Optional | +| `fll_bw_hz` | Bandwidth of the FLL low-pass filter, in Hz. It defaults to 35 Hz. | Optional | +| `pull_in_time_s` | Time, in seconds, in which the tracking loop will be in pull-in mode. It defaults to 2 s. | Optional | +| `early_late_space_chips` | Spacing between Early and Prompt and between Prompt and Late correlators, normalized by the chip period $$ T_c $$. It defaults to $$ 0.5 $$. | Optional | +| `early_late_space_narrow_chips` | If `track_pilot=true` and `extend_correlation_symbols` $$ > $$ 1, sets the spacing between Early and Prompt and between Prompt and Late correlators after removal of the secondary code $$ C_{E5bQs} $$, normalized by the chip period $$ T_{c,E5p} $$. It defaults to $$ 0.15 $$. | Optional | +| `carrier_aiding` | [`true`, `false`]. If set to `true`, the code loop is aided by the carrier loop. It defaults to `true`. | Optional | +| `cn0_samples` | Number of $$ P $$ correlator outputs used for CN0 estimation. It defaults to 20. | Optional | +| `cn0_min` | Minimum valid CN0 (in dB-Hz). It defaults to 25 dB-Hz. | Optional | +| `max_lock_fail` | Maximum number of lock failures before dropping a satellite. It defaults to 50. | Optional | +| `carrier_lock_th` | Carrier lock threshold (in rad). It defaults to 0.85 rad. | Optional | +| `cn0_smoother_samples` | Number of samples used to smooth the value of the estimated $$ C/N_0 $$. It defaults to 200 samples. | Optional | +| `cn0_smoother_alpha` | Forgetting factor of the $$ C/N_0 $$ smoother, as in $$ y_k = \alpha x_k + (1 - \alpha) y_{k-1} $$. It defaults to 0.002. | Optional | +| `carrier_lock_test_smoother_samples` | Number of samples used to smooth the value of the carrier lock test. It defaults to 25 samples. | Optional | +| `carrier_lock_test_smoother_alpha` | Forgetting factor of the carrier lock detector smoother, as in $$ y_k = \alpha x_k + (1 - \alpha) y_{k-1} $$. It defaults to 0.002. | Optional | +| `dump` | [`true`, `false`]: If set to `true`, it enables the Tracking internal binary data file logging, in form of ".dat" files. This format can be retrieved and plotted in Matlab / Octave, see scripts under [gnss-sdr/src/utils/matlab/](https://github.com/gnss-sdr/gnss-sdr/tree/next/src/utils/matlab). It defaults to `false`. | Optional | +| `dump_filename` | If `dump` is set to `true`, name of the file in which internal data will be stored. This parameter accepts either a relative or an absolute path; if there are non-existing specified folders, they will be created. It defaults to `./track_ch`, so files in the form "./track_chX.dat", where `X` is the channel number, will be generated. | Optional | +| `dump_mat` | [`true`, `false`]. If `dump=true`, when the receiver exits it can convert the ".dat" files stored by this block into ".mat" files directly readable from Matlab and Octave. If the receiver has processed more than a few minutes of signal, this conversion can take a long time. In systems with limited resources, you can turn off this conversion by setting this parameter to `false`. It defaults to `true`, so ".mat" files are generated by default if `dump=true`. | Optional | +|-------------- + + _Tracking implementation:_ **`Galileo_E5b_DLL_PLL_Tracking`**. + {: style="text-align: center;"} + +Example: + +```ini +;######### TRACKING CONFIG FOR GALILEO E5b CHANNELS ############ +Tracking_7X.implementation=Galileo_E5b_DLL_PLL_Tracking +Tracking_7X.item_type=gr_complex +Tracking_7X.track_pilot=true +Tracking_7X.pll_bw_hz=20.0; +Tracking_7X.dll_bw_hz=1.5; +Tracking_7X.extend_correlation_symbols=20 +Tracking_7X.pll_bw_narrow_hz=5.0; +Tracking_7X.dll_bw_narrow_hz=0.5; +Tracking_7X.early_late_space_chips=0.5; +Tracking_7X.early_late_space_chips_narrow=0.1; +Tracking_7X.fll_bw_hz=4.0 +Tracking_7X.enable_fll_pull_in=true; +Tracking_7X.enable_fll_steady_state=false +Tracking_7X.dump=false +Tracking_7X.dump_filename=./tracking_ch_ +``` + ## Plotting results with MATLAB/Octave Some Tracking block implementations are able to dump intermediate results of the diff --git a/_sp-blocks/10-telemetry-decoder.md b/_sp-blocks/10-telemetry-decoder.md index e2ca8b15..eafb6fa8 100644 --- a/_sp-blocks/10-telemetry-decoder.md +++ b/_sp-blocks/10-telemetry-decoder.md @@ -6,7 +6,7 @@ sidebar: nav: "sp-block" toc: true toc_sticky: true -last_modified_at: 2021-09-13T10:54:02+02:00 +last_modified_at: 2022-02-09T10:54:02+02:00 --- @@ -73,14 +73,14 @@ This implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `GPS_L1_CA_Telemetry_Decoder` | Mandatory | | `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | | `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | | `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | | `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. NOTE: This feature is only available from the `next` branch of the upstream repository, and it will be available in the next stable release. | Optional | +| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | | `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | |-------------- @@ -147,7 +147,7 @@ This implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Galileo_E1B_Telemetry_Decoder` | Mandatory | | `enable_reed_solomon` | [`true`, `false`]: If set to `true`, it enables the FEC2 Erasure Correction defined for the Galileo E1B INAV message at [OS ICD v2.0](https://www.gsc-europa.eu/sites/default/files/sites/all/files/Galileo_OS_SIS_ICD_v2.0.pdf). It defaults to `false`. | Optional | @@ -155,7 +155,7 @@ This implementation accepts the following parameters: | `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | | `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | | `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. NOTE: This feature is only available from the `next` branch of the upstream repository, and it will be available in the next stable release. | Optional | +| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | | `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | |-------------- @@ -170,6 +170,49 @@ TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder TelemetryDecoder_1B.dump=false ``` +### Implementation: `Galileo_E5b_Telemetry_Decoder` + +The Galileo E5b signal can be expressed as: + +$$ \begin{equation} +s_{T}^{(Gal E5b)}(t) \simeq e_{E5bI}(t)+je_{E5bQ}(t). +\end{equation} $$ + +where: + +$$ \begin{eqnarray} e_{E5bI}(t) & = & \sum_{m=-\infty}^{+\infty}C_{E5bIs}\Big[|m|_{4}\Big] \oplus \sum_{l=1}^{10230}C_{E5aIp}\Big[ l \Big] \oplus \nonumber \\ +{} & {} & \oplus~ {\color{ForestGreen} D_{\text{I/NAV}} \Big[ [l]_{40920}\Big]} p(t-mT_{c,E5s}-lT_{c,E5p})~, \end{eqnarray} $$ + +$$ \begin{eqnarray} e_{E5bQ}(t) & = & \sum_{m=-\infty}^{+\infty}C_{E5bQs}\Big[|m|_{100}\Big] \oplus \sum_{l=1}^{10230}C_{E5bQp}\Big[ l \Big] \cdot\nonumber \\ +{} & {} & \cdot~p(t-mT_{c,E5s}-lT_{c,E5p})~, \end{eqnarray} $$ + +As shown in these equations, the E5b signal carries the +$$ D_{\text{I/NAV}} \in \{1, -1 \} $$ navigation message in its Inphase component. + +This implementation accepts the following parameters: + +|---------- +| **Parameter** | **Description** | **Required** | +|:-:|:--|:-:| +|-------------- +| `implementation` | `Galileo_E5b_Telemetry_Decoder` | Mandatory | +| `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | +| `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | +| `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | +| `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | +| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | +| `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | +|-------------- + + _Telemetry Decoder implementation:_ **`Galileo_E5b_Telemetry_Decoder`**. + {: style="text-align: center;"} + +Example: + +```ini +TelemetryDecoder_7X.implementation=Galileo_E5b_Telemetry_Decoder +TelemetryDecoder_7X.dump=false +``` ## Glonass GNAV navigation message @@ -225,14 +268,14 @@ This implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `GLONASS_L1_CA_Telemetry_Decoder` | Mandatory | | `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | | `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | | `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | | `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. NOTE: This feature is only available from the `next` branch of the upstream repository, and it will be available in the next stable release. | Optional | +| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | | `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | |-------------- @@ -254,14 +297,14 @@ This implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `GLONASS_L2_CA_Telemetry_Decoder` | Mandatory | | `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | | `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | | `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | | `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. NOTE: This feature is only available from the `next` branch of the upstream repository, and it will be available in the next stable release. | Optional | +| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | | `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | |-------------- @@ -309,14 +352,14 @@ This implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `GPS_L2C_Telemetry_Decoder` | Mandatory | | `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | | `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | | `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | | `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. NOTE: This feature is only available from the `next` branch of the upstream repository, and it will be available in the next stable release. | Optional | +| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | | `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | |-------------- @@ -363,14 +406,14 @@ This implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `GPS_L5_Telemetry_Decoder` | Mandatory | | `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | | `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | | `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | | `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. NOTE: This feature is only available from the `next` branch of the upstream repository, and it will be available in the next stable release. | Optional | +| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | | `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | |-------------- @@ -418,14 +461,14 @@ This implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Galileo_E5a_Telemetry_Decoder` | Mandatory | | `dump` | [`true`, `false`]: If set to `true`, it enables the Telemetry Decoder internal binary data file logging (see section Binary Output down below for details). It defaults to `false`. | Optional | | `dump_filename` | If `dump` is set to `true`, base name of the files in which internal data will be stored. It defaults to `./telemetry`, so files will be named `./telemetryN`, where `N` is the channel number (automatically added). | Optional | | `dump_mat` | [`true`, `false`]: If `dump` is set to `true`, the binary output is converted to `.mat` format, readable from Matlab7octave and Python, at the end of the receiver execution. By default, it is set to the same value as `dump`. | Optional | | `remove_dat` | [`true`, `false`]: If `dump=true` and `dump_mat` is not set, or set to `true`, then this parameter controls if the internal `.dat` binary file is removed after conversion to `.mat`, leaving a cleaner output if the user is not interested in the `.dat` file. By default, this parameter is set to `false`. | Optional | -| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. NOTE: This feature is only available from the `next` branch of the upstream repository, and it will be available in the next stable release. | Optional | +| `dump_crc_stats` | [`true`, `false`]: If set to `true`, the success rate of the CRC check when decoding navigation messages is reported in a file generated at the end of the processing (or when exiting with `q` + `[Enter]`). By default, this parameter is set to `false`. | Optional | | `dump_crc_stats_filename` | If `dump_crc_stats=true`, this parameter sets the base name of the files in which the CRC success rate is reported. It defaults to `telemetry_crc_stats`, so files named `telemetry_crc_stats_chN.txt` will be created, with `N` in `chN` being the channel number. | Optional | |-------------- diff --git a/_sp-blocks/12-pvt.md b/_sp-blocks/12-pvt.md index 0fc22f5d..9cc178b2 100644 --- a/_sp-blocks/12-pvt.md +++ b/_sp-blocks/12-pvt.md @@ -6,7 +6,7 @@ sidebar: nav: "sp-block" toc: true toc_sticky: true -last_modified_at: 2021-02-22T09:54:02+02:00 +last_modified_at: 2022-02-09T09:54:02+02:00 --- The _PVT_ block is the last one in the GNSS-SDR flow graph. Hence, it acts as a @@ -1056,7 +1056,7 @@ standard and precise positioning. It accepts the following parameters: | `monitor_ephemeris_udp_port` | Destination UDP port number of the real-time monitoring port for ephemeris data. Must be within the range from `0` to `65535`. Ports outside this range are treated as `0`. The port number is the same for all the clients. It defaults to `1234`. | Optional | | `enable_protobuf` | [`true`, `false`]: If set to `true`, the data serialization is done using [Protocol Buffers](https://developers.google.com/protocol-buffers/), with the format defined at [`monitor_pvt.proto`](https://github.com/gnss-sdr/gnss-sdr/blob/next/docs/protobuf/monitor_pvt.proto). An example of usage is the [gnss-sdr-monitor](https://github.com/acebrianjuan/gnss-sdr-monitor). If set to `false`, it uses [Boost Serialization](https://www.boost.org/doc/libs/release/libs/serialization/doc/index.html). For an example of usage of the latter, check the [gnss-sdr-pvt-monitoring-client](https://github.com/acebrianjuan/gnss-sdr-pvt-monitoring-client). This parameter defaults to `true` (Protocol Buffers is used). | Optional | | `show_local_time_zone` | [`true`, `false`]: If set to `true`, the time of the PVT solution displayed in the terminal is shown in the local time zone, referred to UTC. It defaults to `false`, so time is shown in UTC. This parameter does not affect time annotations in other output formats, which are always UTC. | Optional | -| `rtk_trace_level` | Configure the RTKLIB trace level (`0`: off, up to `5`: max. verbosity). When set to something > `2`, the RTKLIB library become more verbose in the internal logging file. It defaults to `0` (off). NOTE: This parameter is only available from the `next` branch of the upstream repository, and it will be available in the next stable release. | Optional | +| `rtk_trace_level` | Configure the RTKLIB trace level (`0`: off, up to `5`: max. verbosity). When set to something > `2`, the RTKLIB library become more verbose in the internal logging file. It defaults to `0` (off). | Optional | |---------- {::comment} diff --git a/_sp-blocks/13-monitor.md b/_sp-blocks/13-monitor.md index f3e22eae..cc9260a9 100644 --- a/_sp-blocks/13-monitor.md +++ b/_sp-blocks/13-monitor.md @@ -6,7 +6,7 @@ sidebar: nav: "sp-block" toc: true toc_sticky: true -last_modified_at: 2021-09-28T15:54:02-04:00 +last_modified_at: 2022-02-09T15:54:02-04:00 --- @@ -116,7 +116,7 @@ Decoder]({{ "/docs/sp-blocks/telemetry-decoder/" | relative_url }}) block. |-------------- | `Flag_valid_word` | `bool` | Indicates the validity of the decoded word for pseudorange computation. | | `TOW_at_current_symbol_ms` | `uint32_t` | Time of week of the current symbol, in [ms]. | -| `Flag_PLL_180_deg_phase_locked` | `bool` | Indicates if the PLL got locked at 180 degrees, so the symbol sign is reversed. NOTE: This parameter is only available from the `next` branch of the upstream repository, and it will be available in the next stable release. | +| `Flag_PLL_180_deg_phase_locked` | `bool` | Indicates if the PLL got locked at 180 degrees, so the symbol sign is reversed. | |---------- ### Observables diff --git a/serviceworker.js b/serviceworker.js index be54bcdb..a4713b15 100644 --- a/serviceworker.js +++ b/serviceworker.js @@ -1,5 +1,5 @@ -const releaseVersion = "0.0.15"; -const serviceWorkerVersion = "6"; +const releaseVersion = "0.0.16"; +const serviceWorkerVersion = "7"; const CACHE = `geniuss-place-${releaseVersion}-${serviceWorkerVersion}`; const offlineFallbackPage = "offline.html"; @@ -16,6 +16,7 @@ self.addEventListener("install", function (event) { [ '/assets/css/main.css', '/assets/css/style.css', + '/assets/fonts/fontawesome/css/all.min.css', '/assets/js/main.min.js', '/assets/images/site-logo.png', '/assets/images/logo-gnss-sdr.png', From 09c4cfa08445019a06afbeb7cf68987904efd248 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Fri, 11 Feb 2022 14:18:34 +0100 Subject: [PATCH 2/4] Remove trailing blank spaces --- _sp-blocks/03-signal-conditioner.md | 4 ++-- _sp-blocks/04-data-type-adapter.md | 14 +++++++------- _sp-blocks/05-input-filter.md | 12 ++++++------ _sp-blocks/06-resampler.md | 6 +++--- _sp-blocks/07-channels.md | 2 +- _sp-blocks/11-observables.md | 2 +- _sp-blocks/12-pvt.md | 4 ++-- _sp-blocks/13-monitor.md | 2 +- 8 files changed, 23 insertions(+), 23 deletions(-) diff --git a/_sp-blocks/03-signal-conditioner.md b/_sp-blocks/03-signal-conditioner.md index b674c1e2..a10aff25 100644 --- a/_sp-blocks/03-signal-conditioner.md +++ b/_sp-blocks/03-signal-conditioner.md @@ -63,7 +63,7 @@ The `Signal_Conditioner` implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Signal_Conditioner` | Mandatory | | _DataTypeAdapter_ | This implementation requires the configuration of a [Data Type Adapter]({{ "/docs/sp-blocks/data-type-adapter/" | relative_url }}) block. | Mandatory | @@ -106,7 +106,7 @@ It accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Pass_Through` | Mandatory | | `item_type` | [`gr_complex`, `cshort`]: Format of data samples. It defaults to `gr_complex`. | Optional | diff --git a/_sp-blocks/04-data-type-adapter.md b/_sp-blocks/04-data-type-adapter.md index 0fc538a5..0d102086 100644 --- a/_sp-blocks/04-data-type-adapter.md +++ b/_sp-blocks/04-data-type-adapter.md @@ -84,7 +84,7 @@ It accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Byte_To_Short` | Mandatory | |------- @@ -115,7 +115,7 @@ It accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Ibyte_To_Cbyte` | Mandatory | | `inverted_spectrum` | [`true`, `false`]: If set to `true`, it performs a spectrum inversion. It defaults to `false`. | Optional | @@ -147,7 +147,7 @@ It accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Ibyte_To_Cshort` | Mandatory | | `inverted_spectrum` | [`true`, `false`]: If set to `true`, it performs a spectrum inversion. It defaults to `false`. | Optional | @@ -179,7 +179,7 @@ It accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Ibyte_To_Complex` | Mandatory | | `inverted_spectrum` | [`true`, `false`]: If set to `true`, it performs a spectrum inversion. It defaults to `false`. | Optional | @@ -210,7 +210,7 @@ It accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Ishort_To_Cshort` | Mandatory | | `inverted_spectrum` | [`true`, `false`]: If set to `true`, it performs a spectrum inversion. It defaults to `false`. | Optional | @@ -241,7 +241,7 @@ It accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Ishort_To_Complex` | Mandatory | | `inverted_spectrum` | [`true`, `false`]: If set to `true`, it performs a spectrum inversion. It defaults to `false`. | Optional | @@ -265,7 +265,7 @@ It accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Pass_Through` | Mandatory | | `item_type` | [`gr_complex`, `cshort`, `cbyte`]: Format of data samples. It defaults to `gr_complex`. | Optional | diff --git a/_sp-blocks/05-input-filter.md b/_sp-blocks/05-input-filter.md index b751d8bc..02f8fb67 100644 --- a/_sp-blocks/05-input-filter.md +++ b/_sp-blocks/05-input-filter.md @@ -79,7 +79,7 @@ This implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Fir_Filter` | Mandatory | | `input_item_type` | [`cbyte`, `cshort`, `gr_complex`]: Input data type. This implementation only accepts streams of complex data types. | Mandatory | @@ -210,7 +210,7 @@ This implementation accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Freq_Xlating_Fir_Filter` | Mandatory | | `filter_type` | [`lowpass`, `bandpass`, `hilbert`, `differentiator`]: type of filter to be used after the frequency translation. | Mandatory | @@ -345,7 +345,7 @@ The implementation of this block provides the following interface: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Pulse_Blanking_Filter` | Mandatory | | `pfa` | Probability of false alarm. It defaults to $$ 0.04 $$ | Optional | @@ -431,7 +431,7 @@ The implementation of this block provides the following interface: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Notch_Filter` | Mandatory | | `p_c_factor` | Pole contraction factor of the filter, $$ k_a $$. It ranges from $$ 0 $$ to $$ 1 $$. The higher the value, the lower the filter bandwidth. It defaults to $$ 0.9 $$ | Optional | @@ -477,7 +477,7 @@ The implementation of this block provides the following interface: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Notch_Filter_Lite` | Mandatory | | `p_c_factor` | Pole contraction factor of the filter, $$ k_a $$. It ranges from $$ 0 $$ to $$ 1 $$. The higher the value, the narrower the filter bandwidth. It defaults to $$ 0.9 $$ | Optional | @@ -515,7 +515,7 @@ It accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Pass_Through` | Mandatory | | `item_type` | [`gr_complex`, `cshort`, `cbyte`]: Format of data samples. It defaults to `gr_complex`. | Optional | diff --git a/_sp-blocks/06-resampler.md b/_sp-blocks/06-resampler.md index 08cf1796..aa9d86a8 100644 --- a/_sp-blocks/06-resampler.md +++ b/_sp-blocks/06-resampler.md @@ -39,7 +39,7 @@ It accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Direct_Resampler` | Mandatory | | `sample_freq_in` | Sample rate at the block input, in samples per second. | Mandatory | @@ -85,7 +85,7 @@ It accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Mmse_Resampler` | Mandatory | | `sample_freq_in` | Sample rate at the block input, in samples per second. | Mandatory | @@ -117,7 +117,7 @@ It accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Pass_Through` | Mandatory | | `item_type` | [`cbyte`, `cshort`, `gr_complex`]: Data type to be copied from the input to the output of this block. It defaults to `gr_complex`. | Optional | diff --git a/_sp-blocks/07-channels.md b/_sp-blocks/07-channels.md index 95bd6bb7..f29de5c7 100644 --- a/_sp-blocks/07-channels.md +++ b/_sp-blocks/07-channels.md @@ -57,7 +57,7 @@ _Channels_ accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `Channels_1G.count` | Number of channels targeting Glonass L1 C/A signals. It defaults to $$ 0 $$. | Optional | | `Channels_1C.count` | Number of channels targeting GPS L1 C/A signals. It defaults to $$ 0 $$. | Optional | diff --git a/_sp-blocks/11-observables.md b/_sp-blocks/11-observables.md index 7bd1a6c2..69716140 100644 --- a/_sp-blocks/11-observables.md +++ b/_sp-blocks/11-observables.md @@ -332,7 +332,7 @@ It accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `Hybrid_Observables` | Mandatory | | `enable_carrier_smoothing` | [`true`, `false`]: If set to `true`, it enables [carrier smoothing](https://insidegnss.com/wp-content/uploads/2018/01/julyaug15-SOLUTIONS.pdf) of code pseudoranges. It defaults to `false`. | Optional | diff --git a/_sp-blocks/12-pvt.md b/_sp-blocks/12-pvt.md index 9cc178b2..28793556 100644 --- a/_sp-blocks/12-pvt.md +++ b/_sp-blocks/12-pvt.md @@ -975,7 +975,7 @@ standard and precise positioning. It accepts the following parameters: |---------- | **Global Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `GNSS-SDR.SUPL_gps_ephemeris_xml` | Name of an XML file containing GPS ephemeris data. It defaults to `./gps_ephemeris.xml` | Optional | | `GNSS-SDR.pre_2009_file` | [`true`, `false`]: If you are processing raw data files containing GPS L1 C/A signals dated before July 14, 2009, you can set this parameter to `true` in order to get the right date and time. It defaults to `false`. | Optional | @@ -983,7 +983,7 @@ standard and precise positioning. It accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `implementation` | `RTKLIB_PVT` | Mandatory | | `output_rate_ms` | Rate at which PVT solutions will be computed, in ms. The minimum is 20 ms, and the value must be a multiple of it. It defaults to 500 ms. | Optional | diff --git a/_sp-blocks/13-monitor.md b/_sp-blocks/13-monitor.md index cc9260a9..3dbb5022 100644 --- a/_sp-blocks/13-monitor.md +++ b/_sp-blocks/13-monitor.md @@ -140,7 +140,7 @@ The configuration of the _Monitor_ block accepts the following parameters: |---------- | **Parameter** | **Description** | **Required** | -|:-:|:--|:-:| +|:-:|:--|:-:| |-------------- | `Monitor.enable_monitor` | [`true`, `false`]: If set to `true`, the _Monitor_ block is activated. | Mandatory | | `Monitor.decimation_factor` | Decimation integer factor $$ N $$. Limits the streaming output rate to only every $$ N^{th} $$ sample. To stream all the samples, set this to `1`. Zero or negative values are treated as `1`. The output rate is by default 20 ms, and it can be changed with the [`GNSS-SDR.observable_interval_ms`]({{ "docs/sp-blocks/global-parameters/#internal-observables-processing-rate" | From 8cf62b07f0bf0067204647a3f060105a359f3470 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Sun, 13 Feb 2022 19:28:35 +0100 Subject: [PATCH 3/4] Add www to failing link --- _pages/acknowledgements.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_pages/acknowledgements.md b/_pages/acknowledgements.md index 1d1801f5..38d62283 100644 --- a/_pages/acknowledgements.md +++ b/_pages/acknowledgements.md @@ -90,7 +90,7 @@ and open-source GNSS software-defined receiver: * Research networks - - **COST Action CA15104 - Inclusive Radio Communication Networks for 5G and beyond ([IRACON](http://iracon.org/))**, aimed to achieve scientific breakthroughs by introducing novel design and analysis methods for the 5th-generation (5G) and beyond-5G radio communication networks. + - **COST Action CA15104 - Inclusive Radio Communication Networks for 5G and beyond ([IRACON](http://www.iracon.org/))**, aimed to achieve scientific breakthroughs by introducing novel design and analysis methods for the 5th-generation (5G) and beyond-5G radio communication networks. ![IRACON logo]({{ "/assets/images/iracon-logo-big.jpg" | relative_url }}){:height="250px" width="250px"} {: style="text-align: center;"} From b1c1e8976b318985113bf153554f5ad346271612 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Tue, 15 Feb 2022 13:52:53 +0100 Subject: [PATCH 4/4] Add post of release v0.0.16 --- _posts/2022-02-09-gnss-sdr-v0016-released.md | 70 ++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 _posts/2022-02-09-gnss-sdr-v0016-released.md diff --git a/_posts/2022-02-09-gnss-sdr-v0016-released.md b/_posts/2022-02-09-gnss-sdr-v0016-released.md new file mode 100644 index 00000000..216d00c5 --- /dev/null +++ b/_posts/2022-02-09-gnss-sdr-v0016-released.md @@ -0,0 +1,70 @@ +--- +title: "GNSS-SDR v0.0.16 released" +excerpt: "GNSS-SDR v0.0.16 has been released." +header: + teaser: /assets/images/logo-gnss-sdr-new-release.png +tags: + - news +author_profile: false +sidebar: + nav: "news" +last_modified_at: 2022-02-15T08:54:02+02:00 +--- + +This release adds new features and fixes some bugs. Most relevant changes with respect to the former release are listed below: + +## Improvements in [Availability]({{ "/design-forces/availability/" | relative_url }}): + +- Added the Galileo E5b receiving chain. The software is now able to compute PVT solutions as a standalone Galileo E5b receiver. +- Improved Time-To-First-Fix when using GPS L1 C/A signals, fixing a bug that was making the receiver to drop the satellite if the PLL got locked at 180 degrees, and making some optimizations on bit transition detection. +- Fixed a bug that prevented from obtaining PVT fixes with Galileo E1 OS signals if the I/NAV subframe type 0 was the first decoded subframe. + +## Improvements in [Interoperability]({{ "/design-forces/interoperability/" | relative_url }}): + +- Fixed setting of the signal source gain if the AGC is enabled when using the AD9361 front-end. +- Fixed the regeneration of Galileo ephemeris from the reduced clock and ephemeris data (CED) defined in the Galileo E1B INAV message introduced in Galileo OS SIS ICD Issue 2.0. +- Added a `Limesdr_Signal_Source` for interoperability with LimeSDR (requires [gr-limesdr](https://github.com/myriadrf/gr-limesdr) and the `-DENABLE_LIMESDR=ON` building flag). + +## Improvements in [Maintainability]({{ "/design-forces/maintainability/" | relative_url }}): + +- Rewritten Viterbi decoder for Galileo navigation messages. Encapsulated in a class instead of being implemented as free inline functions. This improves memory management and source code readability. +- Prefer initialization to assignment in constructors. This improves the readability of the code, could potentially increase performance, and allows for easier detection of unused data members (see the [CppCoreGuidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md/#Rc-initialize). Added the `cppcoreguidelines-prefer-member-initializer` clang-tidy check to enforce this policy. +- Non-functional change: Fixed formatting defects detected by clang-format 13.0. +- Non-functional change: Simplified flow graph disconnection. +- Updated GSL implementation to v0.40.0. See the [gsl-lite release](https://github.com/gsl-lite/gsl-lite/releases/tag/v0.40.0) +- CI - `cpplint` job on GitHub: Added the `build/include_what_you_use` filter for early detection of missing includes. +- CI - `clang-tidy` job on GitHub: More robust detection of LLVM paths installed by homebrew. + +## Improvements in [Portability]({{ "/design-forces/portability/" | relative_url }}): + +- Fixed building against the new API in the gr-iio component present in GNU Radio v3.10.X.Y. +- Fixed building against GNU Radio v3.10.X.Y, which does not support the C++20 standard. +- Fixed building against GNU Radio v3.10.X.Y, which replaced [log4cpp](http://log4cpp.sourceforge.net/) by the [spdlog](https://github.com/gabime/spdlog) and [fmt](https://github.com/fmtlib/fmt) libraries. +- Updated `cpu_features` library for improved processor detection. + +## Improvements in [Reliability]({{ "/design-forces/reliability/" | relative_url }}): + +- Fixed some potential buffer overflows. +- Avoid source code lines longer than 512 characters. This was a warning raised by Lintian (very-long-line-length-in-source-file). Long lines in source code could be used to obfuscate the source code and to hide stuff like backdoors or security problems. + +## Improvements in [Usability]({{ "/design-forces/usability/" | relative_url }}): + +- Added a new monitor to extract the decoded data bits of the navigation messages and send them elsewhere via UDP. Activated by setting `NavDataMonitor.enable_monitor=true`, `NavDataMonitor.client_addresses=127.0.0.1` and `NavDataMonitor.port=1237` in the configuration file. Format described in the `nav_message.proto` file. A simple listener application written in C++ is included in `src/utils/nav-listener` as an example. +- Extract successful rate of the CRC check in the decoding of navigation messages. This can be enabled by setting `TelemetryDecoder_XX.dump_crc_stats=true` and, optionally, `TelemetryDecoder_XX.dump_crc_stats_filename=./crc_stats` in the configuration file. At the end of the processing (or exiting with `q` + `[Enter]`), the CRC check success rate will be reported in a file. +- The `UHD_Signal_Source` learned to dump data in folders that do not exist, _e.g._, if `SignalSource.dump=true`, `SignalSource.dump_filename=./non-existing/data.dat`, and the `non-existing` folder does not exist, it will be created if the running user has writing permissions. This also works for absolute paths. +- Added a new configuration parameter `PVT.rtk_trace_level` that sets the logging verbosity level of the RTKLIB library. +- Added a new output parameter `Flag_PLL_180_deg_phase_locked` in the monitor output that indicates if the PLL got locked at 180 degrees, so the symbol sign is reversed. +- Fixed a bug in the satellite selection algorithm for configurations with a large number of channels. The maximum number of channels per signal is now limited to the number of available satellites per system minus one. The number of channels performing concurrent acquisition, `Channels.in_acquisition`, cannot be larger than the total number of channels. The program will stop if those requirements are not met in the configuration file. +- Fixed program termination when using `File_Signal_Source` and extended integration times. +- The `Fifo_Signal_Source` Signal Source implementation learned to handle the `ibyte` type. +- Added a `CITATION.cff` file. +- Updated version of the Contributor Covenant to version 2.1. + + +----- + + +As usual, compressed tarballs are available from [GitHub](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.16) and [Sourceforge](https://sourceforge.net/projects/gnss-sdr/). + +In order to make GNSS-SDR more easily referenced, and to promote reproducible research, each software release gets a Digital Object Identifier provided by [Zenodo](https://zenodo.org/faq). The DOI for GNSS-SDR v0.0.16 is [10.5281/zenodo.6090349](https://doi.org/10.5281/zenodo.6090349). +{: .notice--info}