From 7394c0e74557f320a7fee166593899549c85c222 Mon Sep 17 00:00:00 2001 From: Koltan Hauersperger Date: Fri, 21 Nov 2025 11:11:29 -0500 Subject: [PATCH 1/3] feat: add ability to utilize bus filtering --- j1939/electronic_control_unit.py | 11 +++++++++++ test/test_ecu.py | 13 +++++++++++++ 2 files changed, 24 insertions(+) diff --git a/j1939/electronic_control_unit.py b/j1939/electronic_control_unit.py index 16fb98e..8a1622d 100644 --- a/j1939/electronic_control_unit.py +++ b/j1939/electronic_control_unit.py @@ -288,6 +288,17 @@ def notify(self, can_id, data, timestamp): """ self.j1939_dll.notify(can_id, data, timestamp) + def add_bus_filters(self, fitlers: can.typechecking.CanFilters | None): + """Add bus filters to the underlying CAN bus. + + :param filters: + An iterable of dictionaries each containing a "can_id", + a "can_mask", and an optional "extended" key + """ + if self._bus is None: + raise RuntimeError("Not connected to CAN bus") + self._bus.set_filters(fitlers) + def _async_job_thread(self): """Asynchronous thread for handling various jobs diff --git a/test/test_ecu.py b/test/test_ecu.py index ad91d45..8e535e4 100644 --- a/test/test_ecu.py +++ b/test/test_ecu.py @@ -187,3 +187,16 @@ def test_add_notfier(feeder): assert feeder.ecu._notifier == notifier feeder.ecu.remove_notifier() assert feeder.ecu._notifier == None + +def test_add_bus_filters(feeder): + """ + Test adding bus filters to the ECU + """ + bus = can.interface.Bus(interface="virtual", channel=1) + feeder.ecu.add_bus(bus) + filters = [ + {'can_id': 0x123, 'can_mask': 0x7FF, 'extended': True}, + {'can_id': 0x456, 'can_mask': 0x7FF} + ] + feeder.ecu.add_bus_filters(filters) + assert feeder.ecu._bus.filters == filters \ No newline at end of file From 459313971867f1771b4980da24b3c6894f6c5bdb Mon Sep 17 00:00:00 2001 From: Koltan Hauersperger Date: Fri, 21 Nov 2025 11:12:59 -0500 Subject: [PATCH 2/3] style: add new line --- test/test_ecu.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/test_ecu.py b/test/test_ecu.py index 8e535e4..47362ba 100644 --- a/test/test_ecu.py +++ b/test/test_ecu.py @@ -199,4 +199,5 @@ def test_add_bus_filters(feeder): {'can_id': 0x456, 'can_mask': 0x7FF} ] feeder.ecu.add_bus_filters(filters) - assert feeder.ecu._bus.filters == filters \ No newline at end of file + assert feeder.ecu._bus.filters == filters + \ No newline at end of file From a2304ba8fff94d40ca0ad04faebb0ef5cd57f965 Mon Sep 17 00:00:00 2001 From: Koltan Hauersperger Date: Fri, 21 Nov 2025 11:14:13 -0500 Subject: [PATCH 3/3] style: make new line empty --- test/test_ecu.py | 1 - 1 file changed, 1 deletion(-) diff --git a/test/test_ecu.py b/test/test_ecu.py index 47362ba..6e0930e 100644 --- a/test/test_ecu.py +++ b/test/test_ecu.py @@ -200,4 +200,3 @@ def test_add_bus_filters(feeder): ] feeder.ecu.add_bus_filters(filters) assert feeder.ecu._bus.filters == filters - \ No newline at end of file