@@ -430,6 +430,46 @@ def test_signal_inital_value():
430
430
canmatrix .formats .dump (matrix , outdbc , "dbc" )
431
431
assert 'BA_ "GenSigStartValue" SG_ 17 sig1 2.7;' in outdbc .getvalue ().decode ('utf8' )
432
432
433
+
434
+ def test_candbpp_startbit ():
435
+ dbc = io .BytesIO (textwrap .dedent (u'''\
436
+ BO_ 1809 MSG: 8 DEV2
437
+ SG_ SIG1 : 39|4@0+ (1,0) [0|1] "" DEV1
438
+ SG_ SIG2 : 52|1@0+ (1,0) [0|1] "" DEV1
439
+ SG_ SIG3 : 51|12@0+ (0.1,0) [0|360] "°" DEV1
440
+ SG_ SIG4 : 6|1@0+ (1,0) [0|1] "" DEV1
441
+ SG_ SIG5 : 5|1@0+ (1,0) [0|1] "" DEV1
442
+ SG_ SIG6 : 23|3@0+ (1,0) [0|1] "" DEV1
443
+ SG_ SIG7 : 7|1@0+ (1,0) [0|1] "" DEV1
444
+ SG_ SIG8 : 34|11@0+ (0.1,-102.4) [-32|32] "A" DEV1
445
+ SG_ SIG9 : 18|11@0+ (0.1,-102.4) [-62.5|62.5] "A" DEV1
446
+ SG_ SIG10 : 4|13@0+ (0.1,0) [350|450] "V" DEV1
447
+ ''' ).encode ('utf-8' ))
448
+ matrix = canmatrix .formats .dbc .load (dbc , dbcImportEncoding = "utf8" )
449
+ # Motorola forward LSB
450
+ assert matrix .frames [0 ].signal_by_name ("SIG1" ).get_startbit (True , True ) == 36
451
+ assert matrix .frames [0 ].signal_by_name ("SIG2" ).get_startbit (True , True ) == 52
452
+ assert matrix .frames [0 ].signal_by_name ("SIG3" ).get_startbit (True , True ) == 56
453
+ assert matrix .frames [0 ].signal_by_name ("SIG4" ).get_startbit (True , True ) == 6
454
+ assert matrix .frames [0 ].signal_by_name ("SIG5" ).get_startbit (True , True ) == 5
455
+ assert matrix .frames [0 ].signal_by_name ("SIG6" ).get_startbit (True , True ) == 21
456
+ assert matrix .frames [0 ].signal_by_name ("SIG7" ).get_startbit (True , True ) == 7
457
+ assert matrix .frames [0 ].signal_by_name ("SIG8" ).get_startbit (True , True ) == 40
458
+ assert matrix .frames [0 ].signal_by_name ("SIG9" ).get_startbit (True , True ) == 24
459
+ assert matrix .frames [0 ].signal_by_name ("SIG10" ).get_startbit (True , True ) == 8
460
+ # Motorola forward MSB
461
+ assert matrix .frames [0 ].signal_by_name ("SIG1" ).get_startbit (True , False ) == 39
462
+ assert matrix .frames [0 ].signal_by_name ("SIG2" ).get_startbit (True , False ) == 52
463
+ assert matrix .frames [0 ].signal_by_name ("SIG3" ).get_startbit (True , False ) == 51
464
+ assert matrix .frames [0 ].signal_by_name ("SIG4" ).get_startbit (True , False ) == 6
465
+ assert matrix .frames [0 ].signal_by_name ("SIG5" ).get_startbit (True , False ) == 5
466
+ assert matrix .frames [0 ].signal_by_name ("SIG6" ).get_startbit (True , False ) == 23
467
+ assert matrix .frames [0 ].signal_by_name ("SIG7" ).get_startbit (True , False ) == 7
468
+ assert matrix .frames [0 ].signal_by_name ("SIG8" ).get_startbit (True , False ) == 34
469
+ assert matrix .frames [0 ].signal_by_name ("SIG9" ).get_startbit (True , False ) == 18
470
+ assert matrix .frames [0 ].signal_by_name ("SIG10" ).get_startbit (True , False ) == 4
471
+
472
+
433
473
def test_missing_space ():
434
474
dbc = io .BytesIO (textwrap .dedent (u'''\
435
475
BO_ 17 Frame_1: 8 Vector__XXX
@@ -438,3 +478,4 @@ def test_missing_space():
438
478
matrix = canmatrix .formats .dbc .load (dbc , dbcImportEncoding = "utf8" )
439
479
assert matrix .frames [0 ].signals [0 ].name == "sig1"
440
480
481
+
0 commit comments