Skip to content

Commit

Permalink
Merge pull request #143 from semuconsulting/RC-1.4.20
Browse files Browse the repository at this point in the history
Rc 1.4.20
semuadmin authored Aug 12, 2024
2 parents 5820aeb + ca4c912 commit 35c4b8e
Showing 13 changed files with 59 additions and 50 deletions.
2 changes: 1 addition & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -5,5 +5,5 @@
"python3.8InterpreterPath": "/Library/Frameworks/Python.framework/Versions/3.8/bin/python3.8",
"modulename": "pygpsclient",
"distname": "pygpsclient",
"moduleversion": "1.4.19",
"moduleversion": "1.4.20",
}
4 changes: 2 additions & 2 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -26,9 +26,9 @@
"args": [
"-m",
"pygpsclient",
"--ntripuser",
"--ntripcasteruser",
"semuadmin",
"--ntrippassword",
"--ntripcasterpassword",
"testpassword"
],
"options": {
12 changes: 12 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
# PyGPSClient Release Notes

### RELEASE 1.4.20

FIXES:

1. Fixes typo in ubx_handler which affects NAV2-STATUS messages [#142](https://github.com/semuconsulting/PyGPSClient/issues/142)

CHANGES:

1. Minor improvements to settings frame appearance.
1. Add support for logging in underlying `pygnssutils` utilities (`gnssntripclient`, `gnssmqttclient`, `gnssserver`)
1. App `get_coordinates()` method now returns additional live gnss status information as dict.

### RELEASE 1.4.19

CHANGES:
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -7,7 +7,7 @@ name = "pygpsclient"
authors = [{ name = "semuadmin", email = "[email protected]" }]
maintainers = [{ name = "semuadmin", email = "[email protected]" }]
description = "GNSS Diagnostic and UBX Configuration GUI Application"
version = "1.4.19"
version = "1.4.20"
license = { file = "LICENSE" }
keywords = [
"PyGPSClient",
12 changes: 7 additions & 5 deletions src/pygpsclient/__main__.py
Original file line number Diff line number Diff line change
@@ -8,9 +8,9 @@
:license: BSD 3-Clause
"""

import logging
import sys
from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser
from logging import getLogger
from os import getenv
from tkinter import Tk

@@ -137,10 +137,12 @@ def main():
kwargs = vars(ap.parse_args())

# set up global logging configuration
logger = logging.getLogger(APPNAME)
set_logging(
logger, kwargs.get("verbosity", VERBOSITY_CRITICAL), kwargs.get("logtofile", "")
)
verbosity = int(kwargs.pop("verbosity", VERBOSITY_CRITICAL))
logtofile = kwargs.pop("logtofile", "")
logger = getLogger(APPNAME) # "pygpsclient"
logger_utils = getLogger("pygnssutils")
for logr in (logger, logger_utils):
set_logging(logr, verbosity, logtofile)

root = Tk()
App(root, **kwargs)
2 changes: 1 addition & 1 deletion src/pygpsclient/_version.py
Original file line number Diff line number Diff line change
@@ -8,4 +8,4 @@
:license: BSD 3-Clause
"""

__version__ = "1.4.19"
__version__ = "1.4.20"
45 changes: 19 additions & 26 deletions src/pygpsclient/app.py
Original file line number Diff line number Diff line change
@@ -40,7 +40,7 @@
from threading import Thread
from tkinter import E, Frame, N, PhotoImage, S, TclError, Tk, Toplevel, W, font

from pygnssutils import VERBOSITY_CRITICAL, GNSSMQTTClient, GNSSNTRIPClient, MQTTMessage
from pygnssutils import GNSSMQTTClient, GNSSNTRIPClient, MQTTMessage
from pygnssutils.socket_server import ClientHandler, SocketServer
from pynmeagps import NMEAMessage
from pyrtcm import RTCMMessage
@@ -143,8 +143,6 @@ def __init__(self, master, *args, **kwargs): # pylint: disable=too-many-stateme
self.__master = master
self.logger = logging.getLogger(__name__)
# self.logger.setLevel(logging.DEBUG)
self.verbosity = kwargs.pop("verbosity", VERBOSITY_CRITICAL)
self.logtofile = kwargs.pop("logtofile", "")

# user-defined serial port can be passed as environment variable
# or command line keyword argument
@@ -195,16 +193,8 @@ def __init__(self, master, *args, **kwargs): # pylint: disable=too-many-stateme
self.nmea_handler = NMEAHandler(self)
self.ubx_handler = UBXHandler(self)
self.rtcm_handler = RTCM3Handler(self)
self.ntrip_handler = GNSSNTRIPClient(
self,
verbosity=self.verbosity,
logtofile=self.logtofile,
)
self.spartn_handler = GNSSMQTTClient(
self,
verbosity=self.verbosity,
logtofile=self.logtofile,
)
self.ntrip_handler = GNSSNTRIPClient(self)
self.spartn_handler = GNSSMQTTClient(self)
self._conn_status = DISCONNECTED
self._rtk_conn_status = DISCONNECTED
self._socket_thread = None
@@ -752,8 +742,6 @@ def _sockserver_thread(
ClientHandler,
ntripuser=ntripuser,
ntrippassword=ntrippassword,
verbosity=self.verbosity,
logtofile=self.logtofile,
) as self._socket_server:
self._socket_server.serve_forever()
except OSError as err:
@@ -910,21 +898,26 @@ def update_ntrip_status(self, status: bool, msgt: tuple = None):
if self.dialog(DLGTNTRIP) is not None:
self.dialog(DLGTNTRIP).set_controls(status, msgt)

def get_coordinates(self) -> tuple:
def get_coordinates(self) -> dict:
"""
Get current coordinates.
Get current coordinates and fix data.
:return: tuple (conn_status, lat, lon, alt, sep)
:rtype: tuple
:return: dict of coords and fix data
:rtype: dict
"""

return (
self._conn_status,
self.gnss_status.lat,
self.gnss_status.lon,
self.gnss_status.alt,
self.gnss_status.sep,
)
return {
"connection": self._conn_status,
"lat": self.gnss_status.lat,
"lon": self.gnss_status.lon,
"alt": self.gnss_status.alt,
"sep": self.gnss_status.sep,
"sip": self.gnss_status.sip,
"fix": self.gnss_status.fix,
"hdop": self.gnss_status.hdop,
"diffage": self.gnss_status.diff_age,
"diffstation": self.gnss_status.diff_station,
}

def process_data(self, raw_data: bytes, parsed_data: object, marker: str = ""):
"""
2 changes: 1 addition & 1 deletion src/pygpsclient/helpers.py
Original file line number Diff line number Diff line change
@@ -931,7 +931,7 @@ def adjust_dimensions(dim: int) -> int:
if system() == "Windows":
return int(dim * 0.95)
if system() == "Darwin":
return int(dim * 0.9)
return int(dim * 0.93)
return int(dim)


2 changes: 1 addition & 1 deletion src/pygpsclient/ntrip_client_dialog.py
Original file line number Diff line number Diff line change
@@ -735,7 +735,7 @@ def _get_coordinates(self) -> tuple:

try:
if self._settings.get("ggamode", 0) == 0: # live position
_, lat, lon, _, _ = self.__app.get_coordinates()
_, lat, lon, _, _, _, _, _, _, _ = self.__app.get_coordinates()
else: # fixed reference
lat = float(self._settings["reflat"])
lon = float(self._settings["reflon"])
12 changes: 6 additions & 6 deletions src/pygpsclient/serialconfig_frame.py
Original file line number Diff line number Diff line change
@@ -141,7 +141,7 @@ def _body(self):
self._frm_basic,
border=2,
relief="sunken",
width=32,
width=38,
height=5,
justify=LEFT,
exportselection=False,
@@ -255,14 +255,14 @@ def _do_layout(self):
self._frm_basic.grid(column=0, row=0, columnspan=4, sticky=(W, E))
self._lbl_port.grid(column=0, row=0, sticky=W)
self._lbx_port.grid(
column=1, row=0, columnspan=2, sticky=(W, E), padx=3, pady=2
column=1, row=0, columnspan=3, sticky=(W, E), padx=3, pady=2
)
self._scr_portv.grid(column=3, row=0, sticky=(N, S))
self._scr_porth.grid(column=1, row=1, columnspan=2, sticky=(E, W))
self._scr_portv.grid(column=4, row=0, sticky=(N, S))
self._scr_porth.grid(column=1, row=1, columnspan=3, sticky=(E, W))
self._lbl_bpsrate.grid(column=0, row=2, sticky=W)
self._spn_bpsrate.grid(column=1, row=2, sticky=W, padx=3, pady=2)
self._btn_refresh.grid(column=2, row=2, sticky=E)
self._btn_toggle.grid(column=3, row=2, sticky=E)
self._btn_refresh.grid(column=3, row=2, sticky=E)
self._btn_toggle.grid(column=4, row=2, sticky=E)

self._frm_advanced.grid_forget()
self._lbl_databits.grid(column=0, row=0, sticky=W)
10 changes: 6 additions & 4 deletions src/pygpsclient/serverconfig_frame.py
Original file line number Diff line number Diff line change
@@ -233,6 +233,7 @@ def _body(self):
image=self._img_expand,
width=28,
height=22,
state=DISABLED,
)
self._frm_advanced = Frame(self)
self._lbl_user = Label(
@@ -367,7 +368,7 @@ def _do_layout(self):
self._lbl_lanip.grid(column=1, row=4, padx=2, pady=1, sticky=W)
self._lbl_clients.grid(column=2, row=3, rowspan=2, padx=2, pady=1, sticky=W)
self._lbl_sockclients.grid(column=3, row=3, rowspan=2, padx=2, pady=1, sticky=W)
self._btn_toggle.grid_forget()
self._btn_toggle.grid(column=4, row=0, sticky=E)
self._frm_advanced.grid_forget()
self._chk_set_basemode.grid(
column=0, row=0, columnspan=2, padx=2, pady=2, sticky=W
@@ -538,11 +539,11 @@ def _on_sockmode(self, var, index, mode):

if self.sock_mode.get() == SOCK_NTRIP:
self.sock_port.set(SOCKSERVER_NTRIP_PORT)
self._btn_toggle.grid(column=4, row=0, sticky=E)
self._btn_toggle.config(state=NORMAL)
self._show_advanced = True
else:
self.sock_port.set(self._sock_port_temp)
self._btn_toggle.grid_forget()
self._btn_toggle.config(state=DISABLED)
self._show_advanced = False
self._set_advanced()

@@ -652,7 +653,8 @@ def _set_coords(self, posmode: str):
lon = self._fixed_lon_temp
alt = self._fixed_alt_temp
if lat in ("", "0", 0) and lon in ("", "0", 0) and alt in ("", "0", 0):
_, lat, lon, alt, _ = self.__app.get_coordinates() # live position
# live position
_, lat, lon, alt, _, _, _, _, _, _ = self.__app.get_coordinates()

try:
if posmode == POS_ECEF:
2 changes: 1 addition & 1 deletion src/pygpsclient/settings_frame.py
Original file line number Diff line number Diff line change
@@ -116,7 +116,7 @@
MAXLINES = ("200", "500", "1000", "2000", "100")
MAPTYPES = ("world", "map", "sat", "custom")
MINHEIGHT = 750
MINWIDTH = 365
MINWIDTH = 390


class SettingsFrame(Frame):
2 changes: 1 addition & 1 deletion src/pygpsclient/ubx_handler.py
Original file line number Diff line number Diff line change
@@ -75,7 +75,7 @@ def process_data(self, raw_data: bytes, parsed_data: object):
self._process_NAV_VELNED(parsed_data)
elif parsed_data.identity in ("NAV-SAT", "NAV2-SAT"):
self._process_NAV_SAT(parsed_data)
elif parsed_data.identity in ("NAV-STATUS", "NAV2-STATUS)"):
elif parsed_data.identity in ("NAV-STATUS", "NAV2-STATUS"):
self._process_NAV_STATUS(parsed_data)
elif parsed_data.identity == "NAV-SVIN":
self._process_NAV_SVIN(parsed_data)

0 comments on commit 35c4b8e

Please sign in to comment.