1 From d0730c0d643738ac683d1b5c19b117893e3b2049 Mon Sep 17 00:00:00 2001
2 From: Scott Murray <scott.murray@konsulko.com>
3 Date: Tue, 11 Oct 2022 15:28:07 -0400
4 Subject: [PATCH 2/2] dbc2val: usability improvements
7 - Tweaked default configuration file search path to better match
8 Linux FHS and kuksa-val-server. First look for a config.ini in
9 /etc/kuksa-dbc-feeder, then /etc/dbc_feeder.ini.
10 - Add catching of exceptions around CAN device opening so that the
11 script can exit cleanly with an error message if the device is
13 - Fixed shutdown behavior with some tweaks to actually stop the
14 reader and KUKSA.val client library threads. This makes the
15 script actually exit on SIGTERM as opposed to hanging.
17 Upstream-Status: pending
19 Signed-off-by: Scott Murray <scott.murray@konsulko.com>
21 dbc2val/dbcfeeder.py | 21 +++++++++++++++------
22 dbc2val/dbcreader.py | 12 ++++++++----
23 2 files changed, 23 insertions(+), 10 deletions(-)
25 diff --git a/dbc2val/dbcfeeder.py b/dbc2val/dbcfeeder.py
26 index 7daaa2b..33c2212 100755
27 --- a/dbc2val/dbcfeeder.py
28 +++ b/dbc2val/dbcfeeder.py
29 @@ -93,6 +93,7 @@ class Feeder:
30 self._connected = False
31 self._registered = False
32 self._can_queue = queue.Queue()
37 @@ -134,7 +135,11 @@ class Feeder:
40 log.info("Using socket CAN device '%s'", canport)
41 - self._reader.start_listening(bustype="socketcan", channel=canport)
43 + self._reader.start_listening(bustype="socketcan", channel=canport)
45 + log.error("Could not open {}, exiting".format(canport))
49 if USE_CASE=="databroker":
50 @@ -151,6 +156,8 @@ class Feeder:
51 log.info("Shutting down...")
54 + if USE_CASE=="kuksa" and self.kuksa is not None:
56 if self._reader is not None:
58 if self._player is not None:
59 @@ -204,9 +211,10 @@ class Feeder:
63 - kuksa = KuksaClientThread(kuksaconfig)
66 + self.kuksa = KuksaClientThread(kuksaconfig)
68 + if "token" in kuksaconfig:
69 + self.kuksa.authorize(kuksaconfig["token"])
71 while self._shutdown is False:
73 @@ -255,7 +263,7 @@ class Feeder:
74 self._provider.update_datapoint(target, value)
76 elif USE_CASE=="kuksa":
77 - resp=json.loads(kuksa.setValue(target, str(value)))
78 + resp=json.loads(self.kuksa.setValue(target, str(value)))
80 if "message" in resp["error"]:
81 log.error("Error setting {}: {}".format(target, resp["error"]["message"]))
82 @@ -282,8 +290,9 @@ def parse_config(filename):
86 - "/config/dbc_feeder.ini",
87 + "/etc/kuksa-dbc-feeder/config.ini",
88 "/etc/dbc_feeder.ini",
89 + "/config/dbc_feeder.ini",
90 "config/dbc_feeder.ini",
93 diff --git a/dbc2val/dbcreader.py b/dbc2val/dbcreader.py
94 index 2500832..b537a4d 100644
95 --- a/dbc2val/dbcreader.py
96 +++ b/dbc2val/dbcreader.py
97 @@ -54,8 +54,8 @@ class DBCReader:
100 self.bus = can.interface.Bus(*args, **kwargs)
101 - rxThread = threading.Thread(target=self.rxWorker)
103 + self.rxThread = threading.Thread(target=self.rxWorker)
104 + self.rxThread.start()
106 def get_whitelist(self):
107 log.info("Collecting signals, generating CAN ID whitelist")
108 @@ -83,7 +83,10 @@ class DBCReader:
110 log.info("Starting Rx thread")
112 - msg = self.bus.recv(timeout=1)
114 + msg = self.bus.recv(timeout=1)
117 if msg and msg.arbitration_id in self.canidwl:
119 decode = self.db.decode_message(msg.arbitration_id, msg.data)
120 @@ -105,4 +108,5 @@ class DBCReader:
125 + self.bus.shutdown()
126 + self.rxThread.join()