12#ifndef DECODE_DATABASE_H
13#define DECODE_DATABASE_H
15#include "attributes.h"
16#include "definition_key.h"
17#include "multiplex_graph.h"
18#include "multiplexing.h"
19#include "value_descriptions.h"
23#include <unordered_map>
73 std::uint8_t
dlc = 0U;
74 std::uint32_t
pgn = 0U;
78 std::vector<DecodeSignal> signals;
113 const std::vector<DecodeFrame> &
GetFrames()
const;
126 std::vector<dbc_detail::MultiplexGraph> multiplexGraphs;
127 std::vector<DecodeFrame> frames;
128 std::unordered_map<FrameKey, std::size_t, FrameKeyHasher> frameIndexByKey;
130 std::unordered_map<std::uint32_t, std::vector<std::size_t>> frameIndicesByPgn;
132 explicit Storage(
const std::vector<DecodeFrame> &definitions);
135 std::shared_ptr<const Storage> storage;
Runtime CAN decoder using prebuilt decode database.
Immutable runtime snapshot. Copies share storage; reload replaces a snapshot. Owning lookup handles a...
std::shared_ptr< const DecodeSignal > FindSignal(const SignalKey &key) const
Return an owning signal handle, or an empty handle for a missing key.
std::shared_ptr< const DecodeFrame > FindFrame(const FrameKey &key) const
const std::vector< DecodeFrame > & GetFrames() const
PgnLookupResult FindFrameByPgn(std::uint32_t pgn) const
ByteOrder
Signal byte order used for runtime decoding.
ValueType
Signal numeric type.
Runtime-ready frame definition.
FrameKey GetKey() const
Return the stable normalized frame identifier.
std::optional< std::string > frameFormat
std::optional< std::uint32_t > cycleTimeMs
Runtime-ready signal definition.
ValueDescriptions valueDescriptions
std::vector< std::string > receivers
Multiplexing multiplexing
Stable frame identifier: normalized CAN ID and frame type.
Basic markers and optional explicit extended multiplexing condition.
std::shared_ptr< const DecodeFrame > definition