-From d0730c0d643738ac683d1b5c19b117893e3b2049 Mon Sep 17 00:00:00 2001
+From b217a746ef7b92291320e4c1a66b52df0318495f Mon Sep 17 00:00:00 2001
From: Scott Murray <scott.murray@konsulko.com>
-Date: Tue, 11 Oct 2022 15:28:07 -0400
-Subject: [PATCH 2/2] 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
Upstream-Status: pending
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
---
- dbc2val/dbcfeeder.py | 21 +++++++++++++++------
- dbc2val/dbcreader.py | 12 ++++++++----
- 2 files changed, 23 insertions(+), 10 deletions(-)
+ dbc2val/dbcfeeder.py | 15 +++++++++++++--
+ 1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/dbc2val/dbcfeeder.py b/dbc2val/dbcfeeder.py
-index 7daaa2b..33c2212 100755
+index 966dba7..e7fd319 100755
--- a/dbc2val/dbcfeeder.py
+++ b/dbc2val/dbcfeeder.py
-@@ -93,6 +93,7 @@ class Feeder:
- self._connected = False
- self._registered = False
- self._can_queue = queue.Queue()
-+ self.kuksa = None
+@@ -188,7 +188,11 @@ class Feeder:
- def start(
- self,
-@@ -134,7 +135,11 @@ class Feeder:
- else:
- # use socketCAN
- log.info("Using socket CAN device '%s'", canport)
-- self._reader.start_listening(bustype="socketcan", channel=canport)
+ # use socketCAN
+ log.info("Using socket CAN device '%s'", canport)
+ try:
-+ self._reader.start_listening(bustype="socketcan", channel=canport)
+ self._reader.start_listening(bustype="socketcan", channel=canport)
+ except:
+ log.error("Could not open {}, exiting".format(canport))
+ sys.exit(-1)
-
- # databroker related
- if USE_CASE=="databroker":
-@@ -151,6 +156,8 @@ class Feeder:
- log.info("Shutting down...")
- self._shutdown = True
- # Tell others to stop
-+ if USE_CASE=="kuksa" and self.kuksa is not None:
-+ self.kuksa.stop()
- if self._reader is not None:
- self._reader.stop()
- if self._player is not None:
-@@ -204,9 +211,10 @@ class Feeder:
- # kuksa related
- if USE_CASE=="kuksa":
- global kuksaconfig
-- kuksa = KuksaClientThread(kuksaconfig)
-- kuksa.start()
-- kuksa.authorize()
-+ self.kuksa = KuksaClientThread(kuksaconfig)
-+ self.kuksa.start()
-+ if "token" in kuksaconfig:
-+ self.kuksa.authorize(kuksaconfig["token"])
-
- while self._shutdown is False:
- # databroker related
-@@ -255,7 +263,7 @@ class Feeder:
- self._provider.update_datapoint(target, value)
- # kuksa related
- elif USE_CASE=="kuksa":
-- resp=json.loads(kuksa.setValue(target, str(value)))
-+ resp=json.loads(self.kuksa.setValue(target, str(value)))
- if "error" in resp:
- if "message" in resp["error"]:
- log.error("Error setting {}: {}".format(target, resp["error"]["message"]))
-@@ -282,8 +290,9 @@ def parse_config(filename):
+
+ 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",
]
- configfile = None
-diff --git a/dbc2val/dbcreader.py b/dbc2val/dbcreader.py
-index 2500832..b537a4d 100644
---- a/dbc2val/dbcreader.py
-+++ b/dbc2val/dbcreader.py
-@@ -54,8 +54,8 @@ class DBCReader:
- Bitrate in bit/s.
- """
- self.bus = can.interface.Bus(*args, **kwargs)
-- rxThread = threading.Thread(target=self.rxWorker)
-- rxThread.start()
-+ self.rxThread = threading.Thread(target=self.rxWorker)
-+ self.rxThread.start()
-
- def get_whitelist(self):
- log.info("Collecting signals, generating CAN ID whitelist")
-@@ -83,7 +83,10 @@ class DBCReader:
- def rxWorker(self):
- log.info("Starting Rx thread")
- while self.run:
-- msg = self.bus.recv(timeout=1)
-+ try:
-+ msg = self.bus.recv(timeout=1)
-+ except Exception:
-+ break
- if msg and msg.arbitration_id in self.canidwl:
- try:
- decode = self.db.decode_message(msg.arbitration_id, msg.data)
-@@ -105,4 +108,5 @@ class DBCReader:
+ 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 = ""
- def stop(self):
- self.run = False
--
-+ self.bus.shutdown()
-+ self.rxThread.join()
+ if args.dbc2val:
+ use_dbc2val = True
--
-2.37.3
+2.41.0