Skip to content

Commit b8b48bb

Browse files
committed
Merge branch 'ArcolaEnergy-Kankan-Patch1' into development
2 parents 30b366d + 014d4a4 commit b8b48bb

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed

src/canmatrix/cli/convert.py

+11
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,14 @@ def get_formats():
8080
@click.option('--ignorePduContainer/--no-ignorePduContainer', 'ignorePduContainer', default = False, help="Ignore any Frame with PDU container; if no export as multiplexed Frames\ndefault False")
8181
@click.option('--calcSignalMax/--no-calcSignalMax', 'calcSignalMax', default = False, help="Calculate Signals Maximum Physical Value; If maximum value is set to 0\ndefault False")
8282
@click.option('--recalcSignalMax/--no-recalcSignalMax', 'recalcSignalMax', default = False, help="Recalculate Signals Maximum Physical Value for the entire database\ndefault False")
83+
@click.option('--deleteFloatingSignals/--no-deleteFloatingSignals', 'deleteFloatingSignals', default = False, help="if deleteFloatingSignals is set , then unassigned signals to a frame/message will be deleted \tdefault: False")
84+
85+
#Frame/Signal Check switches
86+
@click.option('--checkFloatingFrames/--no-checkFloatingFrames', 'checkFloatingFrames', default = False, help="if checkFloatingFrames is set, CAN message/frame without sender node will be warned .\tdefault: False")
87+
@click.option('--checkSignalRange/--no-checkSignalRange', 'checkSignalRange', default = False, help="if checkSignalRange is set, then signals consisting raw min/max value set to 0 will be warned. \tdefault: False ")
88+
@click.option('--checkSignalUnit/--no-checkSignalUnit', 'checkSignalUnit', default = False, help="if checkSignalUnit is set , then signals without units and value table will be warned. \tdefault: False")
89+
@click.option('--checkSignalReceiver/--no-checkSignalReceiver', 'checkSignalReceiver', default = False, help="if checkSignalReceiver is set, then signals without an assigned Receiver will be warned \tdefault: False")
90+
@click.option('--checkFloatingSignals/--no-checkFloatingSignals', 'checkFloatingSignals', default = False, help="if checkFloatingSignals is set, then unassigned signals to a frame/message will be warned \tdefault: False")
8391

8492

8593
# arxml switches
@@ -95,6 +103,9 @@ def get_formats():
95103
@click.option('--dbcExportEncoding', 'dbcExportEncoding', default="iso-8859-1", help="Export charset of dbc (relevant for units), maybe utf-8\ndefault iso-8859-1")
96104
@click.option('--dbcExportCommentEncoding', 'dbcExportCommentEncoding', default="iso-8859-1", help="Export charset of comments in dbc\ndefault iso-8859-1")
97105
@click.option('--dbcUniqueSignalNames/--no-dbcUniqueSignalNames', 'dbcUniqueSignalNames', default=True, help="Check if signal names are unique per frame")
106+
@click.option('--convertToExtended/--no-convertToExtended', 'convertToExtended', default = False, help="if convertToExtended is set , then the canmatrix will convert the dbc to extended format \tdefault: False")
107+
@click.option('--convertToJ1939/--no-convertToJ1939', 'convertToJ1939', default = False, help="if convertToJ1939 is set , then the canmatrix will convert the dbc to J1939 format \tdefault: False")
108+
98109
# dbf switches
99110
@click.option('--dbfImportEncoding', 'dbfImportEncoding', default="iso-8859-1", help="Import charset of dbf, maybe utf-8\ndefault iso-8859-1")
100111
@click.option('--dbfExportEncoding', 'dbfExportEncoding', default="iso-8859-1", help="Export charset of dbf, maybe utf-8\ndefault iso-8859-1")

src/canmatrix/convert.py

+55
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,61 @@ def convert(infile, out_file_name, **options): # type: (str, str, **str) -> Non
264264
signal.calc_max_for_none = True
265265
signal.set_max(None)
266266

267+
# Delete Unassigned Signals to a Valid Frame/Message
268+
if options.get('deleteFloatingSignals') is not None and options['deleteFloatingSignals']:
269+
for frame in db.frames:
270+
if frame.name == 'VECTOR__INDEPENDENT_SIG_MSG':
271+
for signal in frame:
272+
db.del_signal(signal)
273+
logger.info("Deleted %s",(frame.name+"::"+signal.name))
274+
db.del_frame(frame)
275+
276+
# Check & Warn for Receiver Node against signals
277+
if options.get('checkSignalReceiver') is not None and options['checkSignalReceiver']:
278+
for frame in db.frames:
279+
for signal in frame:
280+
if len(signal.receivers) == 0:
281+
logger.warning("Please add Receiver for the signal %s ",(frame.name+"::"+signal.name))
282+
283+
# Check & Warn Unassigned Signals to a Valid Frame/Message
284+
if options.get('checkFloatingSignals') is not None and options['checkFloatingSignals']:
285+
for frame in db.frames:
286+
if frame.name == 'VECTOR__INDEPENDENT_SIG_MSG':
287+
for signal in frame:
288+
logger.warning("Please map the signal %s to a valid frame or delete by deleteFloatingSignals", signal.name)
289+
290+
# Check & Warn for Frame/Messages without Transmitter Node
291+
if options.get('checkFloatingFrames') is not None and options['checkFloatingFrames']:
292+
for frame in db.frames:
293+
if len(frame.transmitters) is 0:
294+
logger.warning("No Transmitter Node Found for Frame %s", frame.name)
295+
296+
# Check & Warn for Signals with Min/Max set to 0
297+
if options.get('checkSignalRange') is not None and options['checkSignalRange']:
298+
for frame in db.frames:
299+
for signal in frame.signals:
300+
if (signal.phys2raw(signal.max) - signal.phys2raw(signal.min)) is 0:
301+
logger.warning("Invalid Min , Max value of %s", (frame.name+"::"+signal.name))
302+
303+
# Check for Signals without unit and Value table , the idea is to improve signal readability
304+
if options.get('checkSignalUnit') is not None and options['checkSignalUnit']:
305+
for frame in db.frames:
306+
for signal in frame:
307+
if signal.unit is "" and len(signal.values) == 0:
308+
logger.warning("Please add value table for the signal %s or add appropriate Unit", (frame.name+"::"+signal.name))
309+
310+
# Convert dbc from J1939 to Extended format
311+
if options.get('convertToExtended') is not None and options['convertToExtended']:
312+
for frame in db.frames:
313+
frame.is_j1939=False
314+
db.add_attribute("ProtocolType","ExtendedCAN")
315+
316+
# Convert dbc from Extended to J1939 format
317+
if options.get('convertToJ1939') is not None and options['convertToJ1939']:
318+
for frame in db.frames:
319+
frame.is_j1939=True
320+
db.add_attribute("ProtocolType","J1939")
321+
267322
logger.info(name)
268323
logger.info("%d Frames found" % (db.frames.__len__()))
269324

0 commit comments

Comments
 (0)