Skip to content

Commit 24cc5cd

Browse files
authored
v0.3 (#36)
* fix url * NAV RINEX collection * Corrected multi band signals * L2 and L5 signals * Signals and modulations * Update docs * Ubx proto version * submodule update * ubx proto version, issue in the build script * constellations in passive mode * --crx will require stream based compression (not avail yet) --------- Signed-off-by: Guillaume W. Bres <guillaume.bressaix@gmail.com>
1 parent 0b05c3c commit 24cc5cd

File tree

15 files changed

+1580
-421
lines changed

15 files changed

+1580
-421
lines changed

.github/workflows/daily.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
sudo apt-get install -y libudev-dev
2828
2929
- uses: actions-rs/cargo@v1
30-
name: Build (all features)
30+
name: Build (Default)
3131
with:
3232
command: build
33-
args: --all-features
33+
args: -r

.github/workflows/release.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,17 @@ jobs:
1818
steps:
1919
- name: Checkout
2020
uses: actions/checkout@v4
21+
2122
- name: Install stable
2223
uses: actions-rs/toolchain@v1
2324
with:
2425
toolchain: stable
26+
2527
- name: Install dependencies
2628
run: |
2729
sudo apt-get update
2830
sudo apt-get install -y libudev-dev
31+
2932
- name: Publish
3033
env:
3134
TOKEN: ${{ secrets.CRATES_IO_TOKEN }}
@@ -78,13 +81,12 @@ jobs:
7881
sudo apt-get update
7982
sudo apt-get install -y libudev-dev
8083
81-
- name: Build applications
84+
- name: Build (Default)
8285
shell: bash
8386
run: |
8487
CARGO_PROFILE_RELEASE_STRIP=symbols ${{ env.CARGO }} build \
8588
--verbose \
8689
--target ${{ matrix.target }} \
87-
--all-features \
8890
--release
8991
ls -lah target/${{ matrix.target }}/release
9092
if [ "${{ matrix.os }}" = "windows-latest" ]; then

Cargo.toml

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
[package]
22
name = "ubx2rinex"
3-
version = "0.2.0"
3+
version = "0.3.0"
44
license = "MPL-2.0"
55
authors = ["Guillaume W. Bres <guillaume.bressaix@gmail.com>"]
66
description = "U-Blox to RINEX deserializer"
7-
homepage = "https://github.com/rtk-rs"
8-
repository = "https://github.com/rtk-rs/ubx2rinex"
7+
homepage = "https://github.com/nav-solutions"
8+
repository = "https://github.com/nav-solutions/ubx2rinex"
99
keywords = ["gnss", "gps", "geo"]
1010
categories = ["science", "science::geo", "command-line-interface", "command-line-utilities"]
1111
edition = "2021"
@@ -14,6 +14,22 @@ exclude = [
1414
"data/*",
1515
]
1616

17+
[features]
18+
# U-Blox v23 by default
19+
default = ["ublox/ubx_proto23"]
20+
21+
# Select U-Blox v14 protocol
22+
ubx14 = ["ublox/ubx_proto14"]
23+
24+
# Select U-Blox v23 protocol
25+
ubx23 = ["ublox/ubx_proto23"]
26+
27+
# Select U-Blox v27 protocol
28+
ubx27 = ["ublox/ubx_proto27"]
29+
30+
# Select U-Blox v31 protocol
31+
ubx31 = ["ublox/ubx_proto31"]
32+
1733
[dependencies]
1834
log = "0.4"
1935
flate2 = "1"
@@ -27,7 +43,7 @@ env_logger = "0.11"
2743
pretty_env_logger = "0.5"
2844
serialport = "4.7"
2945
tokio = { version = "1.43", features = ["full"] }
30-
rinex = { version = "0.21", features = ["obs", "nav"] }
3146
gnss-protos = { version = "0.0.2", features = ["gps"] }
47+
rinex = { version = "0.21.1", features = ["obs", "nav"] }
48+
ublox = { version = "0.6", features = ["std", "sfrbx-gps"] }
3249
clap = { version = "4.4.10", features = ["derive", "color"] }
33-
ublox = { version = "0.6", features = ["std", "sfrbx-gps", "ubx_proto23"] }

README.md

Lines changed: 120 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,37 +11,91 @@ UBX2RINEX
1111
`ubx2rinex` is a small command line utility to deserialize
1212
a U-Blox data stream into standardized RINEX file(s).
1313

14-
:warning: this tool is work in progress.
15-
1614
## Licensing
1715

18-
This application is part of the [nav-solutions framework](https://github.com/nav-solutions) which
19-
is delivered under the [Mozilla V2 Public](https://www.mozilla.org/en-US/MPL/2.0) license.
16+
This application is part of the [nav-solutions framework](https://github.com/nav-solutions) and
17+
is licensed under [Mozilla V2 Public](https://www.mozilla.org/en-US/MPL/2.0) license.
18+
19+
## Constellations
20+
21+
Supported constellations:
22+
23+
- GPS (US)
24+
- Galileo (EU)
25+
- Glonass (RU)
26+
- BeiDou (CH)
27+
- QZSS (Japan)
28+
- IRNSS/NAV-IC (India)
29+
- SBAS
30+
31+
## Signals
32+
33+
Supported signals/modulations:
34+
35+
- GPS L1 C/A
36+
- SBAS L1 C/A
37+
- QZSS L1 C/A
38+
- Galileo E1 (C+B)
39+
- Glonass L1
40+
- GPS L2 (M+L)
41+
- QZSS L2 (M+L)
42+
- Glonass L2
43+
- Galileo E5A (I+Q)
44+
- Galileo E5B (I+Q)
45+
- QZSS L5 (I+Q)
46+
- BDS B1i (D1+D2)
47+
- BDS B2i (D1+D2)
48+
- BDS B1C
49+
- BDS B2A
50+
- QZSS L1 S
51+
- IRNSS/NAV-IC L5 (A)
52+
53+
## U-Blox protocol
54+
55+
Supported UBX protocol versions
56+
57+
- V14
58+
- V23 (Default)
59+
- V27
60+
- V31
61+
62+
You need to select one at least. When building with default features, you obtain the default UBX protocol.
63+
You cannot build this application with `--all-features` until further notice, because you can only select
64+
one particular revision of the UBX protocol.
2065

2166
## Install from Cargo
2267

23-
You can directly install the tool from Cargo with internet access:
68+
Install the latest official release from the worldwide portal directly:
2469

2570
```bash
2671
cargo install ubx2rinex
2772
```
2873

29-
## Build from sources
74+
# Build from sources
3075

3176
Download the version you are interested in:
3277

3378
```bash
3479
git clone https://github.com/nav-solutions/ubx2rinex
3580
```
3681

37-
And build it using cargo:
82+
Grab our test data if you're interested in the .UBX files:
83+
84+
```bash
85+
git clone --recurse-submodules https://github.com/nav-solutions/ubx2rinex
86+
```
87+
88+
Build the latest version with default UBX protocol:
3889

3990
```bash
4091
cargo build -r
4192
```
4293

43-
The application uses the latest `UBX` protocol supported. This may unlock full potential
44-
of modern devices, and does not cause issues with older firmwares, simply restricted applications.
94+
Build for protocol v31 specifically:
95+
96+
```bash
97+
cargo build -r --no-default-features --features ubx31
98+
```
4599

46100
## Getting started
47101

@@ -53,15 +107,25 @@ Connecting and operating a GNSS module requires more knowledge and involes more
53107
Mostly, to configure the hardware and operate correctly. One example would be the selection
54108
of the desired Constellation, and navigation signals. You select this mode of operation by
55109
connecting to a device with `-p,--port` (mandatory).
110+
In active mode, you must select at least one constellation and one signal. For example, `--gps` and `--l1`.
56111

57112
When operating in passive mode, all hardware related options no longer apply.
58113
You select this mode of operation by loading at least one file with `-f,--file` (mandatory).
59-
Passive deployment example:
114+
For example:
60115

61116
```bash
62-
ubx2rinex -f data/UBX/F9T-L2-5min.ubx.gz --l1 --gps --bds --galileo
117+
ubx2rinex -f data/UBX/F9T-L2-5min.ubx.gz
63118
```
64119

120+
Will deserialize any data to be encountered. But you can select Constellations specifically,
121+
for example:
122+
123+
```bash
124+
ubx2rinex -f data/UBX/F9T-L2-5min.ubx.gz --gps
125+
```
126+
127+
Will only deserialize GPS data.
128+
65129
In any case, either `-p,--port` or `-f,--file` is required and they are mutually exclusive:
66130
you cannot operate in both modes at the same time.
67131

@@ -191,12 +255,53 @@ every time a new gathering period starts.
191255
File name conventions
192256
=====================
193257

194-
`ubx2rinex` follows and uses RINEX standard conventions. By default we will generate
195-
RINEX `V2` (short) filenames, as it only requires one field to be complete.
196-
By default, this field is set to `UBX`, but you can change that with `--name`:
258+
`UBX2RINEX` will generate short (V2) standardized RINEX file names by default,
259+
even though we generate a V3 file format by default.
260+
261+
```bash
262+
ubx2rinex -f data/UBX/F9T-L2-5min.ubx.gz --gps
263+
```
264+
265+
This is because the V3 file format is the most common and normal RINEX format.
266+
Yet, it is impossible to generate a valid V3 file name by default.
267+
268+
To switch to V3 file name by default, simply use `-l,--long`, which means
269+
you prefer longer filenames. But to obtain a valid file name, you should specify
270+
a country code as well:
271+
272+
```bash
273+
ubx2rinex -l --gps -c USA -f data/UBX/F9T-L2-5min.ubx.gz
274+
```
275+
276+
Note that country codes are always 3 letters.
277+
278+
The receiver model also impacts the standardized V2/V3 standardized filename.
279+
For example, here we emphasize that this is a F9T receiver model, and that applies
280+
to each standard:
281+
282+
```bash
283+
ubx2rinex -m F9T --gps -c USA -f data/UBX/F9T-L2-5min.ubx.gz
284+
ubx2rinex -l -m F9T --gps -c USA -f data/UBX/F9T-L2-5min.ubx.gz
285+
```
286+
287+
You can generate a completely custom name and not use the standard generator:
288+
289+
```bash
290+
ubx2rinex -n CUSTOM --gps -f data/UBX/F9T-L2-5min.ubx.gz
291+
```
292+
293+
And still take advantage of session customization, for example:
294+
295+
```bash
296+
ubx2rinex -n CUSTOM -m F9T --gps -f data/UBX/F9T-L2-5min.ubx.gz
297+
```
298+
299+
You can select a destination folder with `--prefix`, which applies to either
300+
customized or standardize names:
197301

198302
```bash
199-
RUST_LOG=trace ubx2rinex -p /dev/ttyUSB1 --gps --name M8T
303+
ubx2rinex --prefix /tmp -m F9T --gps -f data/UBX/F9T-L2-5min.ubx.gz
304+
ubx2rinex --prefix /tmp -n CUSTOM -m F9T --gps -f data/UBX/F9T-L2-5min.ubx.gz
200305
```
201306

202307
Signal Collection

0 commit comments

Comments
 (0)