From 1b70614024f2e14b44b2d069e1c20c3ff67e128f Mon Sep 17 00:00:00 2001 From: semuadmin <28569967+semuadmin@users.noreply.github.com> Date: Mon, 18 Nov 2024 21:20:58 +0000 Subject: [PATCH] update CLI default args --- src/pygnssutils/gnssmqttclient.py | 23 ++++++++++++++--------- src/pygnssutils/gnssmqttclient_cli.py | 13 ++++++++++--- src/pygnssutils/gnssntripclient.py | 7 ++++++- 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/pygnssutils/gnssmqttclient.py b/src/pygnssutils/gnssmqttclient.py index ec40aee..8476404 100644 --- a/src/pygnssutils/gnssmqttclient.py +++ b/src/pygnssutils/gnssmqttclient.py @@ -30,7 +30,6 @@ # pylint: disable=invalid-name import socket -from datetime import datetime, timezone from io import BufferedWriter, BytesIO, TextIOWrapper from logging import getLogger from os import getenv, path @@ -42,6 +41,7 @@ import paho.mqtt.client as mqtt from paho.mqtt import __version__ as PAHO_MQTT_VERSION from pyspartn import ( + ERRLOG, SPARTNDecryptionError, SPARTNMessageError, SPARTNParseError, @@ -63,7 +63,9 @@ TOPIC_DATA, TOPIC_FREQ, TOPIC_KEY, + VERBOSITY_MEDIUM, ) +from pygnssutils.helpers import set_logging from pygnssutils.mqttmessage import MQTTMessage TIMEOUT = 8 @@ -86,7 +88,10 @@ def __init__(self, app=None, **kwargs): self.__app = app # Reference to calling application class (if applicable) # configure logger with name "pygnssutils" in calling module + verbosity = int(kwargs.pop("verbosity", VERBOSITY_MEDIUM)) + logtofile = kwargs.pop("logtofile", "") self.logger = getLogger(__name__) + set_logging(getLogger("pyspartn"), verbosity, logtofile) self._validargs = True clientid = getenv(ENV_MQTT_CLIENTID, default="enter-client-id") @@ -109,7 +114,7 @@ def __init__(self, app=None, **kwargs): ), "spartndecode": 0, "spartnkey": getenv(ENV_MQTT_KEY, default=None), - "spartnbasedate": datetime.now(timezone.utc), + "spartnbasedate": None, "output": None, } @@ -423,6 +428,7 @@ def do_write(raw: bytes, parsed: object): key=userdata["key"], basedate=userdata["basedate"], timetags=_global_timetags, + quitonerror=ERRLOG, ) try: for raw, parsed in spr: @@ -432,14 +438,13 @@ def do_write(raw: bytes, parsed: object): SPARTNMessageError, SPARTNParseError, SPARTNStreamError, - ): - parsed = f"MQTT SPARTNParseError {msg.topic} {msg.payload}" + ) as err: + msglogger.error(err) + parsed = f"{msg.topic} {err}" do_write(msg.payload, parsed) - except SPARTNDecryptionError: - parsed = ( - f"MQTT SPARTNDecryptionError - check decryption key and basedate" - f" {msg.topic} {msg.payload}" - ) + except SPARTNDecryptionError as err: + msglogger.error(err) + parsed = f"{msg.topic} {err}" do_write(msg.payload, parsed) @staticmethod diff --git a/src/pygnssutils/gnssmqttclient_cli.py b/src/pygnssutils/gnssmqttclient_cli.py index 6fd7859..e8e4a58 100644 --- a/src/pygnssutils/gnssmqttclient_cli.py +++ b/src/pygnssutils/gnssmqttclient_cli.py @@ -11,7 +11,6 @@ """ from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser -from datetime import datetime, timezone from os import getenv, path from pathlib import Path from queue import Queue @@ -167,8 +166,13 @@ def main(): ap.add_argument( "--spartnbasedate", required=False, - help="Decryption basedate for encrypted payloads", - default=datetime.now(timezone.utc), + help=( + "Decryption basedate for encrypted payloads (-1 = current datetime, " + "0 = use timetags from data stream, " + "other integer = 32-bit gnssTimeTag value)" + ), + type=int, + default=-1, ) ap.add_argument( "--waittime", @@ -211,6 +215,9 @@ def main(): ) kwargs = set_common_args("gnssmqttclient", ap) + if kwargs.get("spartnbasedate", 0) == -1: + kwargs["spartnbasedate"] = None # will default to current datetime in pyspartn + kwargs["errevent"] = Event() cliout = int(kwargs.pop("clioutput", OUTPUT_NONE)) try: diff --git a/src/pygnssutils/gnssntripclient.py b/src/pygnssutils/gnssntripclient.py index 9324160..796fc7d 100644 --- a/src/pygnssutils/gnssntripclient.py +++ b/src/pygnssutils/gnssntripclient.py @@ -63,8 +63,9 @@ NTRIP2, NTRIP_EVENT, OUTPORT_NTRIP, + VERBOSITY_MEDIUM, ) -from pygnssutils.helpers import find_mp_distance, ipprot2int +from pygnssutils.helpers import find_mp_distance, ipprot2int, set_logging from pygnssutils.socketwrapper import SocketWrapper TIMEOUT = 3 @@ -100,7 +101,11 @@ def __init__( self.__app = app # Reference to calling application class (if applicable) # configure logger with name "pygnssutils" in calling module + self.verbosity = int(kwargs.pop("verbosity", VERBOSITY_MEDIUM)) + self.logtofile = kwargs.pop("logtofile", "") self.logger = getLogger(__name__) + for module in ("pyrtcm", "pyspartn"): + set_logging(getLogger(module), self.verbosity, self.logtofile) self._ntripqueue = Queue() # initialise and persist settings to allow any calling app to retrieve them self._settings = {}