Skip to content

Commit cc7c0eb

Browse files
committed
Updated dbc to h with multiplexed messages
1 parent 4464fae commit cc7c0eb

1 file changed

Lines changed: 32 additions & 4 deletions

File tree

docs/dbc_to_h.py

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ def dbc_to_h(dbc_file, h_file):
1111
with open(h_file, 'w') as file:
1212
file.write("// Signals\n")
1313
for message in db.messages:
14+
multiplexor_signal = ""
1415
signals = []
16+
1517
for signal in message.signals:
1618
signalString = ""
1719
if (signal.choices != None):
@@ -26,13 +28,39 @@ def dbc_to_h(dbc_file, h_file):
2628
byteOrder = ""
2729
endian = ""
2830
signalType = "Signed" if signal.is_signed else "Unsigned"
29-
signalString += "Make" + byteOrder + signalType + "CANSignal(" + ("data_type_placeholder" if signal.choices == None else signal.name + "_Enum") + "," + str(signal.start) + "," + str(signal.length) + "," + str(signal.scale) + "," + str(signal.offset) + endian + ") " + signal.name + "_Signal{};\n"
31+
signalString += "Make" + byteOrder + signalType + "CANSignal(" + ("data_type_placeholder" if signal.choices == None else signal.name + "_Enum") + "," + str(signal.start) + "," + str(signal.length) + "," + str(signal.scale) + ("" if isinstance(signal.scale, int) else "f") + "," + str(signal.offset) + endian + ") " + signal.name + "_Signal{};\n"
3032
with open(h_file, 'a') as file:
3133
file.write(signalString)
32-
signals.append(signal.name + "_Signal")
33-
rx_message = "CANRXMessage<" + str(len(signals)) + "> " + message.name + "_RX_Message{can_bus, 0x" + format(message.frame_id, 'x') + ", " + ', '.join(signals) + "};\n"
34+
if message.is_multiplexed():
35+
if (signal.is_multiplexer):
36+
multiplexor_signal = signal.name + "_Signal_"
37+
continue
38+
39+
found = False
40+
for i in range(len(signals)):
41+
if signals[i][0] == signal.multiplexer_ids[0]:
42+
signals[i].append(signal.name + "_Signal_")
43+
found = True
44+
continue
45+
if not found:
46+
signals.append([signal.multiplexer_ids[0], signal.name + "_Signal_"])
47+
else:
48+
signals.append(signal.name + "_Signal_")
49+
print(signals)
50+
if message.is_multiplexed():
51+
signal_groups_str = ""
52+
signal_groups = []
53+
for i in range(len(signals)):
54+
signal_groups_str += "MultiplexedSignalGroup<" + str(len(signals[i]) - 1) + "> " + message.name + "_SignalGroup_" + str(i) + "_{" + ', '.join(str(s) for s in signals[i]) + "};\n"
55+
signal_groups.append(message.name + "_SignalGroup_" + str(i) + "_")
56+
#MultiplexedCANTXMessage<2, uint8_t> tx_msg{can, 100, 8, 100, tx_multiplexor, tx_signals_0, tx_signals_1};
57+
rx_message = signal_groups_str
58+
rx_message += "MultiplexedCANRXMessage<" + str(len(signal_groups)) + ", " + "data_type_placeholder" + "> " + message.name + "_RX_Message_{can_bus, 0x" + format(message.frame_id, 'x') + ", " + multiplexor_signal + ", " + ', '.join(signal_groups) + "};\n"
59+
tx_message = "MultiplexedCANTXMessage<" + str(len(signal_groups)) + ", " + "data_type_placeholder" + "> " + message.name + "_TX_Message_{can_bus, 0x" + format(message.frame_id, 'x') + ", " + ("true, " if message.is_extended_frame else "") + str(message.length) + ", freq_placeholder, timer_group, " + multiplexor_signal + ", " + ', '.join(signal_groups) + "};\n"
60+
else:
61+
rx_message = "CANRXMessage<" + str(len(signals)) + "> " + message.name + "_RX_Message_{can_bus, 0x" + format(message.frame_id, 'x') + ", " + ', '.join(signals) + "};\n"
62+
tx_message = "CANTXMessage<" + str(len(signals)) + "> " + message.name + "_TX_Message_{can_bus, 0x" + format(message.frame_id, 'x') + ", " + ("true, " if message.is_extended_frame else "") + str(message.length) + ", freq_placeholder, timer_group, " + ', '.join(signals) + "};\n"
3463
rx_messages += rx_message
35-
tx_message = "CANTXMessage<" + str(len(signals)) + "> " + message.name + "_TX_Message{can_bus, 0x" + format(message.frame_id, 'x') + ", " + str(message.length) + ", freq_placeholder, timer_group, " + ', '.join(signals) + "};\n"
3664
tx_messages += tx_message
3765
with open(h_file, 'a') as file:
3866
file.write("\n// RX Messages\n")

0 commit comments

Comments
 (0)