File tree 2 files changed +18
-12
lines changed
2 files changed +18
-12
lines changed Original file line number Diff line number Diff line change @@ -199,7 +199,7 @@ def send_periodic(
199
199
Disable to instead manage tasks manually.
200
200
:return:
201
201
A started task instance. Note the task can be stopped (and depending on
202
- the backend modified) by calling the :meth:`stop` method.
202
+ the backend modified) by calling the task's :meth:`stop` method.
203
203
204
204
.. note::
205
205
@@ -430,3 +430,6 @@ def _detect_available_configs() -> List[can.typechecking.AutoDetectedConfig]:
430
430
for usage in the interface's bus constructor.
431
431
"""
432
432
raise NotImplementedError ()
433
+
434
+ def fileno (self ) -> int :
435
+ raise NotImplementedError ("fileno is not implemented using current CAN bus" )
Original file line number Diff line number Diff line change @@ -61,23 +61,26 @@ def add_bus(self, bus: BusABC):
61
61
:param bus:
62
62
CAN bus instance.
63
63
"""
64
- if (
65
- self ._loop is not None
66
- and hasattr (bus , "fileno" )
67
- and bus .fileno () >= 0 # type: ignore
68
- ):
69
- # Use file descriptor to watch for messages
70
- reader = bus .fileno () # type: ignore
64
+ reader : int = - 1
65
+ try :
66
+ reader = bus .fileno ()
67
+ except NotImplementedError :
68
+ # Bus doesn't support fileno, we fall back to thread based reader
69
+ pass
70
+
71
+ if self ._loop is not None and reader >= 0 :
72
+ # Use bus file descriptor to watch for messages
71
73
self ._loop .add_reader (reader , self ._on_message_available , bus )
74
+ self ._readers .append (reader )
72
75
else :
73
- reader = threading .Thread (
76
+ reader_thread = threading .Thread (
74
77
target = self ._rx_thread ,
75
78
args = (bus ,),
76
79
name = 'can.notifier for bus "{}"' .format (bus .channel_info ),
77
80
)
78
- reader .daemon = True
79
- reader .start ()
80
- self ._readers .append (reader )
81
+ reader_thread .daemon = True
82
+ reader_thread .start ()
83
+ self ._readers .append (reader_thread )
81
84
82
85
def stop (self , timeout : float = 5 ):
83
86
"""Stop notifying Listeners when new :class:`~can.Message` objects arrive
You can’t perform that action at this time.
0 commit comments