@@ -38,7 +38,7 @@ def __init__(self, bus=None):
3838 self .scanner = NodeScanner (self )
3939 #: List of :class:`can.Listener` objects.
4040 #: Includes at least MessageListener.
41- self .listeners = [MessageListener (self ), self . scanner ]
41+ self .listeners = [MessageListener (self )]
4242 self .notifier = None
4343 self .nodes = {}
4444 self .subscribers = {}
@@ -179,6 +179,7 @@ def notify(self, can_id, data, timestamp):
179179 if can_id in self .subscribers :
180180 callback = self .subscribers [can_id ]
181181 callback (can_id , data , timestamp )
182+ self .scanner .on_message_received (can_id )
182183
183184 def __getitem__ (self , node_id ):
184185 return self .nodes [node_id ]
@@ -220,7 +221,7 @@ def on_message_received(self, msg):
220221 logger .error (str (e ))
221222
222223
223- class NodeScanner (Listener ):
224+ class NodeScanner (object ):
224225 """Observes which nodes are present on the bus.
225226
226227 Listens for the following messages:
@@ -243,12 +244,9 @@ def __init__(self, network=None):
243244 #: A :class:`list` of nodes discovered
244245 self .nodes = []
245246
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
252250 if node_id not in self .nodes and node_id != 0 and service in self .SERVICES :
253251 self .nodes .append (node_id )
254252
0 commit comments