Skip to content

Commit

Permalink
Set initial_value to physical value (#567)
Browse files Browse the repository at this point in the history
Currently the initial_value is incorrectly set to the signal raw value.
  • Loading branch information
pierreluctg committed Apr 16, 2021
1 parent 7de839b commit e71416c
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 4 deletions.
9 changes: 5 additions & 4 deletions src/canmatrix/formats/dbc.py
Original file line number Diff line number Diff line change
Expand Up @@ -233,8 +233,8 @@ def dump(in_db, f, **options):
for signal in frame.signals:
if signal.cycle_time != 0:
signal.add_attribute("GenSigCycleTime", signal.cycle_time)
if signal.initial_value != 0:
signal.add_attribute("GenSigStartValue", signal.initial_value)
if signal.phys2raw(None) != 0:
signal.add_attribute("GenSigStartValue", signal.phys2raw(None))

name = normalized_names[signal]
if compatibility:
Expand All @@ -254,7 +254,7 @@ def dump(in_db, f, **options):
if max([x.cycle_time for y in db.frames for x in y.signals]) > 0:
db.add_signal_defines("GenSigCycleTime", 'INT 0 65535')

if max([x.initial_value for y in db.frames for x in y.signals]) > 0 or min([x.initial_value for y in db.frames for x in y.signals]) < 0:
if max([x.phys2raw(None) for y in db.frames for x in y.signals]) > 0 or min([x.phys2raw(None) for y in db.frames for x in y.signals]) < 0:
db.add_signal_defines("GenSigStartValue", 'FLOAT 0 100000000000')


Expand Down Expand Up @@ -945,7 +945,8 @@ def add_frame_by_id(new_frame): # type: (canmatrix.Frame) -> None
# frame.extended = 1

for signal in frame.signals:
signal.initial_value = float_factory(signal.attributes.get("GenSigStartValue", "0"))
gen_sig_start_value = float_factory(signal.attributes.get("GenSigStartValue", "0"))
signal.initial_value = (gen_sig_start_value * signal.factor) + signal.offset
signal.cycle_time = int(signal.attributes.get("GenSigCycleTime", 0))
if signal.attribute("SystemSignalLongSymbol") is not None:
signal.name = signal.attribute("SystemSignalLongSymbol")[1:-1]
Expand Down
2 changes: 2 additions & 0 deletions src/canmatrix/tests/test_dbc.py
Original file line number Diff line number Diff line change
Expand Up @@ -421,6 +421,8 @@ def test_signal_inital_value():
BA_DEF_ SG_ "GenSigStartValue" FLOAT 0 100000000000;
BA_ "GenSigStartValue" SG_ 17 sig1 2.7;
SIG_VALTYPE_ 17 sig1 : 1;
''').encode('utf-8'))
matrix = canmatrix.formats.dbc.load(dbc, dbcImportEncoding="utf8")
assert matrix.frames[0].signal_by_name("sig1").initial_value == decimal.Decimal("2.7")
Expand Down

0 comments on commit e71416c

Please sign in to comment.