Skip to content

Commit 9a39e2e

Browse files
committed
Implement CanProtocol for KvaserBus
1 parent b2d9f30 commit 9a39e2e

File tree

2 files changed

+22
-10
lines changed

2 files changed

+22
-10
lines changed

can/interfaces/kvaser/canlib.py

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,21 @@
66
Copyright (C) 2010 Dynamic Controls
77
"""
88

9+
import ctypes
10+
import logging
911
import sys
1012
import time
11-
import logging
12-
import ctypes
1313

14-
from can import BusABC
15-
from ...exceptions import CanError, CanInitializationError, CanOperationError
16-
from can import Message
14+
from can import (
15+
BusABC,
16+
Message,
17+
CanProtocol,
18+
CanError,
19+
CanInitializationError,
20+
CanOperationError,
21+
)
1722
from can.util import time_perfcounter_correlation
18-
from . import constants as canstat
19-
from . import structures
23+
from . import constants as canstat, structures
2024

2125
log = logging.getLogger("can.kvaser")
2226

@@ -520,7 +524,12 @@ def __init__(self, channel, can_filters=None, **kwargs):
520524
self._timestamp_offset = time.time() - (timer.value * TIMESTAMP_FACTOR)
521525

522526
self._is_filtered = False
523-
super().__init__(channel=channel, can_filters=can_filters, **kwargs)
527+
super().__init__(
528+
channel=channel,
529+
can_filters=can_filters,
530+
protocol=CanProtocol.CAN_FD if fd else CanProtocol.CAN_20,
531+
**kwargs,
532+
)
524533

525534
def _apply_filters(self, filters):
526535
if filters and len(filters) == 1:

test/test_kvaser.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ def tearDown(self):
4646

4747
def test_bus_creation(self):
4848
self.assertIsInstance(self.bus, canlib.KvaserBus)
49+
self.assertEqual(self.bus.protocol, can.CanProtocol.CAN_20)
4950
self.assertTrue(canlib.canOpenChannel.called)
5051
self.assertTrue(canlib.canBusOn.called)
5152

@@ -149,7 +150,8 @@ def test_available_configs(self):
149150
def test_canfd_default_data_bitrate(self):
150151
canlib.canSetBusParams.reset_mock()
151152
canlib.canSetBusParamsFd.reset_mock()
152-
can.Bus(channel=0, interface="kvaser", fd=True)
153+
bus = can.Bus(channel=0, interface="kvaser", fd=True)
154+
self.assertEqual(bus.protocol, can.CanProtocol.CAN_FD)
153155
canlib.canSetBusParams.assert_called_once_with(
154156
0, constants.canFD_BITRATE_500K_80P, 0, 0, 0, 0, 0
155157
)
@@ -161,7 +163,8 @@ def test_canfd_nondefault_data_bitrate(self):
161163
canlib.canSetBusParams.reset_mock()
162164
canlib.canSetBusParamsFd.reset_mock()
163165
data_bitrate = 2000000
164-
can.Bus(channel=0, interface="kvaser", fd=True, data_bitrate=data_bitrate)
166+
bus = can.Bus(channel=0, interface="kvaser", fd=True, data_bitrate=data_bitrate)
167+
self.assertEqual(bus.protocol, can.CanProtocol.CAN_FD)
165168
bitrate_constant = canlib.BITRATE_FD[data_bitrate]
166169
canlib.canSetBusParams.assert_called_once_with(
167170
0, constants.canFD_BITRATE_500K_80P, 0, 0, 0, 0, 0

0 commit comments

Comments
 (0)