From b217a746ef7b92291320e4c1a66b52df0318495f Mon Sep 17 00:00:00 2001 From: Scott Murray 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. - 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 --- dbc2val/dbcfeeder.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) 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: # 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) 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!!") + + # Spin so signal handlers will work + while not self._shutdown: + time.sleep(0.1) + # 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 = "" if args.dbc2val: use_dbc2val = True -- 2.41.0