@@ -38,7 +38,7 @@ def __init__(self, bus=None):
38
38
self .scanner = NodeScanner (self )
39
39
#: List of :class:`can.Listener` objects.
40
40
#: Includes at least MessageListener.
41
- self .listeners = [MessageListener (self ), self . scanner ]
41
+ self .listeners = [MessageListener (self )]
42
42
self .notifier = None
43
43
self .nodes = {}
44
44
self .subscribers = {}
@@ -179,6 +179,7 @@ def notify(self, can_id, data, timestamp):
179
179
if can_id in self .subscribers :
180
180
callback = self .subscribers [can_id ]
181
181
callback (can_id , data , timestamp )
182
+ self .scanner .on_message_received (can_id )
182
183
183
184
def __getitem__ (self , node_id ):
184
185
return self .nodes [node_id ]
@@ -220,7 +221,7 @@ def on_message_received(self, msg):
220
221
logger .error (str (e ))
221
222
222
223
223
- class NodeScanner (Listener ):
224
+ class NodeScanner (object ):
224
225
"""Observes which nodes are present on the bus.
225
226
226
227
Listens for the following messages:
@@ -243,12 +244,9 @@ def __init__(self, network=None):
243
244
#: A :class:`list` of nodes discovered
244
245
self .nodes = []
245
246
246
- def on_message_received (self , msg ):
247
- if (not self .active or msg .is_error_frame or msg .is_remote_frame or
248
- msg .is_extended_id ):
249
- return
250
- service = msg .arbitration_id & 0x780
251
- node_id = msg .arbitration_id & 0x7F
247
+ def on_message_received (self , can_id ):
248
+ service = can_id & 0x780
249
+ node_id = can_id & 0x7F
252
250
if node_id not in self .nodes and node_id != 0 and service in self .SERVICES :
253
251
self .nodes .append (node_id )
254
252
0 commit comments