@@ -50,10 +50,10 @@ def __getitem__(self, key):
5050 def __len__ (self ):
5151 return len (self .map )
5252
53- def read (self ):
53+ def read (self , from_od = False ):
5454 """Read PDO configuration from node using SDO."""
5555 for pdo_map in self .map .values ():
56- pdo_map .read ()
56+ pdo_map .read (from_od = from_od )
5757
5858 def save (self ):
5959 """Save PDO configuration to node using SDO."""
@@ -313,43 +313,49 @@ def add_callback(self, callback: Callable[["Map"], None]) -> None:
313313 """
314314 self .callbacks .append (callback )
315315
316- def read (self ) -> None :
316+ def read (self , from_od = False ) -> None :
317317 """Read PDO configuration for this map using SDO."""
318- cob_id = self .com_record [1 ].raw
318+
319+ def _raw_from (param ):
320+ if from_od :
321+ return param .od .default
322+ return param .raw
323+
324+ cob_id = _raw_from (self .com_record [1 ])
319325 self .cob_id = cob_id & 0x1FFFFFFF
320326 logger .info ("COB-ID is 0x%X" , self .cob_id )
321327 self .enabled = cob_id & PDO_NOT_VALID == 0
322328 logger .info ("PDO is %s" , "enabled" if self .enabled else "disabled" )
323329 self .rtr_allowed = cob_id & RTR_NOT_ALLOWED == 0
324330 logger .info ("RTR is %s" , "allowed" if self .rtr_allowed else "not allowed" )
325- self .trans_type = self .com_record [2 ]. raw
331+ self .trans_type = _raw_from ( self .com_record [2 ])
326332 logger .info ("Transmission type is %d" , self .trans_type )
327333 if self .trans_type >= 254 :
328334 try :
329- self .inhibit_time = self .com_record [3 ]. raw
335+ self .inhibit_time = _raw_from ( self .com_record [3 ])
330336 except (KeyError , SdoAbortedError ) as e :
331337 logger .info ("Could not read inhibit time (%s)" , e )
332338 else :
333339 logger .info ("Inhibit time is set to %d ms" , self .inhibit_time )
334340
335341 try :
336- self .event_timer = self .com_record [5 ]. raw
342+ self .event_timer = _raw_from ( self .com_record [5 ])
337343 except (KeyError , SdoAbortedError ) as e :
338344 logger .info ("Could not read event timer (%s)" , e )
339345 else :
340346 logger .info ("Event timer is set to %d ms" , self .event_timer )
341347
342348 try :
343- self .sync_start_value = self .com_record [6 ]. raw
349+ self .sync_start_value = _raw_from ( self .com_record [6 ])
344350 except (KeyError , SdoAbortedError ) as e :
345351 logger .info ("Could not read SYNC start value (%s)" , e )
346352 else :
347353 logger .info ("SYNC start value is set to %d ms" , self .sync_start_value )
348354
349355 self .clear ()
350- nof_entries = self .map_array [0 ]. raw
356+ nof_entries = _raw_from ( self .map_array [0 ])
351357 for subindex in range (1 , nof_entries + 1 ):
352- value = self .map_array [subindex ]. raw
358+ value = _raw_from ( self .map_array [subindex ])
353359 index = value >> 16
354360 subindex = (value >> 8 ) & 0xFF
355361 size = value & 0xFF
0 commit comments