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#include <utility>
14
16 std::vector<DecodeFrame> frames;
17 frames.reserve(source.frames.size());
18
19 for (const FrameInfo &sourceFrame: source.frames) {
20 DecodeFrame targetFrame;
21
22 targetFrame.name = sourceFrame.name;
23 targetFrame.canId = sourceFrame.canId;
24 targetFrame.isExtended = sourceFrame.isExtended;
25 targetFrame.dlc = sourceFrame.dlc;
26 targetFrame.pgn = sourceFrame.pgn;
27 targetFrame.hasPgn = sourceFrame.hasPgn;
28 targetFrame.transmitter = sourceFrame.transmitter;
29 targetFrame.comment = sourceFrame.comment;
30
31 targetFrame.signals.reserve(sourceFrame.signals.size());
32 for (const SignalInfo &sourceSignal: sourceFrame.signals) {
33 DecodeSignal targetSignal;
34
35 targetSignal.multiplexing = sourceSignal.multiplexing;
36 targetSignal.name = sourceSignal.name;
37 targetSignal.startBit = sourceSignal.startBit;
38 targetSignal.length = sourceSignal.length;
39 targetSignal.byteOrder = sourceSignal.isLittleEndian ? ByteOrder::Intel : ByteOrder::Motorola;
40 targetSignal.valueType = sourceSignal.isSigned ? ValueType::Signed : ValueType::Unsigned;
41 targetSignal.factor = sourceSignal.factor;
42 targetSignal.offset = sourceSignal.offset;
43 targetSignal.minimum = sourceSignal.minimum;
44 targetSignal.maximum = sourceSignal.maximum;
45 targetSignal.unit = sourceSignal.unit;
46 targetSignal.receivers = sourceSignal.receivers;
47 targetSignal.comment = sourceSignal.comment;
48 targetSignal.valueDescriptions = sourceSignal.valueDescriptions;
49
50 targetFrame.signals.push_back(std::move(targetSignal));
51 }
52
53 frames.push_back(std::move(targetFrame));
54 }
55
56 return DecodeDatabase(std::move(frames));
57}
DecodeDatabase Build(const DbcDatabase &source) const
Build runtime decode database.
Immutable runtime snapshot. Copies share storage; reload replaces a snapshot. Owning lookup handles a...
Created: 2026-03-13 Author: Deeaitch (Dim. Himro)
Parsed DBC content stored in a simple internal form.
std::vector< FrameInfo > frames
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
Describes one signal inside a DBC frame.
Definition signal_info.h:24