Skip to content

Commit 5547c64

Browse files
BaldwinBaldwin
authored andcommitted
Added builder for signal managers to code generator
1 parent 8a2da6b commit 5547c64

2 files changed

Lines changed: 33 additions & 3 deletions

File tree

openxc/generator/coder.py

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ def build_source(self):
3232
lines.extend(self._build_messages())
3333
lines.extend(self._build_signal_states())
3434
lines.extend(self._build_signals())
35+
lines.extend(self._build_signal_managers())
3536
lines.extend(self._build_initializers())
3637
lines.extend(self._build_loop())
3738
lines.extend(self._build_commands())
@@ -235,16 +236,41 @@ def _build_signals(self):
235236

236237
def block(message_set):
237238
lines = []
238-
i = 1
239+
i = 0
239240
for signal in message_set.all_signals():
240241
if not signal.enabled:
241242
LOG.warning("Skipping disabled signal '%s' (in 0x%x)" % (
242243
signal.generic_name, signal.message.id))
243244
continue
244-
signal.array_index = i - 1
245+
if signal.array_index is None:
246+
signal.array_index = i++
245247
lines.append(" " * 8 + "%s" % signal)
246248
LOG.info("Added signal '%s'" % signal.generic_name)
247-
i += 1
249+
return lines
250+
251+
lines.extend(self._message_set_lister(block))
252+
lines.append("};")
253+
lines.append("")
254+
255+
return lines
256+
257+
def _build_signal_managers(self):
258+
lines = []
259+
lines.append("SignalManager SIGNAL_MANAGERS[][MAX_SIGNAL_COUNT] = {")
260+
261+
def block(message_set):
262+
lines = []
263+
i = 0
264+
for signal in message_set.all_signals();
265+
if not signal.enabled:
266+
LOG.warning("Skipping manager for disabled signal '%s' (in 0x%x)" % (
267+
signal.generic_name, signal.message.id))
268+
continue
269+
if signal.array_index is None:
270+
signal.array_index = i++
271+
signal_arr_str = "SIGNALS[%d][%d]" % (signal.message_set.index, signal.array_index)
272+
lines.append(" " * 8 + "{signal: &%s, frequencyClock: {%s.frequency}}," % signal_arr_str)
273+
LOG.info("Added signal manager '%s'" % signal.generic_name)
248274
return lines
249275

250276
lines.extend(self._message_set_lister(block))

openxc/generator/signals.cpp.footer

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ const CanSignal* openxc::signals::getSignals() {
1818
return SIGNALS[getActiveMessageSet()->index];
1919
}
2020

21+
SignalManager* openxc::signals::getSignalManagers() {
22+
return SIGNAL_MANAGERS[getActiveMessageSet()->index];
23+
}
24+
2125
int openxc::signals::getSignalCount() {
2226
return getActiveMessageSet()->signalCount;
2327
}

0 commit comments

Comments
 (0)