@@ -50,10 +50,10 @@ def __getitem__(self, key):
50
50
def __len__ (self ):
51
51
return len (self .map )
52
52
53
- def read (self ):
53
+ def read (self , from_od = False ):
54
54
"""Read PDO configuration from node using SDO."""
55
55
for pdo_map in self .map .values ():
56
- pdo_map .read ()
56
+ pdo_map .read (from_od = from_od )
57
57
58
58
def save (self ):
59
59
"""Save PDO configuration to node using SDO."""
@@ -313,43 +313,49 @@ def add_callback(self, callback: Callable[["Map"], None]) -> None:
313
313
"""
314
314
self .callbacks .append (callback )
315
315
316
- def read (self ) -> None :
316
+ def read (self , from_od = False ) -> None :
317
317
"""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 ])
319
325
self .cob_id = cob_id & 0x1FFFFFFF
320
326
logger .info ("COB-ID is 0x%X" , self .cob_id )
321
327
self .enabled = cob_id & PDO_NOT_VALID == 0
322
328
logger .info ("PDO is %s" , "enabled" if self .enabled else "disabled" )
323
329
self .rtr_allowed = cob_id & RTR_NOT_ALLOWED == 0
324
330
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 ])
326
332
logger .info ("Transmission type is %d" , self .trans_type )
327
333
if self .trans_type >= 254 :
328
334
try :
329
- self .inhibit_time = self .com_record [3 ]. raw
335
+ self .inhibit_time = _raw_from ( self .com_record [3 ])
330
336
except (KeyError , SdoAbortedError ) as e :
331
337
logger .info ("Could not read inhibit time (%s)" , e )
332
338
else :
333
339
logger .info ("Inhibit time is set to %d ms" , self .inhibit_time )
334
340
335
341
try :
336
- self .event_timer = self .com_record [5 ]. raw
342
+ self .event_timer = _raw_from ( self .com_record [5 ])
337
343
except (KeyError , SdoAbortedError ) as e :
338
344
logger .info ("Could not read event timer (%s)" , e )
339
345
else :
340
346
logger .info ("Event timer is set to %d ms" , self .event_timer )
341
347
342
348
try :
343
- self .sync_start_value = self .com_record [6 ]. raw
349
+ self .sync_start_value = _raw_from ( self .com_record [6 ])
344
350
except (KeyError , SdoAbortedError ) as e :
345
351
logger .info ("Could not read SYNC start value (%s)" , e )
346
352
else :
347
353
logger .info ("SYNC start value is set to %d ms" , self .sync_start_value )
348
354
349
355
self .clear ()
350
- nof_entries = self .map_array [0 ]. raw
356
+ nof_entries = _raw_from ( self .map_array [0 ])
351
357
for subindex in range (1 , nof_entries + 1 ):
352
- value = self .map_array [subindex ]. raw
358
+ value = _raw_from ( self .map_array [subindex ])
353
359
index = value >> 16
354
360
subindex = (value >> 8 ) & 0xFF
355
361
size = value & 0xFF
0 commit comments