diff --git a/.vscode/settings.json b/.vscode/settings.json index 4a46f3b..5d877a9 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,5 +5,5 @@ "python.defaultInterpreterPath": "python3", "modulename": "${workspaceFolderBasename}", "distname": "${workspaceFolderBasename}", - "moduleversion": "1.1.7" + "moduleversion": "1.1.8" } \ No newline at end of file diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 9b945b3..49b05b0 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,5 +1,11 @@ # pygnssutils Release Notes +### RELEASE 1.1.8 + +ENHANCEMENTS: + +1. gnssmqttclient updated to support `pyspartn>=1.0.5` (see [pyspartn Release Notes](https://github.com/semuconsulting/pyspartn/blob/main/RELEASE_NOTES.md) for new functionality). + ### RELEASE 1.1.7 ENHANCEMENTS: diff --git a/pyproject.toml b/pyproject.toml index 8e35ebd..7714397 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ name = "pygnssutils" authors = [{ name = "semuadmin", email = "semuadmin@semuconsulting.com" }] maintainers = [{ name = "semuadmin", email = "semuadmin@semuconsulting.com" }] description = "GNSS Command Line Utilities" -version = "1.1.7" +version = "1.1.8" license = { file = "LICENSE" } readme = "README.md" requires-python = ">=3.9" @@ -37,7 +37,7 @@ dependencies = [ "certifi>=2024.0.0", "paho-mqtt>=1.6.0", # waiting for >=2.0.0 in Conda "pyserial>=3.5", - "pyspartn>=1.0.4", + "pyspartn>=1.0.5", "pyubx2>=1.2.48", ] diff --git a/src/pygnssutils/_version.py b/src/pygnssutils/_version.py index ea5621a..349da3f 100644 --- a/src/pygnssutils/_version.py +++ b/src/pygnssutils/_version.py @@ -8,4 +8,4 @@ :license: BSD 3-Clause """ -__version__ = "1.1.7" +__version__ = "1.1.8" diff --git a/src/pygnssutils/gnssmqttclient.py b/src/pygnssutils/gnssmqttclient.py index 63a8dce..ec40aee 100644 --- a/src/pygnssutils/gnssmqttclient.py +++ b/src/pygnssutils/gnssmqttclient.py @@ -42,6 +42,7 @@ import paho.mqtt.client as mqtt from paho.mqtt import __version__ as PAHO_MQTT_VERSION from pyspartn import ( + SPARTNDecryptionError, SPARTNMessageError, SPARTNParseError, SPARTNReader, @@ -68,6 +69,8 @@ TIMEOUT = 8 DLGTSPARTN = "SPARTN Configuration" +_global_timetags = {} # for want of a better approach + class GNSSMQTTClient: """ @@ -368,6 +371,7 @@ def on_message(client, userdata, msg): # pylint: disable=unused-argument :param object msg: SPARTN or UBX message topic content """ + global _global_timetags output = userdata["output"] app = userdata["app"] msglogger = userdata["logger"] @@ -418,13 +422,25 @@ def do_write(raw: bytes, parsed: object): decode=userdata["decode"], key=userdata["key"], basedate=userdata["basedate"], + timetags=_global_timetags, ) try: for raw, parsed in spr: do_write(raw, parsed) - except (SPARTNMessageError, SPARTNParseError, SPARTNStreamError): + _global_timetags = spr.timetags + except ( + SPARTNMessageError, + SPARTNParseError, + SPARTNStreamError, + ): parsed = f"MQTT SPARTNParseError {msg.topic} {msg.payload}" do_write(msg.payload, parsed) + except SPARTNDecryptionError: + parsed = ( + f"MQTT SPARTNDecryptionError - check decryption key and basedate" + f" {msg.topic} {msg.payload}" + ) + do_write(msg.payload, parsed) @staticmethod def on_error(userdata: dict, err: object):