Add meta-agl-kuksa-val
[AGL/meta-agl.git] / meta-agl-kuksa-val / recipes-connectivity / kuksa-val / kuksa-can-provider / 0002-dbc2val-usability-improvements.patch
1 From 2e4e1f9147f1ebe5b545ae0cab41341e3abb00ae Mon Sep 17 00:00:00 2001
2 From: Scott Murray <scott.murray@konsulko.com>
3 Date: Sat, 15 Jun 2024 13:13:17 -0400
4 Subject: [PATCH 2/4] dbc2val: usability improvements
5
6 Changes:
7 - Tweaked default configuration file search path to better match
8   Linux FHS.  First look for a config.ini or dbc_feeder.ini in
9   /etc/kuksa-can-provider, then fall back to /etc/dbc_feeder.ini
10   before using trying other possible paths.
11 - Add catching of exceptions around CAN device opening so that the
12   script can exit cleanly with an error message if the device is
13   not available.
14 - Tweaked DBC default value file command line argument parsing so
15   that it does not attempt to fallback to "dbc_default_values.json"
16   in the current working directory.  That likely works for upstream
17   test scenarios, but prevents running on a target.
18
19 Upstream-Status: pending
20
21 Signed-off-by: Scott Murray <scott.murray@konsulko.com>
22 ---
23  dbcfeeder.py | 19 +++++++++++++++----
24  1 file changed, 15 insertions(+), 4 deletions(-)
25
26 diff --git a/dbcfeeder.py b/dbcfeeder.py
27 index a1ef174..c252503 100755
28 --- a/dbcfeeder.py
29 +++ b/dbcfeeder.py
30 @@ -144,7 +144,11 @@ class Feeder:
31                      whitelisted_frame_ids.append(filter.can_id)  # type: ignore
32                  elm2canbridge.elm2canbridge(canport, self._elmcan_config, whitelisted_frame_ids)
33  
34 -            self._reader.start()
35 +            try:
36 +                self._reader.start()
37 +            except:
38 +                log.error("Could not open %s, exiting", canport)
39 +                sys.exit(-1)
40  
41              receiver = threading.Thread(target=self._run_receiver)
42              receiver.start()
43 @@ -165,7 +169,12 @@ class Feeder:
44              # For now creating another bus
45              # Maybe support different buses for downstream/upstream in the future
46  
47 -            self._canclient = CANClient(interface="socketcan", channel=canport, can_fd=can_fd)
48 +            self._canclient = None
49 +            try:
50 +                self._canclient = CANClient(interface="socketcan", channel=canport, can_fd=can_fd)
51 +            except:
52 +                log.error("Could not open %s, exiting", canport)
53 +                sys.exit(-1)
54  
55              transmitter = threading.Thread(target=self._run_transmitter)
56              transmitter.start()
57 @@ -335,8 +344,10 @@ def _parse_config(filename: str) -> configparser.ConfigParser:
58          configfile = filename
59      else:
60          config_candidates = [
61 -            "/config/dbc_feeder.ini",
62 +            "/etc/kuksa-can-provider/config.ini",
63 +            "/etc/kuksa-can-provider/dbc_feeder.ini",
64              "/etc/dbc_feeder.ini",
65 +            "/config/dbc_feeder.ini",
66              "config/dbc_feeder.ini",
67          ]
68          for candidate in config_candidates:
69 @@ -534,7 +545,7 @@ def main(argv):
70      elif os.environ.get("DBC_DEFAULT_FILE"):
71          dbc_default = os.environ.get("DBC_DEFAULT_FILE")
72      else:
73 -        dbc_default = config.get(CONFIG_SECTION_CAN, CONFIG_OPTION_DBC_DEFAULT_FILE, fallback="dbc_default_values.json")
74 +        dbc_default = config.get(CONFIG_SECTION_CAN, CONFIG_OPTION_DBC_DEFAULT_FILE, fallback=None)
75  
76      if args.mapping:
77          mappingfile = args.mapping
78 -- 
79 2.44.0
80