@@ -215,10 +215,15 @@ def dump(dbs, f, **options):
215
215
pdu_triggering_ref = create_sub_element (pdu_triggering_ref_conditional , 'PDU-TRIGGERING-REF' )
216
216
pdu_triggering_ref .set ('DEST' , 'PDU-TRIGGERING' )
217
217
218
+
218
219
if frame .arbitration_id .extended is False :
219
220
create_sub_element (can_frame_triggering , 'CAN-ADDRESSING-MODE' , 'STANDARD' )
220
221
else :
221
222
create_sub_element (can_frame_triggering , 'CAN-ADDRESSING-MODE' , 'EXTENDED' )
223
+
224
+ if frame .is_fd :
225
+ create_sub_element (can_frame_triggering , 'CAN-FRAME-RX-BEHAVIOR' , "CAN-FD" )
226
+ create_sub_element (can_frame_triggering , 'CAN-FRAME-RX-BEHAVIOR' , "CAN-FD" )
222
227
create_sub_element (can_frame_triggering , 'IDENTIFIER' , str (frame .arbitration_id .id ))
223
228
224
229
pdu_triggering_ref .text = "/Cluster/CAN/IPDUTRIGG_{0}" .format (frame .name )
@@ -1324,6 +1329,10 @@ def get_frame(frame_triggering, root_or_cache, multiplex_translation, ns, float_
1324
1329
# type: (_Element, _DocRoot, dict, str, typing.Callable) -> typing.Union[canmatrix.Frame, None]
1325
1330
global pdu_frame_mapping
1326
1331
address_mode = get_child (frame_triggering , "CAN-ADDRESSING-MODE" , root_or_cache , ns )
1332
+ frame_rx_behaviour_elem = get_child (frame_triggering , "CAN-FRAME-RX-BEHAVIOR" , root_or_cache , ns )
1333
+ frame_tx_behaviour_elem = get_child (frame_triggering , "CAN-FRAME-TX-BEHAVIOR" , root_or_cache , ns )
1334
+ is_fd_elem = get_child (frame_triggering , "CAN-FD-FRAME-SUPPORT" , root_or_cache , ns )
1335
+
1327
1336
arb_id = get_child (frame_triggering , "IDENTIFIER" , root_or_cache , ns )
1328
1337
frame_elem = get_child (frame_triggering , "FRAME" , root_or_cache , ns )
1329
1338
@@ -1378,6 +1387,13 @@ def get_frame(frame_triggering, root_or_cache, multiplex_translation, ns, float_
1378
1387
else :
1379
1388
new_frame .arbitration_id = canmatrix .ArbitrationId (arbitration_id , extended = False )
1380
1389
1390
+ if (frame_rx_behaviour_elem is not None and frame_rx_behaviour_elem .text == 'CAN-FD' ) or \
1391
+ (frame_tx_behaviour_elem is not None and frame_tx_behaviour_elem .text == 'CAN-FD' ) or \
1392
+ (is_fd_elem is not None and is_fd_elem .text == 'TRUE' ):
1393
+ new_frame .is_fd = True
1394
+ else :
1395
+ new_frame .is_fd = False
1396
+
1381
1397
timing_spec = get_child (pdu , "I-PDU-TIMING-SPECIFICATION" , root_or_cache , ns )
1382
1398
if timing_spec is None :
1383
1399
timing_spec = get_child (pdu , "I-PDU-TIMING-SPECIFICATIONS" , root_or_cache , ns )
@@ -1669,10 +1685,19 @@ def load(file, **options):
1669
1685
bus_name = ""
1670
1686
else :
1671
1687
speed = get_child (cc , "SPEED" , search_point , ns )
1688
+ baudrate_elem = cc .find (".//" + ns + "BAUDRATE" )
1689
+ fd_baudrate_elem = cc .find (".//" + ns + "CAN-FD-BAUDRATE" )
1690
+
1691
+ speed = baudrate_elem is speed is None
1692
+
1672
1693
logger .debug ("Busname: " + get_element_name (cc , ns ))
1673
1694
1674
1695
bus_name = get_element_name (cc , ns )
1675
1696
if speed is not None :
1697
+ db .baudrate = speed
1698
+ if fd_baudrate_elem is not None :
1699
+ db .fd_baudrate = fd_baudrate_elem .text
1700
+
1676
1701
logger .debug (" Speed: " + speed .text )
1677
1702
1678
1703
physical_channels = cc .find ('.//' + ns + "PHYSICAL-CHANNELS" ) # type: _Element
@@ -1681,6 +1706,7 @@ def load(file, **options):
1681
1706
1682
1707
nm_lower_id = get_child (cc , "NM-LOWER-CAN-ID" , search_point , ns )
1683
1708
1709
+
1684
1710
physical_channel = get_child (physical_channels , "PHYSICAL-CHANNEL" , search_point , ns )
1685
1711
if physical_channel is None :
1686
1712
physical_channel = get_child (physical_channels , "CAN-PHYSICAL-CHANNEL" , search_point , ns )
0 commit comments