Skip to content

Commit 621cd7d

Browse files
authored
Activate channel after CAN filters were applied (#1796)
1 parent 7366c42 commit 621cd7d

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

can/interfaces/kvaser/canlib.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -552,16 +552,13 @@ def __init__(
552552
else:
553553
flags_ = flags
554554
self._write_handle = canOpenChannel(channel, flags_)
555-
canBusOn(self._read_handle)
556555

557556
can_driver_mode = (
558557
canstat.canDRIVER_SILENT
559558
if driver_mode == DRIVER_MODE_SILENT
560559
else canstat.canDRIVER_NORMAL
561560
)
562561
canSetBusOutputControl(self._write_handle, can_driver_mode)
563-
log.debug("Going bus on TX handle")
564-
canBusOn(self._write_handle)
565562

566563
timer = ctypes.c_uint(0)
567564
try:
@@ -587,6 +584,12 @@ def __init__(
587584
**kwargs,
588585
)
589586

587+
# activate channel after CAN filters were applied
588+
log.debug("Go on bus")
589+
if not self.single_handle:
590+
canBusOn(self._read_handle)
591+
canBusOn(self._write_handle)
592+
590593
def _apply_filters(self, filters):
591594
if filters and len(filters) == 1:
592595
can_id = filters[0]["can_id"]
@@ -610,7 +613,7 @@ def _apply_filters(self, filters):
610613
for extended in (0, 1):
611614
canSetAcceptanceFilter(handle, 0, 0, extended)
612615
except (NotImplementedError, CANLIBError) as e:
613-
log.error("An error occured while disabling filtering: %s", e)
616+
log.error("An error occurred while disabling filtering: %s", e)
614617

615618
def flush_tx_buffer(self):
616619
"""Wipeout the transmit buffer on the Kvaser."""

can/interfaces/vector/canlib.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -329,14 +329,6 @@ def __init__(
329329
else:
330330
LOG.info("Install pywin32 to avoid polling")
331331

332-
try:
333-
self.xldriver.xlActivateChannel(
334-
self.port_handle, self.mask, xldefine.XL_BusTypes.XL_BUS_TYPE_CAN, 0
335-
)
336-
except VectorOperationError as error:
337-
self.shutdown()
338-
raise VectorInitializationError.from_generic(error) from None
339-
340332
# Calculate time offset for absolute timestamps
341333
offset = xlclass.XLuint64()
342334
try:
@@ -366,6 +358,15 @@ def __init__(
366358
**kwargs,
367359
)
368360

361+
# activate channels after CAN filters were applied
362+
try:
363+
self.xldriver.xlActivateChannel(
364+
self.port_handle, self.mask, xldefine.XL_BusTypes.XL_BUS_TYPE_CAN, 0
365+
)
366+
except VectorOperationError as error:
367+
self.shutdown()
368+
raise VectorInitializationError.from_generic(error) from None
369+
369370
@property
370371
def fd(self) -> bool:
371372
class_name = self.__class__.__name__

0 commit comments

Comments
 (0)