Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 16 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ pygnssutils

[Current Status](#currentstatus) |
[Installation](#installation) |
[gnssreader](#gnssreader) |
[gnssstreamer CLI](#gnssstreamer) |
[gnssserver CLI](#gnssserver) |
[gnssntripclient CLI](#gnssntripclient) |
Expand All @@ -16,12 +17,14 @@ pygnssutils is an original series of Python GNSS utility classes and CLI tools b

- [pyubx2](https://github.com/semuconsulting/pyubx2) - UBX parsing and generation library
- [pysbf2](https://github.com/semuconsulting/pysbf2) - SBF parsing and generation library
- [pyqgc](https://github.com/semuconsulting/pyqgc) - QGC parsing and generation library
- [pynmeagps](https://github.com/semuconsulting/pynmeagps) - NMEA parsing and generation library
- [pyrtcm](https://github.com/semuconsulting/pyrtcm) - RTCM3 parsing library
- [pyspartn](https://github.com/semuconsulting/pyspartn) - SPARTN parsing library

Originally developed in support of the [PyGPSClient](https://github.com/semuconsulting/PyGPSClient) GUI GNSS application, the utilities provided by pygnssutils can also be used in their own right:

1. `GNSSReader` class. This is essentially an amalgamation of the `*Reader` classes in all the subsidiary parsers listed above, allowing the user to seamlessly stream any of NMEA, UBX, SBF, QGC, RTCM3 and SPARTN message protocols concurrently from a single stream.
1. `GNSSStreamer` class and its associated [`gnssstreamer`](#gnssstreamer) (*formerly `gnssdump`*) CLI utility. This is essentially a configurable bidirectional input/output wrapper around the [`pyubx2.UBXReader`](https://github.com/semuconsulting/pyubx2#reading) class with flexible message formatting, filtering and output handling options for NMEA, UBX, SBF and RTCM3 protocols (**NB:** UBX and SBF protocols are mutually exclusive).
1. `GNSSSocketServer` class and its associated [`gnssserver`](#gnssserver) CLI utility. This implements a TCP Socket Server for GNSS data streams which is also capable of being run as a simple NTRIP Server/Caster.
1. `GNSSNTRIPClient` class and its associated [`gnssntripclient`](#gnssntripclient) CLI utility. This implements
Expand Down Expand Up @@ -58,7 +61,7 @@ Contributions welcome - please refer to [CONTRIBUTING.MD](https://github.com/sem
[![PyPI version](https://img.shields.io/pypi/v/pygnssutils.svg?style=flat)](https://pypi.org/project/pygnssutils/)
[![PyPI downloads](https://github.com/semuconsulting/pygpsclient/blob/master/images/clickpy_top10.svg?raw=true)](https://clickpy.clickhouse.com/dashboard/pygnssutils)

`pygnssutils` is compatible with Python 3.9-3.13.
`pygnssutils` is compatible with Python>=3.10.

In the following, `python3` & `pip` refer to the Python 3 executables. You may need to substitute `python` for `python3`, depending on your particular environment (*on Windows it's generally `python`*). **It is strongly recommended that** the Python 3 binaries (\Scripts or /bin) and site_packages directories are included in your PATH (*most standard Python 3 installation packages will do this automatically if you select the 'Add to PATH' option during installation*).

Expand All @@ -85,16 +88,25 @@ For [Conda](https://docs.conda.io/en/latest/) users, `pygnssutils` is also avail
conda install -c conda-forge pygnssutils
```

---
## <a name="gnssreader">GNSSReader class</a>

```
class pygnssutils.gnssreader.GNSSReader(**kwargs)
```

`GNSSReader` is an amalgamation of the individual `*Reader` classes from the parser libraries listed above, utilising the same input arguments (`protfilter`, `quitonerror`, etc). It allows the user to seamlessly stream any of NMEA, UBX, SBF, QGC, RTCM3 and SPARTN message protocols concurrently from a single GNSS binary data stream.

Refer to the [Sphinx API documentation](https://www.semuconsulting.com/pygnssutils/pygnssutils.html#module-pygnssutils.gnssreader) for further details.

---
## <a name="gnssstreamer">GNSSStreamer and gnssstreamer CLI (*formerly gnssdump*)</a>

```
class pygnssutils.gnssstreamer.GNSSStreamer(**kwargs)
```

`gnssstreamer` (*formerly `gnssdump`*) is a command line utility for concurrent bidirectional communication with a GNSS datastream - typically a GNSS receiver. It supports NMEA, UBX, SBF, RTCM3, SPARTN, NTRIP and MQTT protocols.

**NB:** Currently, `gnsssstreamer` can parse data streams containing *either* UBX *or* SBF messages, but not both at the same time. If both are included in `protfilter`, UBX will take precedence over SBF.
`gnssstreamer` (*formerly `gnssdump`*) is a command line utility for concurrent bidirectional communication with a GNSS datastream - typically a GNSS receiver. It supports NMEA, UBX, SBF, QGC, RTCM3, SPARTN, NTRIP and MQTT protocols - individual protocols can be filtered via the `protfilter` arguments.

- The CLI utility can acquire data from any one of the following sources:
- `port`: serial port e.g. `COM3` or `/dev/ttyACM1` (can specify `--baudrate` and `--timeout`)
Expand Down
10 changes: 7 additions & 3 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
# pygnssutils

### RELEASE 1.1.17
### RELEASE 1.1.18

CHANGES:
ENHANCEMENTS:

1. Add support for Quectel QGC protocol.

### RELEASE 1.1.17

1. Min pyubx2 ver updated to 1.2.58 - incorporates several minor fixes and additional support for proprietary Quectel NMEA message definitions.
1. Update minimum versions of pyubx2 and pynmeagps to cater for various fixes and new message types.

### RELEASE 1.1.16

Expand Down
8 changes: 8 additions & 0 deletions docs/pygnssutils.rst
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,14 @@ pygnssutils.gnssntripclient\_cli module
:undoc-members:
:show-inheritance:

pygnssutils.gnssreader module
-----------------------------

.. automodule:: pygnssutils.gnssreader
:members:
:undoc-members:
:show-inheritance:

pygnssutils.gnssserver module
-----------------------------

Expand Down
10 changes: 5 additions & 5 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ description = "GNSS Command Line Utilities"
license = "BSD-3-Clause"
license-files = ["LICENSE"]
readme = "README.md"
requires-python = ">=3.9"
requires-python = ">=3.10"
classifiers = [
"Operating System :: OS Independent",
"Development Status :: 5 - Production/Stable",
Expand All @@ -23,7 +23,6 @@ classifiers = [
"Intended Audience :: Science/Research",
"Intended Audience :: End Users/Desktop",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
Expand All @@ -42,6 +41,7 @@ dependencies = [
"pyubx2>=1.2.58",
"pysbf2>=1.0.0",
"pyubxutils>=1.0.3",
"pyqgc>=0.1.1",
]

[project.scripts]
Expand Down Expand Up @@ -83,10 +83,10 @@ deploy = [{ include-group = "build" }, { include-group = "test" }]
version = { attr = "pygnssutils._version.__version__" }

[tool.black]
target-version = ['py39']
target-version = ['py310']

[tool.isort]
py_version = 39
py_version = 310
profile = "black"

[tool.bandit]
Expand All @@ -103,7 +103,7 @@ skips = [
jobs = 0
recursive = "y"
reports = "y"
py-version = "3.9"
py-version = "3.10"
fail-under = "9.8"
fail-on = "E,F"
clear-cache-post-run = "y"
Expand Down
2 changes: 1 addition & 1 deletion src/pygnssutils/_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@
:license: BSD 3-Clause
"""

__version__ = "1.1.17"
__version__ = "1.1.18"
Loading