DBC Framework
DBC parsing and CAN signal decoding framework
Loading...
Searching...
No Matches
dbc_decoder.h
Go to the documentation of this file.
1
12#ifndef DBC_DECODER_H
13#define DBC_DECODER_H
14
15#include <cstdint>
16#include <variant>
17#include <vector>
18
19#include "decode_database.h"
20
25 std::uint32_t canId;
27 std::vector<std::uint8_t> data;
30 : canId(0U), isExtended(false), data() {
31 }
32};
33
39 std::variant<std::int64_t, std::uint64_t> rawValue;
41 bool valid;
44 : definition(nullptr), rawValue(std::uint64_t(0U)), physicalValue(0.0), valid(false) {
45 }
46};
47
53 std::vector<DecodedSignalValue> signals;
54 bool valid;
57 : definition(nullptr), signals(), valid(false) {
58 }
59};
60
65public:
73 const DecodeFrame *FindFrame(const DecodeDatabase &database,
74 std::uint32_t canId,
75 bool isExtended) const;
76
84 const RawCanFrame &frame) const;
85
86private:
87 static bool ExtractUnsigned(const std::vector<std::uint8_t> &data,
88 const DecodeSignal &signal,
89 std::uint64_t &value);
90
91 static bool ExtractIntel(const std::vector<std::uint8_t> &data,
92 std::uint32_t startBit,
93 std::uint32_t length,
94 std::uint64_t &value);
95
96 static bool ExtractMotorola(const std::vector<std::uint8_t> &data,
97 std::uint32_t startBit,
98 std::uint32_t length,
99 std::uint64_t &value);
100
101 static std::int64_t SignExtend(std::uint64_t value, std::uint32_t bitLength);
102};
103
104#endif /* DBC_DECODER_H */
Runtime CAN decoder using prebuilt decode database.
Definition dbc_decoder.h:64
DecodedFrameValue Decode(const DecodeDatabase &database, const RawCanFrame &frame) const
Decode one raw CAN frame.
const DecodeFrame * FindFrame(const DecodeDatabase &database, std::uint32_t canId, bool isExtended) const
Find frame definition by CAN ID.
Created: 2026-03-13 Author: Deeaitch (Dim. Himro)
Runtime decode database with fast lookup by CAN ID.
Runtime-ready frame definition.
Runtime-ready signal definition.
Fully decoded frame.
Definition dbc_decoder.h:51
const DecodeFrame * definition
Definition dbc_decoder.h:52
One decoded signal value.
Definition dbc_decoder.h:37
std::variant< std::int64_t, std::uint64_t > rawValue
Definition dbc_decoder.h:39
const DecodeSignal * definition
Definition dbc_decoder.h:38
Raw CAN frame used for runtime or trace decoding.
Definition dbc_decoder.h:24
std::vector< std::uint8_t > data
Definition dbc_decoder.h:27
std::uint32_t canId
Definition dbc_decoder.h:25
bool isExtended
Definition dbc_decoder.h:26