X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=recipes-connectivity%2Fkuksa-val%2Fkuksa-dbc-feeder%2F0002-dbc2val-usability-improvements.patch;h=31051b18cef19ba3981d822bf24e5c11aa4418b5;hb=175c760662f98551e83fb60a427baeff1c3f52af;hp=12e366aa800d8e6bd91ec7016ba8ce25932e421b;hpb=ca7d98904253c7404c3e6384ebb53d922a3c538a;p=AGL%2Fmeta-agl-demo.git diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0002-dbc2val-usability-improvements.patch b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0002-dbc2val-usability-improvements.patch index 12e366aa8..31051b18c 100644 --- a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0002-dbc2val-usability-improvements.patch +++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0002-dbc2val-usability-improvements.patch @@ -1,120 +1,76 @@ -From fe10a3645e77cd8122d3d312d317bedcb88bc683 Mon Sep 17 00:00:00 2001 +From b217a746ef7b92291320e4c1a66b52df0318495f Mon Sep 17 00:00:00 2001 From: Scott Murray -Date: Thu, 12 May 2022 17:39:56 +0200 -Subject: [PATCH] dbc2val: usability improvements +Date: Sat, 5 Aug 2023 13:58:16 -0400 +Subject: [PATCH 2/3] dbc2val: usability improvements Changes: - Tweaked default configuration file search path to better match Linux FHS and kuksa-val-server. First look for a config.ini in /etc/kuksa-dbc-feeder, then /etc/dbc_feeder.ini. -- Added a command-line option to specify configuration file, this - should allow running two instances against different interfaces. -- Added verbosity command-line option and made several messages - verbose mode only to avoid log spamming. -- Added '-u' option to python invocation to disable output buffering. - The intent is to make logging immediate, otherwise errors may not - get logged for some time (or at all). - Add catching of exceptions around CAN device opening so that the script can exit cleanly with an error message if the device is not available. +- Fixed shutdown behavior with some tweaks to actually stop the + reader and KUKSA.val client library threads. This makes the + script actually exit on SIGTERM as opposed to hanging. Upstream-Status: pending + Signed-off-by: Scott Murray + --- - kuksa_feeders/dbc2val/dbcfeeder.py | 40 ++++++++++++++++++++++-------- - 1 file changed, 29 insertions(+), 11 deletions(-) + dbc2val/dbcfeeder.py | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) -diff --git a/kuksa_feeders/dbc2val/dbcfeeder.py b/kuksa_feeders/dbc2val/dbcfeeder.py -index 56c316a..d2d70b9 100755 ---- a/kuksa_feeders/dbc2val/dbcfeeder.py -+++ b/kuksa_feeders/dbc2val/dbcfeeder.py -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env -S python -u +diff --git a/dbc2val/dbcfeeder.py b/dbc2val/dbcfeeder.py +index 966dba7..e7fd319 100755 +--- a/dbc2val/dbcfeeder.py ++++ b/dbc2val/dbcfeeder.py +@@ -188,7 +188,11 @@ class Feeder: - ######################################################################## - # Copyright (c) 2020 Robert Bosch GmbH -@@ -15,15 +15,21 @@ import os, sys, signal - import configparser - import queue - import json -+import argparse + # use socketCAN + log.info("Using socket CAN device '%s'", canport) ++ try: + self._reader.start_listening(bustype="socketcan", channel=canport) ++ except: ++ log.error("Could not open {}, exiting".format(canport)) ++ sys.exit(-1) - from dbc2val import dbc2vssmapper, dbcreader, j1939reader, elm2canbridge -- --scriptDir= os.path.dirname(os.path.realpath(__file__)) --sys.path.append(os.path.join(scriptDir, "../../")) - from kuksa_viss_client import KuksaClientThread - --print("kuksa.val DBC example feeder") --config_candidates=['/config/dbc_feeder.ini', '/etc/dbc_feeder.ini', os.path.join(scriptDir, 'config/dbc_feeder.ini')] -+parser = argparse.ArgumentParser("kuksa.val DBC example feeder") -+parser.add_argument("-c", "--config", dest="userconfig") -+parser.add_argument("-v", "--verbose", action="store_true") -+args = parser.parse_args() + receiver = threading.Thread(target=self._run_receiver) + receiver.start() +@@ -212,6 +216,11 @@ class Feeder: + threads.append(transmitter) + else: + log.info("No val2dbc mappings found or val2dbc disabled!!") + -+if args.verbose: -+ print("kuksa.val DBC example feeder") -+config_candidates=['/etc/kuksa-dbc-feeder/config.ini', '/etc/dbc_feeder.ini'] -+if args.userconfig is not None: -+ config_candidates.insert(0, args.userconfig) - configfile = None - for candidate in config_candidates: - if os.path.isfile(candidate): -@@ -54,10 +60,12 @@ cancfg = config['can'] - canport = cancfg['port'] - - if config["can"].getboolean("j1939", False): -- print("Use j1939 reader") -+ if args.verbose: -+ print("Use j1939 reader") - reader = j1939reader.J1939Reader(cancfg,canQueue,mapping) - else: -- print("Use dbc reader") -+ if args.verbose: -+ print("Use dbc reader") - reader = dbcreader.DBCReader(cancfg, canQueue,mapping) - - if canport == 'elmcan': -@@ -65,10 +73,18 @@ if canport == 'elmcan': - print("section {} missing from configuration, exiting".format(canport)) - sys.exit(-1) - -- print("Using elmcan. Trying to set up elm2can bridge") -+ if args.verbose: -+ print("Using elmcan. Trying to set up elm2can bridge") - elmbr=elm2canbridge.elm2canbridge(canport, config[canport], reader.canidwl) - --reader.start_listening() -+try: -+ reader.start_listening() -+except: -+ print("Could not open {}, exiting".format(canport)) -+ kuksa.stop() -+ reader.stop() -+ sys.exit(-1) ++ # Spin so signal handlers will work ++ while not self._shutdown: ++ time.sleep(0.1) + - running = True - - def terminationSignalreceived(signalNumber, frame): -@@ -77,6 +93,7 @@ def terminationSignalreceived(signalNumber, frame): - kuksa.stop() - reader.stop() - print("Received termination signal. Shutting down") -+ sys.exit(0) + # Wait for all of them to finish + for thread in threads: + thread.join() +@@ -363,8 +372,10 @@ def parse_config(filename): + configfile = filename + else: + config_candidates = [ +- "/config/dbc_feeder.ini", ++ "/etc/kuksa-dbc-feeder/config.ini", ++ "/etc/kuksa-dbc-feeder/dbc_feeder.ini", + "/etc/dbc_feeder.ini", ++ "/config/dbc_feeder.ini", + "config/dbc_feeder.ini", + ] + for candidate in config_candidates: +@@ -577,7 +588,7 @@ def main(argv): + elif "can" in config and "dbc_default_file" in config["can"]: + dbc_default = config["can"]["dbc_default_file"] + else: +- dbc_default = "dbc_default_values.json" ++ dbc_default = "" - signal.signal(signal.SIGINT, terminationSignalreceived) - signal.signal(signal.SIGQUIT, terminationSignalreceived) -@@ -88,7 +105,8 @@ while running: - for target in mapping[signal]['targets']: - tv=mapping.transform(signal,target,value) - if tv is not None: #none indicates the transform decided to not set the value -- print("Update VSS path {} to {} based on signal {}".format(target, tv, signal)) -+ if args.verbose: -+ print("Update VSS path {} to {} based on signal {}".format(target, tv, signal)) - resp=json.loads(kuksa.setValue(target, str(tv))) - if "error" in resp: - if "message" in resp["error"]: + if args.dbc2val: + use_dbc2val = True -- -2.35.1 +2.41.0