DBC Framework
DBC parsing and CAN signal decoding framework
Loading...
Searching...
No Matches
dbc_decode_builder.cpp
Go to the documentation of this file.
1
12#include "dbc_decode_builder.h"
13
15 DecodeDatabase result;
16
17 for (const FrameInfo &sourceFrame : source.frames) {
18 DecodeFrame targetFrame;
19
20 targetFrame.name = sourceFrame.name;
21 targetFrame.canId = sourceFrame.canId;
22 targetFrame.isExtended = sourceFrame.isExtended;
23 targetFrame.dlc = sourceFrame.dlc;
24 targetFrame.pgn = sourceFrame.pgn;
25 targetFrame.hasPgn = sourceFrame.hasPgn;
26 targetFrame.transmitter = sourceFrame.transmitter;
27 targetFrame.comment = sourceFrame.comment;
28
29 for (const SignalInfo &sourceSignal : sourceFrame.signals) {
30 DecodeSignal targetSignal;
31
32 targetSignal.multiplexing = sourceSignal.multiplexing;
33 targetSignal.name = sourceSignal.name;
34 targetSignal.startBit = sourceSignal.startBit;
35 targetSignal.length = sourceSignal.length;
36 targetSignal.byteOrder = sourceSignal.isLittleEndian ? ByteOrder::Intel : ByteOrder::Motorola;
37 targetSignal.valueType = sourceSignal.isSigned ? ValueType::Signed : ValueType::Unsigned;
38 targetSignal.factor = sourceSignal.factor;
39 targetSignal.offset = sourceSignal.offset;
40 targetSignal.minimum = sourceSignal.minimum;
41 targetSignal.maximum = sourceSignal.maximum;
42 targetSignal.unit = sourceSignal.unit;
43 targetSignal.receivers = sourceSignal.receivers;
44 targetSignal.comment = sourceSignal.comment;
45 targetSignal.valueDescriptions = sourceSignal.valueDescriptions;
46
47 targetFrame.signals.push_back(targetSignal);
48 }
49
50 result.frames.push_back(targetFrame);
51 result.frameIndexByKey[FrameKey(targetFrame.canId, targetFrame.isExtended)] =
52 result.frames.size() - 1U;
53 }
54
55 return result;
56}
DecodeDatabase Build(const DbcDatabase &source) const
Build runtime decode database.
Created: 2026-03-13 Author: Deeaitch (Dim. Himro)
Parsed DBC content stored in a simple internal form.
std::vector< FrameInfo > frames
Runtime decode database with fast lookup by CAN ID.
Runtime-ready frame definition.
std::uint32_t pgn
std::string comment
std::uint8_t dlc
std::uint32_t canId
std::string name
std::string transmitter
Runtime-ready signal definition.
std::string unit
std::string name
ValueDescriptions valueDescriptions
ValueType valueType
std::uint32_t startBit
std::vector< std::string > receivers
ByteOrder byteOrder
std::uint32_t length
std::string comment
Describes one CAN frame from a DBC file.
Definition frame_info.h:24
Key for fast frame lookup.
Describes one signal inside a DBC frame.
Definition signal_info.h:24