1
1
import collections
2
2
from ctypes import c_ubyte
3
3
import logging
4
- import canalystii as driver
5
4
import time
6
- import warnings
7
5
from typing import Any , Dict , Optional , Deque , Sequence , Tuple , Union
8
- from can import BitTiming , BusABC , Message
9
- from can .exceptions import CanTimeoutError
6
+
7
+ from can import BitTiming , BusABC , Message , BitTimingFd
8
+ from can .exceptions import CanTimeoutError , CanInitializationError
10
9
from can .typechecking import CanFilters
10
+ from can .util import deprecated_args_alias
11
+
12
+ import canalystii as driver
11
13
12
14
logger = logging .getLogger (__name__ )
13
15
14
16
15
17
class CANalystIIBus (BusABC ):
18
+ @deprecated_args_alias (bit_timing = "timing" )
16
19
def __init__ (
17
20
self ,
18
21
channel : Union [int , Sequence [int ], str ] = (0 , 1 ),
19
22
device : int = 0 ,
20
23
bitrate : Optional [int ] = None ,
21
- bit_timing : Optional [BitTiming ] = None ,
24
+ timing : Optional [Union [ BitTiming , BitTimingFd ] ] = None ,
22
25
can_filters : Optional [CanFilters ] = None ,
23
26
rx_queue_size : Optional [int ] = None ,
24
27
** kwargs : Dict [str , Any ],
@@ -33,9 +36,12 @@ def __init__(
33
36
Optional USB device number. Default is 0 (first device found).
34
37
:param bitrate:
35
38
CAN bitrate in bits/second. Required unless the bit_timing argument is set.
36
- :param bit_timing:
37
- Optional BitTiming instance to use for custom bit timing setting.
38
- If this argument is set then it overrides the bitrate argument.
39
+ :param timing:
40
+ Optional :class:`~can.BitTiming` instance to use for custom bit timing setting.
41
+ If this argument is set then it overrides the bitrate argument. The
42
+ `f_clock` value of the timing instance must be set to 8_000_000 (8MHz)
43
+ for standard CAN.
44
+ CAN FD and the :class:`~can.BitTimingFd` class are not supported.
39
45
:param can_filters:
40
46
Optional filters for received CAN messages.
41
47
:param rx_queue_size:
@@ -44,8 +50,8 @@ def __init__(
44
50
"""
45
51
super ().__init__ (channel = channel , can_filters = can_filters , ** kwargs )
46
52
47
- if not (bitrate or bit_timing ):
48
- raise ValueError ("Either bitrate or bit_timing argument is required" )
53
+ if not (bitrate or timing ):
54
+ raise ValueError ("Either bitrate or timing argument is required" )
49
55
50
56
if isinstance (channel , str ):
51
57
# Assume comma separated string of channels
@@ -63,17 +69,17 @@ def __init__(
63
69
64
70
self .device = driver .CanalystDevice (device_index = device )
65
71
for channel in self .channels :
66
- if bit_timing :
67
- try :
68
- if bit_timing . f_clock != 8_000_000 :
69
- warnings . warn (
70
- f"bit_timing. f_clock value { bit_timing . f_clock } "
71
- "doesn't match expected device f_clock 8MHz."
72
- )
73
- except ValueError :
74
- pass # f_clock not specified
75
- self . device . init (
76
- channel , timing0 = bit_timing . btr0 , timing1 = bit_timing . btr1
72
+ if isinstance ( timing , BitTiming ) :
73
+ if timing . f_clock != 8_000_000 :
74
+ raise CanInitializationError (
75
+ f"timing.f_clock value { timing . f_clock } "
76
+ "doesn't match expected device f_clock 8MHz. "
77
+ )
78
+
79
+ self . device . init ( channel , timing0 = timing . btr0 , timing1 = timing . btr1 )
80
+ elif isinstance ( timing , BitTimingFd ):
81
+ raise NotImplementedError (
82
+ f"CAN FD is not supported by { self . __class__ . __name__ } ."
77
83
)
78
84
else :
79
85
self .device .init (channel , bitrate = bitrate )
0 commit comments