Skip to content

Commit

Permalink
Merge pull request #132 from semuconsulting/RELEASE-CANDIDATE-1.4.16
Browse files Browse the repository at this point in the history
Release candidate 1.4.16
  • Loading branch information
semuadmin committed May 1, 2024
2 parents dc7abd2 + 5875150 commit 8aba22b
Show file tree
Hide file tree
Showing 10 changed files with 45 additions and 19 deletions.
3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
"python.testing.pytestEnabled": true,
"python.testing.unittestEnabled": false,
"editor.formatOnSave": true,
"python3.8InterpreterPath": "/Library/Frameworks/Python.framework/Versions/3.8/bin/python3.8",
"modulename": "pygpsclient",
"distname": "pygpsclient",
"moduleversion": "1.4.15",
"moduleversion": "1.4.16",
}
10 changes: 10 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,16 @@
],
"problemMatcher": []
},
{
"label": "Test3.8",
"type": "process",
"command": "${config:python3.8InterpreterPath}",
"args": [
"-m",
"pytest",
],
"problemMatcher": []
},
{
"label": "Sphinx",
"type": "process",
Expand Down
6 changes: 6 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# PyGPSClient Release Notes

### RELEASE 1.4.16

FIXES:

1. Fix handling of encrypted SPARTN payloads from MQTT or NTRIP sources.

### RELEASE 1.4.15

ENHANCEMENTS:
Expand Down
2 changes: 0 additions & 2 deletions pygpsclient.json
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,6 @@
"lbandclientoutport_s": "Passthrough",
"lbandclientdebug_b": 0,
"spartndecode_b": 0,
"spartnkey_s": "0123456789abcdef0123456789abcdef",
"spartnbasedate_s": "2024-03-21 09:57:26.786148",
"colortags_l": [
[
"ACK-ACK",
Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ name = "pygpsclient"
authors = [{ name = "semuadmin", email = "semuadmin@semuconsulting.com" }]
maintainers = [{ name = "semuadmin", email = "semuadmin@semuconsulting.com" }]
description = "GNSS Diagnostic and UBX Configuration GUI Application"
version = "1.4.15"
version = "1.4.16"
license = { file = "LICENSE" }
keywords = [
"PyGPSClient",
Expand Down Expand Up @@ -52,7 +52,7 @@ classifiers = [
dependencies = [
"requests>=2.28.0",
"Pillow>=9.0.0",
"pygnssutils>=1.0.25",
"pygnssutils>=1.0.26",
"pyserial>=3.5",
]

Expand Down
6 changes: 6 additions & 0 deletions src/pygpsclient/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,12 @@ def main():
help="NTRIP Caster authentication password",
default=getenv("NTRIPCASTER_PASSWORD", DEFAULT_PASSWORD),
)
arp.add_argument(
"--spartnkey",
required=False,
help="SPARTN message decryption key",
default=getenv("MQTTKEY", ""),
)

kwargs = vars(arp.parse_args())

Expand Down
2 changes: 1 addition & 1 deletion src/pygpsclient/_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@
:license: BSD 3-Clause
"""

__version__ = "1.4.15"
__version__ = "1.4.16"
21 changes: 15 additions & 6 deletions src/pygpsclient/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

# pylint: disable=too-many-ancestors, no-member

from datetime import datetime, timedelta
from datetime import datetime, timedelta, timezone
from os import getenv, path
from pathlib import Path
from queue import Empty, Queue
Expand All @@ -34,7 +34,7 @@
from pygnssutils.socket_server import ClientHandler, SocketServer
from pynmeagps import NMEAMessage
from pyrtcm import RTCMMessage
from pyspartn import SPARTNMessage
from pyspartn import SPARTNMessage, date2timetag
from pyubx2 import NMEA_PROTOCOL, POLL, RTCM3_PROTOCOL, UBX_PROTOCOL, UBXMessage
from serial import SerialException, SerialTimeoutException

Expand Down Expand Up @@ -147,6 +147,7 @@ def __init__(self, master, *args, **kwargs): # pylint: disable=too-many-stateme
mqttclientmode = int(
kwargs.pop("mqttclientmode", getenv("MQTTCLIENTMODE", "0"))
)
spartnkey = kwargs.pop("spartnkey", getenv("MQTTKEY", ""))
ntripcaster_user = kwargs.pop(
"ntripcasteruser", getenv("NTRIPCASTER_USER", DEFAULT_USER)
)
Expand Down Expand Up @@ -208,6 +209,8 @@ def __init__(self, master, *args, **kwargs): # pylint: disable=too-many-stateme
self.saved_config["mqapikey_s"] = mqapikey
if mqttclientid != "":
self.saved_config["mqttclientid_s"] = mqttclientid
if spartnkey != "":
self.saved_config["spartnkey_s"] = spartnkey
if mqttclientregion != DEFAULT_REGION:
self.saved_config["mqttclientregion_s"] = mqttclientregion
if mqttclientmode != 0:
Expand Down Expand Up @@ -551,10 +554,13 @@ def update_NTRIP_handler(self):
ntripsettings["refsep"] = self.saved_config.get("ntripclientrefsep_f", 0.0)
ntripsettings["spartndecode"] = self.saved_config.get("spartndecode_b", 0)
ntripsettings["spartnkey"] = self.saved_config.get(
"spartnkey_s", "0123456789abcdef"
"spartnkey_s", getenv("MQTTKEY", "")
)
if ntripsettings["spartnkey"] == "":
ntripsettings["spartndecode"] = 0
# if basedate is provided in config file, it must be an integer gnssTimetag
ntripsettings["spartnbasedate"] = self.saved_config.get(
"spartnbasedate_s", str(datetime.now())
"spartnbasedate_i", date2timetag(datetime.now(timezone.utc))
)
self.ntrip_handler.settings = ntripsettings

Expand Down Expand Up @@ -597,10 +603,13 @@ def update_SPARTN_handler(self):
spartnsettings["output"] = self.spartn_inqueue
spartnsettings["spartndecode"] = self.saved_config.get("spartndecode_b", 0)
spartnsettings["spartnkey"] = self.saved_config.get(
"spartnkey_s", "0123456789abcdef"
"spartnkey_s", getenv("MQTTKEY", "")
)
if spartnsettings["spartnkey"] == "":
spartnsettings["spartndecode"] = 0
# if basedate is provided in config file, it must be an integer gnssTimetag
spartnsettings["spartnbasedate"] = self.saved_config.get(
"spartnbasedate_s", str(datetime.now())[:10]
"spartnbasedate_i", date2timetag(datetime.now(timezone.utc))
)
self.spartn_handler.settings = spartnsettings

Expand Down
8 changes: 1 addition & 7 deletions src/pygpsclient/settings_frame.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@

# pylint: disable=unnecessary-lambda

from datetime import datetime
from socket import AF_INET6
from tkinter import (
ALL,
Expand Down Expand Up @@ -901,12 +900,7 @@ def config(self) -> dict:
),
# Manually edited config settings
"spartndecode_b": self.__app.saved_config.get("spartndecode_b", 0),
"spartnkey_s": self.__app.saved_config.get(
"spartnkey_s", "0123456789abcdef"
),
"spartnbasedate_s": self.__app.saved_config.get(
"spartnbasedate_s", str(datetime.now())
),
"spartnkey_s": self.__app.saved_config.get("spartnkey_s", ""),
"mapupdateinterval_n": self.__app.saved_config.get(
"mapupdateinterval_n", MAP_UPDATE_INTERVAL
),
Expand Down
2 changes: 2 additions & 0 deletions src/pygpsclient/spartn_gnss_frame.py
Original file line number Diff line number Diff line change
Expand Up @@ -478,6 +478,8 @@ def update_status(self, msg: UBXMessage):
self._spartn_valdate1.set(keydata[0][1].strftime("%Y%m%d"))
self._spartn_key2.set(keydata[1][0])
self._spartn_valdate2.set(keydata[1][1].strftime("%Y%m%d"))
# save latest key in configuration settings
self.__app.saved_config["spartnkey_s"] = self._spartn_key1.get()
col = "green"
else:
col = "red"
Expand Down

0 comments on commit 8aba22b

Please sign in to comment.