Skip to content

Commit 0cdb7c0

Browse files
authored
Merge pull request #142 from semuconsulting/RC-1.2.5
RC 1.2.5
2 parents 82da892 + 442d8bf commit 0cdb7c0

24 files changed

Lines changed: 2528 additions & 745 deletions

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ Streaming terminated, 93 messages processed with 0 errors.
284284

285285
### <a name="gnssstreamerservice">Installing gnssstreamer as a systemd service on Linux</a>
286286

287-
This example should work for most Linux distributions running `systemd` and `python3>=3.8`, including Raspberry Pi OS (*substitute `dnf` for `apt` as necessary*).
287+
This example should work for most Linux distributions running `systemd` and `python3>=3.10`, including Raspberry Pi OS (*substitute `dnf` or `pacman` for `apt` as necessary*).
288288

289289
The example `gnssstreamer.conf` file will set up `gnssstreamer` as a multi-client TCP socket server accessible on `hostip:50012` (*check TCP port 50012 is allowed through any active firewall*).
290290

@@ -499,11 +499,11 @@ class pygnssutils.rinex_conv.RinexConvertor(app, rinex_version, rinex_type, gnss
499499

500500
A command line utility and Python class `RinexConverter` to convert binary GNSS data logs to RINEX text file format.
501501

502-
**NB: RINEX conversion is an experimental work in progress (*contributions and feedback welcome*). The current ALPHA release implements the following functionality:**
502+
**NB: RINEX conversion is an experimental work in progress (*contributions and feedback welcome*). The current release implements the following functionality:**
503503

504504
1. RINEX versions 3.05 and 4.02.
505505
1. Convert binary UBX RXM-RAW or RXM-RAWX (raw observation) data from u-blox receivers (e.g. ZED-F9P) to RINEX Observation file format.
506-
1. Convert binary RXM-SFRBX (navigation subframe) data from u-blox receivers to RINEX Navigation file format. **Currently supports GPS LNAV/CNAV, GAL FNAV/INAV, BDS D1/D2 & GLO L1OF**, but the underlying `RinexConverterNavigation` class will be enhanced in future releases.
506+
1. Convert binary RXM-SFRBX (navigation subframe) data from u-blox receivers to RINEX Navigation file format.
507507
1. Convert RTCM3 Ephemerides messages (1019, 1020, 1041-1046) from any source (including NTRIP caster or RTK base station receiver) to RINEX Navigation file format.
508508
1. Convert NMEA MWD (wind speed and direction) and XDR (temperature and pressure) sensor data to RINEX Meteorology file format.
509509

RELEASE_NOTES.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# pygnssutils
22

3+
### RELEASE 1.2.5
4+
5+
1. Further enhancements and bug fixes to RINEX conversion routines.
6+
1. Add support for SBAS L1CA, QZSS LNAV/CNAV, IRNSS (NAVIC) LNAV.
7+
38
### RELEASE 1.2.4
49

510
1. Further enhancements and bug fixes to RINEX conversion routines.

docs/pygnssutils.rst

Lines changed: 64 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,70 @@ pygnssutils.rawnav module
116116
:undoc-members:
117117
:show-inheritance:
118118

119+
pygnssutils.rawnav\_reader module
120+
---------------------------------
121+
122+
.. automodule:: pygnssutils.rawnav_reader
123+
:members:
124+
:undoc-members:
125+
:show-inheritance:
126+
127+
pygnssutils.rawnav\_subframes\_bds module
128+
-----------------------------------------
129+
130+
.. automodule:: pygnssutils.rawnav_subframes_bds
131+
:members:
132+
:undoc-members:
133+
:show-inheritance:
134+
135+
pygnssutils.rawnav\_subframes\_gal module
136+
-----------------------------------------
137+
138+
.. automodule:: pygnssutils.rawnav_subframes_gal
139+
:members:
140+
:undoc-members:
141+
:show-inheritance:
142+
143+
pygnssutils.rawnav\_subframes\_glo module
144+
-----------------------------------------
145+
146+
.. automodule:: pygnssutils.rawnav_subframes_glo
147+
:members:
148+
:undoc-members:
149+
:show-inheritance:
150+
151+
pygnssutils.rawnav\_subframes\_gps module
152+
-----------------------------------------
153+
154+
.. automodule:: pygnssutils.rawnav_subframes_gps
155+
:members:
156+
:undoc-members:
157+
:show-inheritance:
158+
159+
pygnssutils.rawnav\_subframes\_irn module
160+
-----------------------------------------
161+
162+
.. automodule:: pygnssutils.rawnav_subframes_irn
163+
:members:
164+
:undoc-members:
165+
:show-inheritance:
166+
167+
pygnssutils.rawnav\_subframes\_qzs module
168+
-----------------------------------------
169+
170+
.. automodule:: pygnssutils.rawnav_subframes_qzs
171+
:members:
172+
:undoc-members:
173+
:show-inheritance:
174+
175+
pygnssutils.rawnav\_subframes\_sba module
176+
-----------------------------------------
177+
178+
.. automodule:: pygnssutils.rawnav_subframes_sba
179+
:members:
180+
:undoc-members:
181+
:show-inheritance:
182+
119183
pygnssutils.rinex\_conv module
120184
------------------------------
121185

@@ -172,38 +236,6 @@ pygnssutils.rinex\_helpers module
172236
:undoc-members:
173237
:show-inheritance:
174238

175-
pygnssutils.rinex\_subframes\_bds module
176-
----------------------------------------
177-
178-
.. automodule:: pygnssutils.rinex_subframes_bds
179-
:members:
180-
:undoc-members:
181-
:show-inheritance:
182-
183-
pygnssutils.rinex\_subframes\_gal module
184-
----------------------------------------
185-
186-
.. automodule:: pygnssutils.rinex_subframes_gal
187-
:members:
188-
:undoc-members:
189-
:show-inheritance:
190-
191-
pygnssutils.rinex\_subframes\_glo module
192-
----------------------------------------
193-
194-
.. automodule:: pygnssutils.rinex_subframes_glo
195-
:members:
196-
:undoc-members:
197-
:show-inheritance:
198-
199-
pygnssutils.rinex\_subframes\_gps module
200-
----------------------------------------
201-
202-
.. automodule:: pygnssutils.rinex_subframes_gps
203-
:members:
204-
:undoc-members:
205-
:show-inheritance:
206-
207239
pygnssutils.socket\_server module
208240
---------------------------------
209241

examples/process_rxmsfrbx_frames.py

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,20 @@
1515
# pylint: disable = invalid-name
1616

1717
from pygnssutils import GNSSReader
18-
from pygnssutils.rawnav import RawNav, RawNavReader
19-
from pygnssutils.rinex_globals import LNAV, CNAV, FNAV, L1OF, INAV, D1, D2, START, TARGET
20-
from pygnssutils.rinex_subframes_gps import GPS_SUBFRAMEACQ_MAP
21-
from pygnssutils.rinex_subframes_gal import GAL_SUBFRAMEACQ_MAP
22-
from pygnssutils.rinex_subframes_bds import BDS_SUBFRAMEACQ_MAP
23-
from pygnssutils.rinex_subframes_glo import GLO_SUBFRAMEACQ_MAP
18+
from pygnssutils.rawnav import RawNav
19+
from pygnssutils.rawnav_reader import RawNavReader
20+
from pygnssutils.rinex_globals import L1CA, LNAV, CNAV, FNAV, L1OF, INAV, D1, D2, START, TARGET
21+
from pygnssutils.rawnav_subframes_gps import GPS_SUBFRAMEACQ_MAP
22+
from pygnssutils.rawnav_subframes_gal import GAL_SUBFRAMEACQ_MAP
23+
from pygnssutils.rawnav_subframes_bds import BDS_SUBFRAMEACQ_MAP
24+
from pygnssutils.rawnav_subframes_glo import GLO_SUBFRAMEACQ_MAP
25+
from pygnssutils.rawnav_subframes_sba import SBA_SUBFRAMEACQ_MAP
26+
from pygnssutils.rawnav_subframes_qzs import QZS_SUBFRAMEACQ_MAP
27+
from pygnssutils.rawnav_subframes_irn import IRN_SUBFRAMEACQ_MAP
2428

2529
# INFILE = "pygpsdata-rxmsfrbx.log"
26-
INFILE = "/Users/steve/Downloads/pygpsdata-20260602101842.log"
30+
# INFILE = "/Users/steve/Downloads/pygpsdata-20260602101842.log"
31+
INFILE = "/Users/steve/Downloads/pygpsdata-20260611094239.ubx"
2732

2833
gps = 0
2934
navframes = {}
@@ -35,7 +40,12 @@
3540
# sfrmap = GAL_SUBFRAMEACQ_MAP[INAV] # subframe payload definitions
3641
# sfrmap = BDS_SUBFRAMEACQ_MAP[D1] # subframe payload definitions
3742
# sfrmap = BDS_SUBFRAMEACQ_MAP[D2] # subframe payload definitions
38-
sfrmap = GLO_SUBFRAMEACQ_MAP[L1OF] # subframe payload definitions
43+
# sfrmap = GLO_SUBFRAMEACQ_MAP[L1OF] # subframe payload definitions
44+
sfrmap = SBA_SUBFRAMEACQ_MAP[L1CA] # subframe payload definitions
45+
# sfrmap = QZS_SUBFRAMEACQ_MAP[LNAV] # subframe payload definitions
46+
# sfrmap = QZS_SUBFRAMEACQ_MAP[CNAV] # subframe payload definitions
47+
# sfrmap = QZS_SUBFRAMEACQ_MAP[CNV2] # subframe payload definitions
48+
# sfrmap = IRN_SUBFRAMEACQ_MAP[L1CA] # subframe payload definitions
3949
subframes = {}
4050

4151
with open(INFILE, "rb") as stream:
@@ -46,13 +56,14 @@
4656
continue
4757
if parsed.identity == "RXM-SFRBX":
4858
rxm += 1
49-
#if parsed.gnssId == 0 and parsed.sigId in (0,): # GPS LNAV:
59+
# if parsed.gnssId == 0 and parsed.sigId in (0,): # GPS LNAV:
5060
# if parsed.gnssId == 0 and parsed.sigId in (3,4,6,7,): # GPS CNAV:
5161
# if parsed.gnssId == 2 and parsed.sigId in (3,): # GAL FNAV:
5262
# if parsed.gnssId == 2 and parsed.sigId in (1,5): # GAL INAV:
5363
# if parsed.gnssId == 3 and parsed.sigId in (0,2,4,): # BDS D1:
5464
# if parsed.gnssId == 3 and parsed.sigId in (1,3,10,): # BDS D2:
55-
if parsed.gnssId == 6 and parsed.sigId in (0,): # GAL L1OF:
65+
# if parsed.gnssId == 6 and parsed.sigId in (0,): # GLO L1OF:
66+
if parsed.gnssId == 1 and parsed.sigId in (0,): # SBA L1CA:
5667
gps += 1
5768
# extract the subframe from the RXM-SFRBX message
5869
sfrdata = rnr.process_rxm_sfrbx(parsed)

src/pygnssutils/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@
88
:license: BSD 3-Clause
99
"""
1010

11-
__version__ = "1.2.4"
11+
__version__ = "1.2.5"

0 commit comments

Comments
 (0)