Generated foxygen documentation. Closes #1

This commit is contained in:
2026-06-14 20:51:56 -04:00
parent e2c07dde0d
commit dfec39d996
164 changed files with 25311 additions and 0 deletions

27
docs/latex/Makefile Normal file
View File

@@ -0,0 +1,27 @@
LATEX_CMD?=pdflatex
MKIDX_CMD?=makeindex
BIBTEX_CMD?=bibtex
LATEX_COUNT?=8
MANUAL_FILE?=refman
all: $(MANUAL_FILE).pdf
pdf: $(MANUAL_FILE).pdf
$(MANUAL_FILE).pdf: clean $(MANUAL_FILE).tex
$(LATEX_CMD) $(MANUAL_FILE)
$(MKIDX_CMD) $(MANUAL_FILE).idx
$(LATEX_CMD) $(MANUAL_FILE)
latex_count=$(LATEX_COUNT) ; \
while egrep -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\
do \
echo "Rerunning latex...." ;\
$(LATEX_CMD) $(MANUAL_FILE) ;\
latex_count=`expr $$latex_count - 1` ;\
done
$(MKIDX_CMD) $(MANUAL_FILE).idx
$(LATEX_CMD) $(MANUAL_FILE)
clean:
rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl $(MANUAL_FILE).pdf

View File

@@ -0,0 +1,2 @@
\hypertarget{README_8md}{}\doxysection{README.\+md File Reference}
\label{README_8md}\index{README.md@{README.md}}

19
docs/latex/annotated.tex Normal file
View File

@@ -0,0 +1,19 @@
\doxysection{Class List}
Here are the classes, structs, unions and interfaces with brief descriptions\+:\begin{DoxyCompactList}
\item\contentsline{section}{\mbox{\hyperlink{structDbcDatabase}{Dbc\+Database}} \\*Parsed DBC content stored in a simple internal form }{\pageref{structDbcDatabase}}{}
\item\contentsline{section}{\mbox{\hyperlink{classDbcDecodeBuilder}{Dbc\+Decode\+Builder}} \\*Converts parsed DBC data into runtime decode database }{\pageref{classDbcDecodeBuilder}}{}
\item\contentsline{section}{\mbox{\hyperlink{classDbcDecoder}{Dbc\+Decoder}} \\*Runtime CAN decoder using prebuilt decode database }{\pageref{classDbcDecoder}}{}
\item\contentsline{section}{\mbox{\hyperlink{classDbcParser}{Dbc\+Parser}} \\*Minimal DBC parser }{\pageref{classDbcParser}}{}
\item\contentsline{section}{\mbox{\hyperlink{classDbcTreeBuilder}{Dbc\+Tree\+Builder}} \\*Builds a simple tree from parsed DBC database }{\pageref{classDbcTreeBuilder}}{}
\item\contentsline{section}{\mbox{\hyperlink{structDecodeDatabase}{Decode\+Database}} \\*Runtime decode database with fast lookup by CAN ID }{\pageref{structDecodeDatabase}}{}
\item\contentsline{section}{\mbox{\hyperlink{structDecodedFrameValue}{Decoded\+Frame\+Value}} \\*Fully decoded frame }{\pageref{structDecodedFrameValue}}{}
\item\contentsline{section}{\mbox{\hyperlink{structDecodedSignalValue}{Decoded\+Signal\+Value}} \\*One decoded signal value }{\pageref{structDecodedSignalValue}}{}
\item\contentsline{section}{\mbox{\hyperlink{structDecodeFrame}{Decode\+Frame}} \\*Runtime-\/ready frame definition }{\pageref{structDecodeFrame}}{}
\item\contentsline{section}{\mbox{\hyperlink{structDecodeSignal}{Decode\+Signal}} \\*Runtime-\/ready signal definition }{\pageref{structDecodeSignal}}{}
\item\contentsline{section}{\mbox{\hyperlink{structFrameInfo}{Frame\+Info}} \\*Describes one CAN frame from a DBC file }{\pageref{structFrameInfo}}{}
\item\contentsline{section}{\mbox{\hyperlink{structFrameKey}{Frame\+Key}} \\*Key for fast frame lookup }{\pageref{structFrameKey}}{}
\item\contentsline{section}{\mbox{\hyperlink{structFrameKeyHasher}{Frame\+Key\+Hasher}} \\*Hasher for frame key }{\pageref{structFrameKeyHasher}}{}
\item\contentsline{section}{\mbox{\hyperlink{structRawCanFrame}{Raw\+Can\+Frame}} \\*Raw CAN frame used for runtime or trace decoding }{\pageref{structRawCanFrame}}{}
\item\contentsline{section}{\mbox{\hyperlink{structSignalInfo}{Signal\+Info}} \\*Describes one signal inside a DBC frame }{\pageref{structSignalInfo}}{}
\item\contentsline{section}{\mbox{\hyperlink{classTreeNode}{Tree\+Node}} \\*Tree node for later use in model/view or other hierarchy consumers }{\pageref{classTreeNode}}{}
\end{DoxyCompactList}

View File

@@ -0,0 +1,62 @@
\hypertarget{classDbcDecodeBuilder}{}\doxysection{Dbc\+Decode\+Builder Class Reference}
\label{classDbcDecodeBuilder}\index{DbcDecodeBuilder@{DbcDecodeBuilder}}
Converts parsed DBC data into runtime decode database.
{\ttfamily \#include $<$dbc\+\_\+decode\+\_\+builder.\+h$>$}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{structDecodeDatabase}{Decode\+Database}} \mbox{\hyperlink{classDbcDecodeBuilder_a2bc6386dfb5e58976c42e22c19ec471b}{Build}} (const \mbox{\hyperlink{structDbcDatabase}{Dbc\+Database}} \&source) const
\begin{DoxyCompactList}\small\item\em Build runtime decode database. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Converts parsed DBC data into runtime decode database.
Definition at line \mbox{\hyperlink{dbc__decode__builder_8h_source_l00021}{21}} of file \mbox{\hyperlink{dbc__decode__builder_8h_source}{dbc\+\_\+decode\+\_\+builder.\+h}}.
\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{classDbcDecodeBuilder_a2bc6386dfb5e58976c42e22c19ec471b}\label{classDbcDecodeBuilder_a2bc6386dfb5e58976c42e22c19ec471b}}
\index{DbcDecodeBuilder@{DbcDecodeBuilder}!Build@{Build}}
\index{Build@{Build}!DbcDecodeBuilder@{DbcDecodeBuilder}}
\doxysubsubsection{\texorpdfstring{Build()}{Build()}}
{\footnotesize\ttfamily \mbox{\hyperlink{structDecodeDatabase}{Decode\+Database}} Dbc\+Decode\+Builder\+::\+Build (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structDbcDatabase}{Dbc\+Database}} \&}]{source }\end{DoxyParamCaption}) const}
Build runtime decode database.
\begin{DoxyParams}{Parameters}
{\em source} & Parsed DBC database. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Runtime-\/ready decode database.
\end{DoxyReturn}
Definition at line \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{14}} of file \mbox{\hyperlink{dbc__decode__builder_8cpp_source}{dbc\+\_\+decode\+\_\+builder.\+cpp}}.
References \mbox{\hyperlink{decode__database_8h_source_l00043}{Decode\+Signal\+::byte\+Order}}, \mbox{\hyperlink{decode__database_8h_source_l00074}{Decode\+Frame\+::can\+Id}}, \mbox{\hyperlink{frame__info_8h_source_l00026}{Frame\+Info\+::can\+Id}}, \mbox{\hyperlink{decode__database_8h_source_l00051}{Decode\+Signal\+::comment}}, \mbox{\hyperlink{decode__database_8h_source_l00080}{Decode\+Frame\+::comment}}, \mbox{\hyperlink{frame__info_8h_source_l00032}{Frame\+Info\+::comment}}, \mbox{\hyperlink{signal__info_8h_source_l00034}{Signal\+Info\+::comment}}, \mbox{\hyperlink{decode__database_8h_source_l00076}{Decode\+Frame\+::dlc}}, \mbox{\hyperlink{frame__info_8h_source_l00030}{Frame\+Info\+::dlc}}, \mbox{\hyperlink{decode__database_8h_source_l00045}{Decode\+Signal\+::factor}}, \mbox{\hyperlink{signal__info_8h_source_l00028}{Signal\+Info\+::factor}}, \mbox{\hyperlink{decode__database_8h_source_l00134}{Decode\+Database\+::frame\+Index\+By\+Key}}, \mbox{\hyperlink{dbc__database_8h_source_l00023}{Dbc\+Database\+::frames}}, \mbox{\hyperlink{decode__database_8h_source_l00133}{Decode\+Database\+::frames}}, \mbox{\hyperlink{decode__database_8h_source_l00078}{Decode\+Frame\+::has\+Pgn}}, \mbox{\hyperlink{frame__info_8h_source_l00029}{Frame\+Info\+::has\+Pgn}}, \mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142baff97a9fdede09eaf6e1c8ec9f6a61dd5}{Intel}}, \mbox{\hyperlink{decode__database_8h_source_l00075}{Decode\+Frame\+::is\+Extended}}, \mbox{\hyperlink{frame__info_8h_source_l00027}{Frame\+Info\+::is\+Extended}}, \mbox{\hyperlink{signal__info_8h_source_l00026}{Signal\+Info\+::is\+Little\+Endian}}, \mbox{\hyperlink{signal__info_8h_source_l00027}{Signal\+Info\+::is\+Signed}}, \mbox{\hyperlink{decode__database_8h_source_l00042}{Decode\+Signal\+::length}}, \mbox{\hyperlink{signal__info_8h_source_l00025}{Signal\+Info\+::length}}, \mbox{\hyperlink{decode__database_8h_source_l00048}{Decode\+Signal\+::maximum}}, \mbox{\hyperlink{signal__info_8h_source_l00031}{Signal\+Info\+::maximum}}, \mbox{\hyperlink{decode__database_8h_source_l00047}{Decode\+Signal\+::minimum}}, \mbox{\hyperlink{signal__info_8h_source_l00030}{Signal\+Info\+::minimum}}, \mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142ba2ed1afe3c9215523e4272f46e6186b31}{Motorola}}, \mbox{\hyperlink{decode__database_8h_source_l00040}{Decode\+Signal\+::name}}, \mbox{\hyperlink{decode__database_8h_source_l00073}{Decode\+Frame\+::name}}, \mbox{\hyperlink{frame__info_8h_source_l00025}{Frame\+Info\+::name}}, \mbox{\hyperlink{signal__info_8h_source_l00023}{Signal\+Info\+::name}}, \mbox{\hyperlink{decode__database_8h_source_l00046}{Decode\+Signal\+::offset}}, \mbox{\hyperlink{signal__info_8h_source_l00029}{Signal\+Info\+::offset}}, \mbox{\hyperlink{decode__database_8h_source_l00077}{Decode\+Frame\+::pgn}}, \mbox{\hyperlink{frame__info_8h_source_l00028}{Frame\+Info\+::pgn}}, \mbox{\hyperlink{decode__database_8h_source_l00050}{Decode\+Signal\+::receivers}}, \mbox{\hyperlink{signal__info_8h_source_l00033}{Signal\+Info\+::receivers}}, \mbox{\hyperlink{decode__database_8h_source_l00081}{Decode\+Frame\+::signals}}, \mbox{\hyperlink{frame__info_8h_source_l00033}{Frame\+Info\+::signals}}, \mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1a71fed0c3428bf1a2e19af257c4bac379}{Signed}}, \mbox{\hyperlink{decode__database_8h_source_l00041}{Decode\+Signal\+::start\+Bit}}, \mbox{\hyperlink{signal__info_8h_source_l00024}{Signal\+Info\+::start\+Bit}}, \mbox{\hyperlink{decode__database_8h_source_l00079}{Decode\+Frame\+::transmitter}}, \mbox{\hyperlink{frame__info_8h_source_l00031}{Frame\+Info\+::transmitter}}, \mbox{\hyperlink{decode__database_8h_source_l00049}{Decode\+Signal\+::unit}}, \mbox{\hyperlink{signal__info_8h_source_l00032}{Signal\+Info\+::unit}}, \mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1aa1a914735b205424ba6c40b85528d78a}{Unsigned}}, and \mbox{\hyperlink{decode__database_8h_source_l00044}{Decode\+Signal\+::value\+Type}}.
Referenced by \mbox{\hyperlink{main_8cpp_source_l00097}{main()}}.
The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{dbc__decode__builder_8h}{dbc\+\_\+decode\+\_\+builder.\+h}}\item
\mbox{\hyperlink{dbc__decode__builder_8cpp}{dbc\+\_\+decode\+\_\+builder.\+cpp}}\end{DoxyCompactItemize}

View File

@@ -0,0 +1,171 @@
\hypertarget{classDbcDecoder}{}\doxysection{Dbc\+Decoder Class Reference}
\label{classDbcDecoder}\index{DbcDecoder@{DbcDecoder}}
Runtime CAN decoder using prebuilt decode database.
{\ttfamily \#include $<$dbc\+\_\+decoder.\+h$>$}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
const \mbox{\hyperlink{structDecodeFrame}{Decode\+Frame}} $\ast$ \mbox{\hyperlink{classDbcDecoder_ab2cfb2fb711c95d3a29365546b89f3da}{Find\+Frame}} (const \mbox{\hyperlink{structDecodeDatabase}{Decode\+Database}} \&database, std\+::uint32\+\_\+t can\+Id, bool is\+Extended) const
\begin{DoxyCompactList}\small\item\em Find frame definition by CAN ID. \end{DoxyCompactList}\item
\mbox{\hyperlink{structDecodedFrameValue}{Decoded\+Frame\+Value}} \mbox{\hyperlink{classDbcDecoder_a345951ffe5d943a70d3a1ea1f39e74f7}{Decode}} (const \mbox{\hyperlink{structDecodeDatabase}{Decode\+Database}} \&database, const \mbox{\hyperlink{structRawCanFrame}{Raw\+Can\+Frame}} \&frame) const
\begin{DoxyCompactList}\small\item\em Decode one raw CAN frame. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Static Private Member Functions}
\begin{DoxyCompactItemize}
\item
static bool \mbox{\hyperlink{classDbcDecoder_a2a8a99b1107543be6fd1b3f891130bf5}{Extract\+Unsigned}} (const std\+::vector$<$ std\+::uint8\+\_\+t $>$ \&data, const \mbox{\hyperlink{structDecodeSignal}{Decode\+Signal}} \&signal, std\+::uint64\+\_\+t \&value)
\item
static bool \mbox{\hyperlink{classDbcDecoder_aba130165c1a73bb4cd3a0454f415d872}{Extract\+Intel}} (const std\+::vector$<$ std\+::uint8\+\_\+t $>$ \&data, std\+::uint32\+\_\+t start\+Bit, std\+::uint32\+\_\+t length, std\+::uint64\+\_\+t \&value)
\item
static bool \mbox{\hyperlink{classDbcDecoder_aede690734148c3d538105d5a2f7ee0a9}{Extract\+Motorola}} (const std\+::vector$<$ std\+::uint8\+\_\+t $>$ \&data, std\+::uint32\+\_\+t start\+Bit, std\+::uint32\+\_\+t length, std\+::uint64\+\_\+t \&value)
\item
static std\+::int64\+\_\+t \mbox{\hyperlink{classDbcDecoder_a41e89e343338088d27e46773fa52df42}{Sign\+Extend}} (std\+::uint64\+\_\+t value, std\+::uint32\+\_\+t bit\+Length)
\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Runtime CAN decoder using prebuilt decode database.
Definition at line \mbox{\hyperlink{dbc__decoder_8h_source_l00070}{70}} of file \mbox{\hyperlink{dbc__decoder_8h_source}{dbc\+\_\+decoder.\+h}}.
\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{classDbcDecoder_a345951ffe5d943a70d3a1ea1f39e74f7}\label{classDbcDecoder_a345951ffe5d943a70d3a1ea1f39e74f7}}
\index{DbcDecoder@{DbcDecoder}!Decode@{Decode}}
\index{Decode@{Decode}!DbcDecoder@{DbcDecoder}}
\doxysubsubsection{\texorpdfstring{Decode()}{Decode()}}
{\footnotesize\ttfamily \mbox{\hyperlink{structDecodedFrameValue}{Decoded\+Frame\+Value}} Dbc\+Decoder\+::\+Decode (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structDecodeDatabase}{Decode\+Database}} \&}]{database, }\item[{const \mbox{\hyperlink{structRawCanFrame}{Raw\+Can\+Frame}} \&}]{frame }\end{DoxyParamCaption}) const}
Decode one raw CAN frame.
\begin{DoxyParams}{Parameters}
{\em database} & Runtime decode database. \\
\hline
{\em frame} & Raw CAN frame. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Decoded frame value.
\end{DoxyReturn}
Definition at line \mbox{\hyperlink{dbc__decoder_8cpp_source_l00031}{31}} of file \mbox{\hyperlink{dbc__decoder_8cpp_source}{dbc\+\_\+decoder.\+cpp}}.
References \mbox{\hyperlink{dbc__decoder_8h_source_l00024}{Raw\+Can\+Frame\+::can\+Id}}, \mbox{\hyperlink{dbc__decoder_8h_source_l00026}{Raw\+Can\+Frame\+::data}}, \mbox{\hyperlink{dbc__decoder_8h_source_l00039}{Decoded\+Signal\+Value\+::definition}}, \mbox{\hyperlink{dbc__decoder_8h_source_l00056}{Decoded\+Frame\+Value\+::definition}}, \mbox{\hyperlink{dbc__decoder_8cpp_source_l00070}{Extract\+Unsigned()}}, \mbox{\hyperlink{decode__database_8h_source_l00045}{Decode\+Signal\+::factor}}, \mbox{\hyperlink{dbc__decoder_8cpp_source_l00014}{Find\+Frame()}}, \mbox{\hyperlink{dbc__decoder_8h_source_l00025}{Raw\+Can\+Frame\+::is\+Extended}}, \mbox{\hyperlink{decode__database_8h_source_l00042}{Decode\+Signal\+::length}}, \mbox{\hyperlink{decode__database_8h_source_l00046}{Decode\+Signal\+::offset}}, \mbox{\hyperlink{dbc__decoder_8h_source_l00041}{Decoded\+Signal\+Value\+::physical\+Value}}, \mbox{\hyperlink{dbc__decoder_8h_source_l00040}{Decoded\+Signal\+Value\+::raw\+Value}}, \mbox{\hyperlink{dbc__decoder_8h_source_l00057}{Decoded\+Frame\+Value\+::signals}}, \mbox{\hyperlink{decode__database_8h_source_l00081}{Decode\+Frame\+::signals}}, \mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1a71fed0c3428bf1a2e19af257c4bac379}{Signed}}, \mbox{\hyperlink{dbc__decoder_8cpp_source_l00144}{Sign\+Extend()}}, \mbox{\hyperlink{dbc__decoder_8h_source_l00042}{Decoded\+Signal\+Value\+::valid}}, \mbox{\hyperlink{dbc__decoder_8h_source_l00058}{Decoded\+Frame\+Value\+::valid}}, and \mbox{\hyperlink{decode__database_8h_source_l00044}{Decode\+Signal\+::value\+Type}}.
Referenced by \mbox{\hyperlink{main_8cpp_source_l00097}{main()}}.
\mbox{\Hypertarget{classDbcDecoder_aba130165c1a73bb4cd3a0454f415d872}\label{classDbcDecoder_aba130165c1a73bb4cd3a0454f415d872}}
\index{DbcDecoder@{DbcDecoder}!ExtractIntel@{ExtractIntel}}
\index{ExtractIntel@{ExtractIntel}!DbcDecoder@{DbcDecoder}}
\doxysubsubsection{\texorpdfstring{ExtractIntel()}{ExtractIntel()}}
{\footnotesize\ttfamily bool Dbc\+Decoder\+::\+Extract\+Intel (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ std\+::uint8\+\_\+t $>$ \&}]{data, }\item[{std\+::uint32\+\_\+t}]{start\+Bit, }\item[{std\+::uint32\+\_\+t}]{length, }\item[{std\+::uint64\+\_\+t \&}]{value }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}, {\ttfamily [private]}}
Definition at line \mbox{\hyperlink{dbc__decoder_8cpp_source_l00082}{82}} of file \mbox{\hyperlink{dbc__decoder_8cpp_source}{dbc\+\_\+decoder.\+cpp}}.
Referenced by \mbox{\hyperlink{dbc__decoder_8cpp_source_l00070}{Extract\+Unsigned()}}.
\mbox{\Hypertarget{classDbcDecoder_aede690734148c3d538105d5a2f7ee0a9}\label{classDbcDecoder_aede690734148c3d538105d5a2f7ee0a9}}
\index{DbcDecoder@{DbcDecoder}!ExtractMotorola@{ExtractMotorola}}
\index{ExtractMotorola@{ExtractMotorola}!DbcDecoder@{DbcDecoder}}
\doxysubsubsection{\texorpdfstring{ExtractMotorola()}{ExtractMotorola()}}
{\footnotesize\ttfamily bool Dbc\+Decoder\+::\+Extract\+Motorola (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ std\+::uint8\+\_\+t $>$ \&}]{data, }\item[{std\+::uint32\+\_\+t}]{start\+Bit, }\item[{std\+::uint32\+\_\+t}]{length, }\item[{std\+::uint64\+\_\+t \&}]{value }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}, {\ttfamily [private]}}
Definition at line \mbox{\hyperlink{dbc__decoder_8cpp_source_l00105}{105}} of file \mbox{\hyperlink{dbc__decoder_8cpp_source}{dbc\+\_\+decoder.\+cpp}}.
Referenced by \mbox{\hyperlink{dbc__decoder_8cpp_source_l00070}{Extract\+Unsigned()}}.
\mbox{\Hypertarget{classDbcDecoder_a2a8a99b1107543be6fd1b3f891130bf5}\label{classDbcDecoder_a2a8a99b1107543be6fd1b3f891130bf5}}
\index{DbcDecoder@{DbcDecoder}!ExtractUnsigned@{ExtractUnsigned}}
\index{ExtractUnsigned@{ExtractUnsigned}!DbcDecoder@{DbcDecoder}}
\doxysubsubsection{\texorpdfstring{ExtractUnsigned()}{ExtractUnsigned()}}
{\footnotesize\ttfamily bool Dbc\+Decoder\+::\+Extract\+Unsigned (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ std\+::uint8\+\_\+t $>$ \&}]{data, }\item[{const \mbox{\hyperlink{structDecodeSignal}{Decode\+Signal}} \&}]{signal, }\item[{std\+::uint64\+\_\+t \&}]{value }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}, {\ttfamily [private]}}
Definition at line \mbox{\hyperlink{dbc__decoder_8cpp_source_l00070}{70}} of file \mbox{\hyperlink{dbc__decoder_8cpp_source}{dbc\+\_\+decoder.\+cpp}}.
References \mbox{\hyperlink{decode__database_8h_source_l00043}{Decode\+Signal\+::byte\+Order}}, \mbox{\hyperlink{dbc__decoder_8cpp_source_l00082}{Extract\+Intel()}}, \mbox{\hyperlink{dbc__decoder_8cpp_source_l00105}{Extract\+Motorola()}}, \mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142baff97a9fdede09eaf6e1c8ec9f6a61dd5}{Intel}}, \mbox{\hyperlink{decode__database_8h_source_l00042}{Decode\+Signal\+::length}}, and \mbox{\hyperlink{decode__database_8h_source_l00041}{Decode\+Signal\+::start\+Bit}}.
Referenced by \mbox{\hyperlink{dbc__decoder_8cpp_source_l00031}{Decode()}}.
\mbox{\Hypertarget{classDbcDecoder_ab2cfb2fb711c95d3a29365546b89f3da}\label{classDbcDecoder_ab2cfb2fb711c95d3a29365546b89f3da}}
\index{DbcDecoder@{DbcDecoder}!FindFrame@{FindFrame}}
\index{FindFrame@{FindFrame}!DbcDecoder@{DbcDecoder}}
\doxysubsubsection{\texorpdfstring{FindFrame()}{FindFrame()}}
{\footnotesize\ttfamily const \mbox{\hyperlink{structDecodeFrame}{Decode\+Frame}} $\ast$ Dbc\+Decoder\+::\+Find\+Frame (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structDecodeDatabase}{Decode\+Database}} \&}]{database, }\item[{std\+::uint32\+\_\+t}]{can\+Id, }\item[{bool}]{is\+Extended }\end{DoxyParamCaption}) const}
Find frame definition by CAN ID.
\begin{DoxyParams}{Parameters}
{\em database} & Runtime decode database. \\
\hline
{\em can\+Id} & Normalized CAN ID. \\
\hline
{\em is\+Extended} & true for extended frame. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Pointer to frame definition or nullptr.
\end{DoxyReturn}
Definition at line \mbox{\hyperlink{dbc__decoder_8cpp_source_l00014}{14}} of file \mbox{\hyperlink{dbc__decoder_8cpp_source}{dbc\+\_\+decoder.\+cpp}}.
References \mbox{\hyperlink{decode__database_8h_source_l00134}{Decode\+Database\+::frame\+Index\+By\+Key}}, and \mbox{\hyperlink{decode__database_8h_source_l00133}{Decode\+Database\+::frames}}.
Referenced by \mbox{\hyperlink{dbc__decoder_8cpp_source_l00031}{Decode()}}.
\mbox{\Hypertarget{classDbcDecoder_a41e89e343338088d27e46773fa52df42}\label{classDbcDecoder_a41e89e343338088d27e46773fa52df42}}
\index{DbcDecoder@{DbcDecoder}!SignExtend@{SignExtend}}
\index{SignExtend@{SignExtend}!DbcDecoder@{DbcDecoder}}
\doxysubsubsection{\texorpdfstring{SignExtend()}{SignExtend()}}
{\footnotesize\ttfamily std\+::int64\+\_\+t Dbc\+Decoder\+::\+Sign\+Extend (\begin{DoxyParamCaption}\item[{std\+::uint64\+\_\+t}]{value, }\item[{std\+::uint32\+\_\+t}]{bit\+Length }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}, {\ttfamily [private]}}
Definition at line \mbox{\hyperlink{dbc__decoder_8cpp_source_l00144}{144}} of file \mbox{\hyperlink{dbc__decoder_8cpp_source}{dbc\+\_\+decoder.\+cpp}}.
Referenced by \mbox{\hyperlink{dbc__decoder_8cpp_source_l00031}{Decode()}}.
The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{dbc__decoder_8h}{dbc\+\_\+decoder.\+h}}\item
\mbox{\hyperlink{dbc__decoder_8cpp}{dbc\+\_\+decoder.\+cpp}}\end{DoxyCompactItemize}

View File

@@ -0,0 +1,305 @@
\hypertarget{classDbcParser}{}\doxysection{Dbc\+Parser Class Reference}
\label{classDbcParser}\index{DbcParser@{DbcParser}}
Minimal DBC parser.
{\ttfamily \#include $<$dbc\+\_\+parser.\+h$>$}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{structDbcDatabase}{Dbc\+Database}} \mbox{\hyperlink{classDbcParser_aef72826942c9095d653fafa435855e56}{Parse\+File}} (const std\+::string \&file\+Path) const
\begin{DoxyCompactList}\small\item\em Parse DBC file. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Static Private Member Functions}
\begin{DoxyCompactItemize}
\item
static bool \mbox{\hyperlink{classDbcParser_ada086584d371c08dd93b75fb7965f13b}{Is\+Frame\+Line}} (const std\+::string \&line)
\item
static bool \mbox{\hyperlink{classDbcParser_ace3d3432a55707bc286a994aa205fed1}{Is\+Signal\+Line}} (const std\+::string \&line)
\item
static bool \mbox{\hyperlink{classDbcParser_ae3488a0a6c64dc95e4ed289e77579feb}{Is\+Comment\+Line}} (const std\+::string \&line)
\item
static std\+::string \mbox{\hyperlink{classDbcParser_a1ae77c4c356af3d7b01a30044366f02b}{Trim}} (const std\+::string \&text)
\item
static std\+::vector$<$ std\+::string $>$ \mbox{\hyperlink{classDbcParser_a0c1cc3c58f33473bf426a77b7a25c529}{Split\+Receivers}} (const std\+::string \&text)
\item
static std\+::uint32\+\_\+t \mbox{\hyperlink{classDbcParser_a8a7e8fc517e40beab87a8a1dbad2b324}{Try\+Extract\+Pgn}} (std\+::uint32\+\_\+t can\+Id, bool is\+Extended, bool \&has\+Pgn)
\item
static void \mbox{\hyperlink{classDbcParser_a94d140d9442e4989b5b2ea7662c2debf}{Normalize\+Can\+Id}} (std\+::uint32\+\_\+t raw\+Can\+Id, std\+::uint32\+\_\+t \&normalized\+Can\+Id, bool \&is\+Extended)
\item
static \mbox{\hyperlink{structFrameInfo}{Frame\+Info}} \mbox{\hyperlink{classDbcParser_a6d73bb1885e59aecd8202e93a7cd392a}{Parse\+Frame\+Line}} (const std\+::string \&line)
\item
static \mbox{\hyperlink{structSignalInfo}{Signal\+Info}} \mbox{\hyperlink{classDbcParser_a4cbce88d08b1f72903ecf1bce41de5d2}{Parse\+Signal\+Line}} (const std\+::string \&line)
\item
static void \mbox{\hyperlink{classDbcParser_aa662b34694fd8b3edd757f36cb064c5c}{Parse\+Comment\+Line}} (const std\+::string \&line, \mbox{\hyperlink{structDbcDatabase}{Dbc\+Database}} \&database)
\item
static \mbox{\hyperlink{structFrameInfo}{Frame\+Info}} $\ast$ \mbox{\hyperlink{classDbcParser_ab1fee32cb845573ce10949b4bec721f9}{Find\+Frame\+By\+Id}} (\mbox{\hyperlink{structDbcDatabase}{Dbc\+Database}} \&database, std\+::uint32\+\_\+t can\+Id, bool is\+Extended)
\item
static \mbox{\hyperlink{structSignalInfo}{Signal\+Info}} $\ast$ \mbox{\hyperlink{classDbcParser_ab7b95be4433c56cc855bedb08b96a71a}{Find\+Signal\+By\+Name}} (\mbox{\hyperlink{structFrameInfo}{Frame\+Info}} \&frame, const std\+::string \&signal\+Name)
\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Minimal DBC parser.
Supports\+:
\begin{DoxyItemize}
\item BO\+\_\+
\item SG\+\_\+
\item CM\+\_\+ BO\+\_\+
\item CM\+\_\+ SG\+\_\+
\end{DoxyItemize}
Ignores\+:
\begin{DoxyItemize}
\item attributes
\item multiplexing
\item value tables
\end{DoxyItemize}
Definition at line \mbox{\hyperlink{dbc__parser_8h_source_l00035}{35}} of file \mbox{\hyperlink{dbc__parser_8h_source}{dbc\+\_\+parser.\+h}}.
\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{classDbcParser_ab1fee32cb845573ce10949b4bec721f9}\label{classDbcParser_ab1fee32cb845573ce10949b4bec721f9}}
\index{DbcParser@{DbcParser}!FindFrameById@{FindFrameById}}
\index{FindFrameById@{FindFrameById}!DbcParser@{DbcParser}}
\doxysubsubsection{\texorpdfstring{FindFrameById()}{FindFrameById()}}
{\footnotesize\ttfamily \mbox{\hyperlink{structFrameInfo}{Frame\+Info}} $\ast$ Dbc\+Parser\+::\+Find\+Frame\+By\+Id (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structDbcDatabase}{Dbc\+Database}} \&}]{database, }\item[{std\+::uint32\+\_\+t}]{can\+Id, }\item[{bool}]{is\+Extended }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}, {\ttfamily [private]}}
Definition at line \mbox{\hyperlink{dbc__parser_8cpp_source_l00337}{337}} of file \mbox{\hyperlink{dbc__parser_8cpp_source}{dbc\+\_\+parser.\+cpp}}.
References \mbox{\hyperlink{dbc__database_8h_source_l00023}{Dbc\+Database\+::frames}}.
Referenced by \mbox{\hyperlink{dbc__parser_8cpp_source_l00274}{Parse\+Comment\+Line()}}.
\mbox{\Hypertarget{classDbcParser_ab7b95be4433c56cc855bedb08b96a71a}\label{classDbcParser_ab7b95be4433c56cc855bedb08b96a71a}}
\index{DbcParser@{DbcParser}!FindSignalByName@{FindSignalByName}}
\index{FindSignalByName@{FindSignalByName}!DbcParser@{DbcParser}}
\doxysubsubsection{\texorpdfstring{FindSignalByName()}{FindSignalByName()}}
{\footnotesize\ttfamily \mbox{\hyperlink{structSignalInfo}{Signal\+Info}} $\ast$ Dbc\+Parser\+::\+Find\+Signal\+By\+Name (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structFrameInfo}{Frame\+Info}} \&}]{frame, }\item[{const std\+::string \&}]{signal\+Name }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}, {\ttfamily [private]}}
Definition at line \mbox{\hyperlink{dbc__parser_8cpp_source_l00349}{349}} of file \mbox{\hyperlink{dbc__parser_8cpp_source}{dbc\+\_\+parser.\+cpp}}.
References \mbox{\hyperlink{frame__info_8h_source_l00033}{Frame\+Info\+::signals}}.
Referenced by \mbox{\hyperlink{dbc__parser_8cpp_source_l00274}{Parse\+Comment\+Line()}}.
\mbox{\Hypertarget{classDbcParser_ae3488a0a6c64dc95e4ed289e77579feb}\label{classDbcParser_ae3488a0a6c64dc95e4ed289e77579feb}}
\index{DbcParser@{DbcParser}!IsCommentLine@{IsCommentLine}}
\index{IsCommentLine@{IsCommentLine}!DbcParser@{DbcParser}}
\doxysubsubsection{\texorpdfstring{IsCommentLine()}{IsCommentLine()}}
{\footnotesize\ttfamily bool Dbc\+Parser\+::\+Is\+Comment\+Line (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{line }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}, {\ttfamily [private]}}
Definition at line \mbox{\hyperlink{dbc__parser_8cpp_source_l00079}{79}} of file \mbox{\hyperlink{dbc__parser_8cpp_source}{dbc\+\_\+parser.\+cpp}}.
Referenced by \mbox{\hyperlink{dbc__parser_8cpp_source_l00040}{Parse\+File()}}.
\mbox{\Hypertarget{classDbcParser_ada086584d371c08dd93b75fb7965f13b}\label{classDbcParser_ada086584d371c08dd93b75fb7965f13b}}
\index{DbcParser@{DbcParser}!IsFrameLine@{IsFrameLine}}
\index{IsFrameLine@{IsFrameLine}!DbcParser@{DbcParser}}
\doxysubsubsection{\texorpdfstring{IsFrameLine()}{IsFrameLine()}}
{\footnotesize\ttfamily bool Dbc\+Parser\+::\+Is\+Frame\+Line (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{line }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}, {\ttfamily [private]}}
Definition at line \mbox{\hyperlink{dbc__parser_8cpp_source_l00071}{71}} of file \mbox{\hyperlink{dbc__parser_8cpp_source}{dbc\+\_\+parser.\+cpp}}.
Referenced by \mbox{\hyperlink{dbc__parser_8cpp_source_l00040}{Parse\+File()}}.
\mbox{\Hypertarget{classDbcParser_ace3d3432a55707bc286a994aa205fed1}\label{classDbcParser_ace3d3432a55707bc286a994aa205fed1}}
\index{DbcParser@{DbcParser}!IsSignalLine@{IsSignalLine}}
\index{IsSignalLine@{IsSignalLine}!DbcParser@{DbcParser}}
\doxysubsubsection{\texorpdfstring{IsSignalLine()}{IsSignalLine()}}
{\footnotesize\ttfamily bool Dbc\+Parser\+::\+Is\+Signal\+Line (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{line }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}, {\ttfamily [private]}}
Definition at line \mbox{\hyperlink{dbc__parser_8cpp_source_l00075}{75}} of file \mbox{\hyperlink{dbc__parser_8cpp_source}{dbc\+\_\+parser.\+cpp}}.
Referenced by \mbox{\hyperlink{dbc__parser_8cpp_source_l00040}{Parse\+File()}}.
\mbox{\Hypertarget{classDbcParser_a94d140d9442e4989b5b2ea7662c2debf}\label{classDbcParser_a94d140d9442e4989b5b2ea7662c2debf}}
\index{DbcParser@{DbcParser}!NormalizeCanId@{NormalizeCanId}}
\index{NormalizeCanId@{NormalizeCanId}!DbcParser@{DbcParser}}
\doxysubsubsection{\texorpdfstring{NormalizeCanId()}{NormalizeCanId()}}
{\footnotesize\ttfamily void Dbc\+Parser\+::\+Normalize\+Can\+Id (\begin{DoxyParamCaption}\item[{std\+::uint32\+\_\+t}]{raw\+Can\+Id, }\item[{std\+::uint32\+\_\+t \&}]{normalized\+Can\+Id, }\item[{bool \&}]{is\+Extended }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}, {\ttfamily [private]}}
Definition at line \mbox{\hyperlink{dbc__parser_8cpp_source_l00101}{101}} of file \mbox{\hyperlink{dbc__parser_8cpp_source}{dbc\+\_\+parser.\+cpp}}.
Referenced by \mbox{\hyperlink{dbc__parser_8cpp_source_l00274}{Parse\+Comment\+Line()}}, and \mbox{\hyperlink{dbc__parser_8cpp_source_l00142}{Parse\+Frame\+Line()}}.
\mbox{\Hypertarget{classDbcParser_aa662b34694fd8b3edd757f36cb064c5c}\label{classDbcParser_aa662b34694fd8b3edd757f36cb064c5c}}
\index{DbcParser@{DbcParser}!ParseCommentLine@{ParseCommentLine}}
\index{ParseCommentLine@{ParseCommentLine}!DbcParser@{DbcParser}}
\doxysubsubsection{\texorpdfstring{ParseCommentLine()}{ParseCommentLine()}}
{\footnotesize\ttfamily void Dbc\+Parser\+::\+Parse\+Comment\+Line (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{line, }\item[{\mbox{\hyperlink{structDbcDatabase}{Dbc\+Database}} \&}]{database }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}, {\ttfamily [private]}}
Definition at line \mbox{\hyperlink{dbc__parser_8cpp_source_l00274}{274}} of file \mbox{\hyperlink{dbc__parser_8cpp_source}{dbc\+\_\+parser.\+cpp}}.
References \mbox{\hyperlink{frame__info_8h_source_l00032}{Frame\+Info\+::comment}}, \mbox{\hyperlink{signal__info_8h_source_l00034}{Signal\+Info\+::comment}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00337}{Find\+Frame\+By\+Id()}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00349}{Find\+Signal\+By\+Name()}}, and \mbox{\hyperlink{dbc__parser_8cpp_source_l00101}{Normalize\+Can\+Id()}}.
Referenced by \mbox{\hyperlink{dbc__parser_8cpp_source_l00040}{Parse\+File()}}.
\mbox{\Hypertarget{classDbcParser_aef72826942c9095d653fafa435855e56}\label{classDbcParser_aef72826942c9095d653fafa435855e56}}
\index{DbcParser@{DbcParser}!ParseFile@{ParseFile}}
\index{ParseFile@{ParseFile}!DbcParser@{DbcParser}}
\doxysubsubsection{\texorpdfstring{ParseFile()}{ParseFile()}}
{\footnotesize\ttfamily \mbox{\hyperlink{structDbcDatabase}{Dbc\+Database}} Dbc\+Parser\+::\+Parse\+File (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{file\+Path }\end{DoxyParamCaption}) const}
Parse DBC file.
\begin{DoxyParams}{Parameters}
{\em file\+Path} & Path to input file. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Parsed database.
\end{DoxyReturn}
\begin{DoxyExceptions}{Exceptions}
{\em std\+::runtime\+\_\+error} & on file or parse errors. \\
\hline
\end{DoxyExceptions}
Definition at line \mbox{\hyperlink{dbc__parser_8cpp_source_l00040}{40}} of file \mbox{\hyperlink{dbc__parser_8cpp_source}{dbc\+\_\+parser.\+cpp}}.
References \mbox{\hyperlink{dbc__database_8h_source_l00023}{Dbc\+Database\+::frames}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00079}{Is\+Comment\+Line()}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00071}{Is\+Frame\+Line()}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00075}{Is\+Signal\+Line()}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00274}{Parse\+Comment\+Line()}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00142}{Parse\+Frame\+Line()}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00181}{Parse\+Signal\+Line()}}, \mbox{\hyperlink{frame__info_8h_source_l00033}{Frame\+Info\+::signals}}, and \mbox{\hyperlink{dbc__parser_8cpp_source_l00083}{Trim()}}.
Referenced by \mbox{\hyperlink{main_8cpp_source_l00097}{main()}}.
\mbox{\Hypertarget{classDbcParser_a6d73bb1885e59aecd8202e93a7cd392a}\label{classDbcParser_a6d73bb1885e59aecd8202e93a7cd392a}}
\index{DbcParser@{DbcParser}!ParseFrameLine@{ParseFrameLine}}
\index{ParseFrameLine@{ParseFrameLine}!DbcParser@{DbcParser}}
\doxysubsubsection{\texorpdfstring{ParseFrameLine()}{ParseFrameLine()}}
{\footnotesize\ttfamily \mbox{\hyperlink{structFrameInfo}{Frame\+Info}} Dbc\+Parser\+::\+Parse\+Frame\+Line (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{line }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}, {\ttfamily [private]}}
Definition at line \mbox{\hyperlink{dbc__parser_8cpp_source_l00142}{142}} of file \mbox{\hyperlink{dbc__parser_8cpp_source}{dbc\+\_\+parser.\+cpp}}.
References \mbox{\hyperlink{frame__info_8h_source_l00026}{Frame\+Info\+::can\+Id}}, \mbox{\hyperlink{frame__info_8h_source_l00030}{Frame\+Info\+::dlc}}, \mbox{\hyperlink{frame__info_8h_source_l00029}{Frame\+Info\+::has\+Pgn}}, \mbox{\hyperlink{frame__info_8h_source_l00027}{Frame\+Info\+::is\+Extended}}, \mbox{\hyperlink{frame__info_8h_source_l00025}{Frame\+Info\+::name}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00101}{Normalize\+Can\+Id()}}, \mbox{\hyperlink{frame__info_8h_source_l00028}{Frame\+Info\+::pgn}}, \mbox{\hyperlink{frame__info_8h_source_l00031}{Frame\+Info\+::transmitter}}, and \mbox{\hyperlink{dbc__parser_8cpp_source_l00118}{Try\+Extract\+Pgn()}}.
Referenced by \mbox{\hyperlink{dbc__parser_8cpp_source_l00040}{Parse\+File()}}.
\mbox{\Hypertarget{classDbcParser_a4cbce88d08b1f72903ecf1bce41de5d2}\label{classDbcParser_a4cbce88d08b1f72903ecf1bce41de5d2}}
\index{DbcParser@{DbcParser}!ParseSignalLine@{ParseSignalLine}}
\index{ParseSignalLine@{ParseSignalLine}!DbcParser@{DbcParser}}
\doxysubsubsection{\texorpdfstring{ParseSignalLine()}{ParseSignalLine()}}
{\footnotesize\ttfamily \mbox{\hyperlink{structSignalInfo}{Signal\+Info}} Dbc\+Parser\+::\+Parse\+Signal\+Line (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{line }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}, {\ttfamily [private]}}
Definition at line \mbox{\hyperlink{dbc__parser_8cpp_source_l00181}{181}} of file \mbox{\hyperlink{dbc__parser_8cpp_source}{dbc\+\_\+parser.\+cpp}}.
References \mbox{\hyperlink{signal__info_8h_source_l00028}{Signal\+Info\+::factor}}, \mbox{\hyperlink{signal__info_8h_source_l00026}{Signal\+Info\+::is\+Little\+Endian}}, \mbox{\hyperlink{signal__info_8h_source_l00027}{Signal\+Info\+::is\+Signed}}, \mbox{\hyperlink{signal__info_8h_source_l00025}{Signal\+Info\+::length}}, \mbox{\hyperlink{signal__info_8h_source_l00031}{Signal\+Info\+::maximum}}, \mbox{\hyperlink{signal__info_8h_source_l00030}{Signal\+Info\+::minimum}}, \mbox{\hyperlink{signal__info_8h_source_l00023}{Signal\+Info\+::name}}, \mbox{\hyperlink{signal__info_8h_source_l00029}{Signal\+Info\+::offset}}, \mbox{\hyperlink{signal__info_8h_source_l00033}{Signal\+Info\+::receivers}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00087}{Split\+Receivers()}}, \mbox{\hyperlink{signal__info_8h_source_l00024}{Signal\+Info\+::start\+Bit}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00025}{anonymous\+\_\+namespace\{dbc\+\_\+parser.\+cpp\}\+::\+Trim\+Text()}}, and \mbox{\hyperlink{signal__info_8h_source_l00032}{Signal\+Info\+::unit}}.
Referenced by \mbox{\hyperlink{dbc__parser_8cpp_source_l00040}{Parse\+File()}}.
\mbox{\Hypertarget{classDbcParser_a0c1cc3c58f33473bf426a77b7a25c529}\label{classDbcParser_a0c1cc3c58f33473bf426a77b7a25c529}}
\index{DbcParser@{DbcParser}!SplitReceivers@{SplitReceivers}}
\index{SplitReceivers@{SplitReceivers}!DbcParser@{DbcParser}}
\doxysubsubsection{\texorpdfstring{SplitReceivers()}{SplitReceivers()}}
{\footnotesize\ttfamily std\+::vector$<$ std\+::string $>$ Dbc\+Parser\+::\+Split\+Receivers (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{text }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}, {\ttfamily [private]}}
Definition at line \mbox{\hyperlink{dbc__parser_8cpp_source_l00087}{87}} of file \mbox{\hyperlink{dbc__parser_8cpp_source}{dbc\+\_\+parser.\+cpp}}.
References \mbox{\hyperlink{dbc__parser_8cpp_source_l00025}{anonymous\+\_\+namespace\{dbc\+\_\+parser.\+cpp\}\+::\+Trim\+Text()}}.
Referenced by \mbox{\hyperlink{dbc__parser_8cpp_source_l00181}{Parse\+Signal\+Line()}}.
\mbox{\Hypertarget{classDbcParser_a1ae77c4c356af3d7b01a30044366f02b}\label{classDbcParser_a1ae77c4c356af3d7b01a30044366f02b}}
\index{DbcParser@{DbcParser}!Trim@{Trim}}
\index{Trim@{Trim}!DbcParser@{DbcParser}}
\doxysubsubsection{\texorpdfstring{Trim()}{Trim()}}
{\footnotesize\ttfamily std\+::string Dbc\+Parser\+::\+Trim (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{text }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}, {\ttfamily [private]}}
Definition at line \mbox{\hyperlink{dbc__parser_8cpp_source_l00083}{83}} of file \mbox{\hyperlink{dbc__parser_8cpp_source}{dbc\+\_\+parser.\+cpp}}.
References \mbox{\hyperlink{dbc__parser_8cpp_source_l00025}{anonymous\+\_\+namespace\{dbc\+\_\+parser.\+cpp\}\+::\+Trim\+Text()}}.
Referenced by \mbox{\hyperlink{dbc__parser_8cpp_source_l00040}{Parse\+File()}}.
\mbox{\Hypertarget{classDbcParser_a8a7e8fc517e40beab87a8a1dbad2b324}\label{classDbcParser_a8a7e8fc517e40beab87a8a1dbad2b324}}
\index{DbcParser@{DbcParser}!TryExtractPgn@{TryExtractPgn}}
\index{TryExtractPgn@{TryExtractPgn}!DbcParser@{DbcParser}}
\doxysubsubsection{\texorpdfstring{TryExtractPgn()}{TryExtractPgn()}}
{\footnotesize\ttfamily std\+::uint32\+\_\+t Dbc\+Parser\+::\+Try\+Extract\+Pgn (\begin{DoxyParamCaption}\item[{std\+::uint32\+\_\+t}]{can\+Id, }\item[{bool}]{is\+Extended, }\item[{bool \&}]{has\+Pgn }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}, {\ttfamily [private]}}
Definition at line \mbox{\hyperlink{dbc__parser_8cpp_source_l00118}{118}} of file \mbox{\hyperlink{dbc__parser_8cpp_source}{dbc\+\_\+parser.\+cpp}}.
Referenced by \mbox{\hyperlink{dbc__parser_8cpp_source_l00142}{Parse\+Frame\+Line()}}.
The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{dbc__parser_8h}{dbc\+\_\+parser.\+h}}\item
\mbox{\hyperlink{dbc__parser_8cpp}{dbc\+\_\+parser.\+cpp}}\end{DoxyCompactItemize}

View File

@@ -0,0 +1,62 @@
\hypertarget{classDbcTreeBuilder}{}\doxysection{Dbc\+Tree\+Builder Class Reference}
\label{classDbcTreeBuilder}\index{DbcTreeBuilder@{DbcTreeBuilder}}
Builds a simple tree from parsed DBC database.
{\ttfamily \#include $<$dbc\+\_\+tree\+\_\+builder.\+h$>$}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
std\+::unique\+\_\+ptr$<$ \mbox{\hyperlink{classTreeNode}{Tree\+Node}} $>$ \mbox{\hyperlink{classDbcTreeBuilder_a7e57d067d831b14b383947fd125edd4b}{Build}} (const \mbox{\hyperlink{structDbcDatabase}{Dbc\+Database}} \&database) const
\begin{DoxyCompactList}\small\item\em Build tree representation of parsed DBC data. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Builds a simple tree from parsed DBC database.
Definition at line \mbox{\hyperlink{dbc__tree__builder_8h_source_l00023}{23}} of file \mbox{\hyperlink{dbc__tree__builder_8h_source}{dbc\+\_\+tree\+\_\+builder.\+h}}.
\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{classDbcTreeBuilder_a7e57d067d831b14b383947fd125edd4b}\label{classDbcTreeBuilder_a7e57d067d831b14b383947fd125edd4b}}
\index{DbcTreeBuilder@{DbcTreeBuilder}!Build@{Build}}
\index{Build@{Build}!DbcTreeBuilder@{DbcTreeBuilder}}
\doxysubsubsection{\texorpdfstring{Build()}{Build()}}
{\footnotesize\ttfamily std\+::unique\+\_\+ptr$<$ \mbox{\hyperlink{classTreeNode}{Tree\+Node}} $>$ Dbc\+Tree\+Builder\+::\+Build (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structDbcDatabase}{Dbc\+Database}} \&}]{database }\end{DoxyParamCaption}) const}
Build tree representation of parsed DBC data.
\begin{DoxyParams}{Parameters}
{\em database} & Parsed database. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Root node of the tree.
\end{DoxyReturn}
Definition at line \mbox{\hyperlink{dbc__tree__builder_8cpp_source_l00014}{14}} of file \mbox{\hyperlink{dbc__tree__builder_8cpp_source}{dbc\+\_\+tree\+\_\+builder.\+cpp}}.
References \mbox{\hyperlink{dbc__database_8h_source_l00023}{Dbc\+Database\+::frames}}, and \mbox{\hyperlink{frame__info_8h_source_l00033}{Frame\+Info\+::signals}}.
Referenced by \mbox{\hyperlink{main_8cpp_source_l00097}{main()}}.
The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{dbc__tree__builder_8h}{dbc\+\_\+tree\+\_\+builder.\+h}}\item
\mbox{\hyperlink{dbc__tree__builder_8cpp}{dbc\+\_\+tree\+\_\+builder.\+cpp}}\end{DoxyCompactItemize}

View File

@@ -0,0 +1,449 @@
\hypertarget{classTreeNode}{}\doxysection{Tree\+Node Class Reference}
\label{classTreeNode}\index{TreeNode@{TreeNode}}
Tree node for later use in model/view or other hierarchy consumers.
{\ttfamily \#include $<$tree\+\_\+node.\+h$>$}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{classTreeNode_a984a98d5ccf7ef1f5a18094c6821f35d}{Tree\+Node}} ()
\begin{DoxyCompactList}\small\item\em Create root node. \end{DoxyCompactList}\item
\mbox{\hyperlink{classTreeNode_a8e38dd591d8801d7ee3a7dbad90c67fc}{Tree\+Node}} (const \mbox{\hyperlink{structFrameInfo}{Frame\+Info}} \&frame)
\begin{DoxyCompactList}\small\item\em Create frame node. \end{DoxyCompactList}\item
\mbox{\hyperlink{classTreeNode_ab9f00f5253d56461bb2d420fd639c5ae}{Tree\+Node}} (const \mbox{\hyperlink{structSignalInfo}{Signal\+Info}} \&signal)
\begin{DoxyCompactList}\small\item\em Create signal node. \end{DoxyCompactList}\item
\mbox{\hyperlink{classTreeNode_a89eb1eb0e25fccaa83c780b85f95b570}{$\sim$\+Tree\+Node}} ()=default
\item
\mbox{\hyperlink{classTreeNode_a4d3054a033accf3e38ea132002fc35ff}{Tree\+Node}} (const \mbox{\hyperlink{classTreeNode}{Tree\+Node}} \&)=delete
\item
\mbox{\hyperlink{classTreeNode}{Tree\+Node}} \& \mbox{\hyperlink{classTreeNode_ad6ce97dcf532b452d520452b6d000daa}{operator=}} (const \mbox{\hyperlink{classTreeNode}{Tree\+Node}} \&)=delete
\item
\mbox{\hyperlink{classTreeNode_a35724af755b5d0c43de40a723ef81ec1}{Tree\+Node}} (\mbox{\hyperlink{classTreeNode}{Tree\+Node}} \&\&)=default
\item
\mbox{\hyperlink{classTreeNode}{Tree\+Node}} \& \mbox{\hyperlink{classTreeNode_a88fbcbec9c64d888b19c5edb95059a95}{operator=}} (\mbox{\hyperlink{classTreeNode}{Tree\+Node}} \&\&)=default
\item
void \mbox{\hyperlink{classTreeNode_a6161f2ebb92184eab4215d121870e788}{Add\+Child}} (std\+::unique\+\_\+ptr$<$ \mbox{\hyperlink{classTreeNode}{Tree\+Node}} $>$ child)
\begin{DoxyCompactList}\small\item\em Add child node. \end{DoxyCompactList}\item
std\+::size\+\_\+t \mbox{\hyperlink{classTreeNode_abdd82460187dca8d3e5d66f5d5c529ea}{Get\+Child\+Count}} () const
\begin{DoxyCompactList}\small\item\em Get child count. \end{DoxyCompactList}\item
const \mbox{\hyperlink{classTreeNode}{Tree\+Node}} $\ast$ \mbox{\hyperlink{classTreeNode_a4727ff801a2d1b9323c5ae50a35457a6}{Get\+Child}} (std\+::size\+\_\+t index) const
\begin{DoxyCompactList}\small\item\em Get child by index. \end{DoxyCompactList}\item
\mbox{\hyperlink{classTreeNode}{Tree\+Node}} $\ast$ \mbox{\hyperlink{classTreeNode_a81047bd7d2a4cc96b9ef5e20d0d63b5f}{Get\+Child}} (std\+::size\+\_\+t index)
\begin{DoxyCompactList}\small\item\em Get mutable child by index. \end{DoxyCompactList}\item
\mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16}{Node\+Type}} \mbox{\hyperlink{classTreeNode_afa2f4b0aafa12d3d41ed00df8e0250c9}{Get\+Type}} () const
\begin{DoxyCompactList}\small\item\em Get node type. \end{DoxyCompactList}\item
const std\+::string \& \mbox{\hyperlink{classTreeNode_aaac5b8d9dc9e5ae1f367d1adbcf20e18}{Get\+Name}} () const
\begin{DoxyCompactList}\small\item\em Get display name. \end{DoxyCompactList}\item
const \mbox{\hyperlink{structFrameInfo}{Frame\+Info}} $\ast$ \mbox{\hyperlink{classTreeNode_afc503b40004764163605d6dbdb4ef811}{Get\+Frame}} () const
\begin{DoxyCompactList}\small\item\em Get frame payload if node is frame. \end{DoxyCompactList}\item
const \mbox{\hyperlink{structSignalInfo}{Signal\+Info}} $\ast$ \mbox{\hyperlink{classTreeNode_a226518612d0d00b5988a2c44fc21d3f1}{Get\+Signal}} () const
\begin{DoxyCompactList}\small\item\em Get signal payload if node is signal. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16}{Node\+Type}} \mbox{\hyperlink{classTreeNode_a04bccab9e60a6a78777cd7dfec52d224}{m\+\_\+type}}
\item
std\+::string \mbox{\hyperlink{classTreeNode_ac0ddcb8370e6b51e2d3de6b8211a47f8}{m\+\_\+name}}
\item
std\+::vector$<$ std\+::unique\+\_\+ptr$<$ \mbox{\hyperlink{classTreeNode}{Tree\+Node}} $>$ $>$ \mbox{\hyperlink{classTreeNode_a1bd61f40df6d36e61021063e3816a351}{m\+\_\+children}}
\item
std\+::unique\+\_\+ptr$<$ \mbox{\hyperlink{structFrameInfo}{Frame\+Info}} $>$ \mbox{\hyperlink{classTreeNode_a77ee6aa80774d67ba442a66b45c798c2}{m\+\_\+frame}}
\item
std\+::unique\+\_\+ptr$<$ \mbox{\hyperlink{structSignalInfo}{Signal\+Info}} $>$ \mbox{\hyperlink{classTreeNode_ae658355007bc9303f7bfae3bb3ec8386}{m\+\_\+signal}}
\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Tree node for later use in model/view or other hierarchy consumers.
Definition at line \mbox{\hyperlink{tree__node_8h_source_l00035}{35}} of file \mbox{\hyperlink{tree__node_8h_source}{tree\+\_\+node.\+h}}.
\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classTreeNode_a984a98d5ccf7ef1f5a18094c6821f35d}\label{classTreeNode_a984a98d5ccf7ef1f5a18094c6821f35d}}
\index{TreeNode@{TreeNode}!TreeNode@{TreeNode}}
\index{TreeNode@{TreeNode}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{TreeNode()}{TreeNode()}\hspace{0.1cm}{\footnotesize\ttfamily [1/5]}}
{\footnotesize\ttfamily Tree\+Node\+::\+Tree\+Node (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
Create root node.
Definition at line \mbox{\hyperlink{tree__node_8cpp_source_l00014}{14}} of file \mbox{\hyperlink{tree__node_8cpp_source}{tree\+\_\+node.\+cpp}}.
References \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16afa03eb688ad8aa1db593d33dabd89bad}{Root}}.
\mbox{\Hypertarget{classTreeNode_a8e38dd591d8801d7ee3a7dbad90c67fc}\label{classTreeNode_a8e38dd591d8801d7ee3a7dbad90c67fc}}
\index{TreeNode@{TreeNode}!TreeNode@{TreeNode}}
\index{TreeNode@{TreeNode}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{TreeNode()}{TreeNode()}\hspace{0.1cm}{\footnotesize\ttfamily [2/5]}}
{\footnotesize\ttfamily Tree\+Node\+::\+Tree\+Node (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structFrameInfo}{Frame\+Info}} \&}]{frame }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [explicit]}}
Create frame node.
\begin{DoxyParams}{Parameters}
{\em frame} & Frame payload. \\
\hline
\end{DoxyParams}
Definition at line \mbox{\hyperlink{tree__node_8cpp_source_l00022}{22}} of file \mbox{\hyperlink{tree__node_8cpp_source}{tree\+\_\+node.\+cpp}}.
References \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16a3bb3e8c8a24891ba0f7608bcc96f8b0a}{Frame}}.
\mbox{\Hypertarget{classTreeNode_ab9f00f5253d56461bb2d420fd639c5ae}\label{classTreeNode_ab9f00f5253d56461bb2d420fd639c5ae}}
\index{TreeNode@{TreeNode}!TreeNode@{TreeNode}}
\index{TreeNode@{TreeNode}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{TreeNode()}{TreeNode()}\hspace{0.1cm}{\footnotesize\ttfamily [3/5]}}
{\footnotesize\ttfamily Tree\+Node\+::\+Tree\+Node (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structSignalInfo}{Signal\+Info}} \&}]{signal }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [explicit]}}
Create signal node.
\begin{DoxyParams}{Parameters}
{\em signal} & Signal payload. \\
\hline
\end{DoxyParams}
Definition at line \mbox{\hyperlink{tree__node_8cpp_source_l00030}{30}} of file \mbox{\hyperlink{tree__node_8cpp_source}{tree\+\_\+node.\+cpp}}.
References \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16a085fea7abdc5d904fe69a3081efd7398}{Signal}}.
\mbox{\Hypertarget{classTreeNode_a89eb1eb0e25fccaa83c780b85f95b570}\label{classTreeNode_a89eb1eb0e25fccaa83c780b85f95b570}}
\index{TreeNode@{TreeNode}!````~TreeNode@{$\sim$TreeNode}}
\index{````~TreeNode@{$\sim$TreeNode}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{$\sim$TreeNode()}{~TreeNode()}}
{\footnotesize\ttfamily Tree\+Node\+::$\sim$\+Tree\+Node (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}}
\mbox{\Hypertarget{classTreeNode_a4d3054a033accf3e38ea132002fc35ff}\label{classTreeNode_a4d3054a033accf3e38ea132002fc35ff}}
\index{TreeNode@{TreeNode}!TreeNode@{TreeNode}}
\index{TreeNode@{TreeNode}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{TreeNode()}{TreeNode()}\hspace{0.1cm}{\footnotesize\ttfamily [4/5]}}
{\footnotesize\ttfamily Tree\+Node\+::\+Tree\+Node (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classTreeNode}{Tree\+Node}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}}
\mbox{\Hypertarget{classTreeNode_a35724af755b5d0c43de40a723ef81ec1}\label{classTreeNode_a35724af755b5d0c43de40a723ef81ec1}}
\index{TreeNode@{TreeNode}!TreeNode@{TreeNode}}
\index{TreeNode@{TreeNode}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{TreeNode()}{TreeNode()}\hspace{0.1cm}{\footnotesize\ttfamily [5/5]}}
{\footnotesize\ttfamily Tree\+Node\+::\+Tree\+Node (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classTreeNode}{Tree\+Node}} \&\&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}}
\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{classTreeNode_a6161f2ebb92184eab4215d121870e788}\label{classTreeNode_a6161f2ebb92184eab4215d121870e788}}
\index{TreeNode@{TreeNode}!AddChild@{AddChild}}
\index{AddChild@{AddChild}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{AddChild()}{AddChild()}}
{\footnotesize\ttfamily void Tree\+Node\+::\+Add\+Child (\begin{DoxyParamCaption}\item[{std\+::unique\+\_\+ptr$<$ \mbox{\hyperlink{classTreeNode}{Tree\+Node}} $>$}]{child }\end{DoxyParamCaption})}
Add child node.
\begin{DoxyParams}{Parameters}
{\em child} & Child node to add. \\
\hline
\end{DoxyParams}
Definition at line \mbox{\hyperlink{tree__node_8cpp_source_l00038}{38}} of file \mbox{\hyperlink{tree__node_8cpp_source}{tree\+\_\+node.\+cpp}}.
References \mbox{\hyperlink{tree__node_8h_source_l00115}{m\+\_\+children}}.
\mbox{\Hypertarget{classTreeNode_a81047bd7d2a4cc96b9ef5e20d0d63b5f}\label{classTreeNode_a81047bd7d2a4cc96b9ef5e20d0d63b5f}}
\index{TreeNode@{TreeNode}!GetChild@{GetChild}}
\index{GetChild@{GetChild}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{GetChild()}{GetChild()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \mbox{\hyperlink{classTreeNode}{Tree\+Node}} $\ast$ Tree\+Node\+::\+Get\+Child (\begin{DoxyParamCaption}\item[{std\+::size\+\_\+t}]{index }\end{DoxyParamCaption})}
Get mutable child by index.
\begin{DoxyParams}{Parameters}
{\em index} & Child index. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Child pointer or nullptr if index is invalid.
\end{DoxyReturn}
Definition at line \mbox{\hyperlink{tree__node_8cpp_source_l00054}{54}} of file \mbox{\hyperlink{tree__node_8cpp_source}{tree\+\_\+node.\+cpp}}.
References \mbox{\hyperlink{tree__node_8h_source_l00115}{m\+\_\+children}}.
\mbox{\Hypertarget{classTreeNode_a4727ff801a2d1b9323c5ae50a35457a6}\label{classTreeNode_a4727ff801a2d1b9323c5ae50a35457a6}}
\index{TreeNode@{TreeNode}!GetChild@{GetChild}}
\index{GetChild@{GetChild}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{GetChild()}{GetChild()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily const \mbox{\hyperlink{classTreeNode}{Tree\+Node}} $\ast$ Tree\+Node\+::\+Get\+Child (\begin{DoxyParamCaption}\item[{std\+::size\+\_\+t}]{index }\end{DoxyParamCaption}) const}
Get child by index.
\begin{DoxyParams}{Parameters}
{\em index} & Child index. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Child pointer or nullptr if index is invalid.
\end{DoxyReturn}
Definition at line \mbox{\hyperlink{tree__node_8cpp_source_l00047}{47}} of file \mbox{\hyperlink{tree__node_8cpp_source}{tree\+\_\+node.\+cpp}}.
References \mbox{\hyperlink{tree__node_8h_source_l00115}{m\+\_\+children}}.
Referenced by \mbox{\hyperlink{main_8cpp_source_l00023}{Print\+Tree()}}.
\mbox{\Hypertarget{classTreeNode_abdd82460187dca8d3e5d66f5d5c529ea}\label{classTreeNode_abdd82460187dca8d3e5d66f5d5c529ea}}
\index{TreeNode@{TreeNode}!GetChildCount@{GetChildCount}}
\index{GetChildCount@{GetChildCount}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{GetChildCount()}{GetChildCount()}}
{\footnotesize\ttfamily std\+::size\+\_\+t Tree\+Node\+::\+Get\+Child\+Count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}
Get child count.
\begin{DoxyReturn}{Returns}
Number of children.
\end{DoxyReturn}
Definition at line \mbox{\hyperlink{tree__node_8cpp_source_l00043}{43}} of file \mbox{\hyperlink{tree__node_8cpp_source}{tree\+\_\+node.\+cpp}}.
References \mbox{\hyperlink{tree__node_8h_source_l00115}{m\+\_\+children}}.
Referenced by \mbox{\hyperlink{main_8cpp_source_l00023}{Print\+Tree()}}.
\mbox{\Hypertarget{classTreeNode_afc503b40004764163605d6dbdb4ef811}\label{classTreeNode_afc503b40004764163605d6dbdb4ef811}}
\index{TreeNode@{TreeNode}!GetFrame@{GetFrame}}
\index{GetFrame@{GetFrame}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{GetFrame()}{GetFrame()}}
{\footnotesize\ttfamily const \mbox{\hyperlink{structFrameInfo}{Frame\+Info}} $\ast$ Tree\+Node\+::\+Get\+Frame (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}
Get frame payload if node is frame.
\begin{DoxyReturn}{Returns}
Pointer to frame info or nullptr.
\end{DoxyReturn}
Definition at line \mbox{\hyperlink{tree__node_8cpp_source_l00069}{69}} of file \mbox{\hyperlink{tree__node_8cpp_source}{tree\+\_\+node.\+cpp}}.
References \mbox{\hyperlink{tree__node_8h_source_l00116}{m\+\_\+frame}}.
Referenced by \mbox{\hyperlink{main_8cpp_source_l00023}{Print\+Tree()}}.
\mbox{\Hypertarget{classTreeNode_aaac5b8d9dc9e5ae1f367d1adbcf20e18}\label{classTreeNode_aaac5b8d9dc9e5ae1f367d1adbcf20e18}}
\index{TreeNode@{TreeNode}!GetName@{GetName}}
\index{GetName@{GetName}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{GetName()}{GetName()}}
{\footnotesize\ttfamily const std\+::string \& Tree\+Node\+::\+Get\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}
Get display name.
\begin{DoxyReturn}{Returns}
Node name.
\end{DoxyReturn}
Definition at line \mbox{\hyperlink{tree__node_8cpp_source_l00065}{65}} of file \mbox{\hyperlink{tree__node_8cpp_source}{tree\+\_\+node.\+cpp}}.
References \mbox{\hyperlink{tree__node_8h_source_l00114}{m\+\_\+name}}.
Referenced by \mbox{\hyperlink{main_8cpp_source_l00023}{Print\+Tree()}}.
\mbox{\Hypertarget{classTreeNode_a226518612d0d00b5988a2c44fc21d3f1}\label{classTreeNode_a226518612d0d00b5988a2c44fc21d3f1}}
\index{TreeNode@{TreeNode}!GetSignal@{GetSignal}}
\index{GetSignal@{GetSignal}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{GetSignal()}{GetSignal()}}
{\footnotesize\ttfamily const \mbox{\hyperlink{structSignalInfo}{Signal\+Info}} $\ast$ Tree\+Node\+::\+Get\+Signal (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}
Get signal payload if node is signal.
\begin{DoxyReturn}{Returns}
Pointer to signal info or nullptr.
\end{DoxyReturn}
Definition at line \mbox{\hyperlink{tree__node_8cpp_source_l00073}{73}} of file \mbox{\hyperlink{tree__node_8cpp_source}{tree\+\_\+node.\+cpp}}.
References \mbox{\hyperlink{tree__node_8h_source_l00117}{m\+\_\+signal}}.
Referenced by \mbox{\hyperlink{main_8cpp_source_l00023}{Print\+Tree()}}.
\mbox{\Hypertarget{classTreeNode_afa2f4b0aafa12d3d41ed00df8e0250c9}\label{classTreeNode_afa2f4b0aafa12d3d41ed00df8e0250c9}}
\index{TreeNode@{TreeNode}!GetType@{GetType}}
\index{GetType@{GetType}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{GetType()}{GetType()}}
{\footnotesize\ttfamily \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16}{Node\+Type}} Tree\+Node\+::\+Get\+Type (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}
Get node type.
\begin{DoxyReturn}{Returns}
Node type.
\end{DoxyReturn}
Definition at line \mbox{\hyperlink{tree__node_8cpp_source_l00061}{61}} of file \mbox{\hyperlink{tree__node_8cpp_source}{tree\+\_\+node.\+cpp}}.
References \mbox{\hyperlink{tree__node_8h_source_l00113}{m\+\_\+type}}.
Referenced by \mbox{\hyperlink{main_8cpp_source_l00023}{Print\+Tree()}}.
\mbox{\Hypertarget{classTreeNode_ad6ce97dcf532b452d520452b6d000daa}\label{classTreeNode_ad6ce97dcf532b452d520452b6d000daa}}
\index{TreeNode@{TreeNode}!operator=@{operator=}}
\index{operator=@{operator=}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \mbox{\hyperlink{classTreeNode}{Tree\+Node}} \& Tree\+Node\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classTreeNode}{Tree\+Node}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}}
\mbox{\Hypertarget{classTreeNode_a88fbcbec9c64d888b19c5edb95059a95}\label{classTreeNode_a88fbcbec9c64d888b19c5edb95059a95}}
\index{TreeNode@{TreeNode}!operator=@{operator=}}
\index{operator=@{operator=}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \mbox{\hyperlink{classTreeNode}{Tree\+Node}} \& Tree\+Node\+::operator= (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classTreeNode}{Tree\+Node}} \&\&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}}
\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{classTreeNode_a1bd61f40df6d36e61021063e3816a351}\label{classTreeNode_a1bd61f40df6d36e61021063e3816a351}}
\index{TreeNode@{TreeNode}!m\_children@{m\_children}}
\index{m\_children@{m\_children}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{m\_children}{m\_children}}
{\footnotesize\ttfamily std\+::vector$<$std\+::unique\+\_\+ptr$<$\mbox{\hyperlink{classTreeNode}{Tree\+Node}}$>$ $>$ Tree\+Node\+::m\+\_\+children\hspace{0.3cm}{\ttfamily [private]}}
Definition at line \mbox{\hyperlink{tree__node_8h_source_l00115}{115}} of file \mbox{\hyperlink{tree__node_8h_source}{tree\+\_\+node.\+h}}.
Referenced by \mbox{\hyperlink{tree__node_8cpp_source_l00038}{Add\+Child()}}, \mbox{\hyperlink{tree__node_8cpp_source_l00047}{Get\+Child()}}, and \mbox{\hyperlink{tree__node_8cpp_source_l00043}{Get\+Child\+Count()}}.
\mbox{\Hypertarget{classTreeNode_a77ee6aa80774d67ba442a66b45c798c2}\label{classTreeNode_a77ee6aa80774d67ba442a66b45c798c2}}
\index{TreeNode@{TreeNode}!m\_frame@{m\_frame}}
\index{m\_frame@{m\_frame}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{m\_frame}{m\_frame}}
{\footnotesize\ttfamily std\+::unique\+\_\+ptr$<$\mbox{\hyperlink{structFrameInfo}{Frame\+Info}}$>$ Tree\+Node\+::m\+\_\+frame\hspace{0.3cm}{\ttfamily [private]}}
Definition at line \mbox{\hyperlink{tree__node_8h_source_l00116}{116}} of file \mbox{\hyperlink{tree__node_8h_source}{tree\+\_\+node.\+h}}.
Referenced by \mbox{\hyperlink{tree__node_8cpp_source_l00069}{Get\+Frame()}}.
\mbox{\Hypertarget{classTreeNode_ac0ddcb8370e6b51e2d3de6b8211a47f8}\label{classTreeNode_ac0ddcb8370e6b51e2d3de6b8211a47f8}}
\index{TreeNode@{TreeNode}!m\_name@{m\_name}}
\index{m\_name@{m\_name}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{m\_name}{m\_name}}
{\footnotesize\ttfamily std\+::string Tree\+Node\+::m\+\_\+name\hspace{0.3cm}{\ttfamily [private]}}
Definition at line \mbox{\hyperlink{tree__node_8h_source_l00114}{114}} of file \mbox{\hyperlink{tree__node_8h_source}{tree\+\_\+node.\+h}}.
Referenced by \mbox{\hyperlink{tree__node_8cpp_source_l00065}{Get\+Name()}}.
\mbox{\Hypertarget{classTreeNode_ae658355007bc9303f7bfae3bb3ec8386}\label{classTreeNode_ae658355007bc9303f7bfae3bb3ec8386}}
\index{TreeNode@{TreeNode}!m\_signal@{m\_signal}}
\index{m\_signal@{m\_signal}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{m\_signal}{m\_signal}}
{\footnotesize\ttfamily std\+::unique\+\_\+ptr$<$\mbox{\hyperlink{structSignalInfo}{Signal\+Info}}$>$ Tree\+Node\+::m\+\_\+signal\hspace{0.3cm}{\ttfamily [private]}}
Definition at line \mbox{\hyperlink{tree__node_8h_source_l00117}{117}} of file \mbox{\hyperlink{tree__node_8h_source}{tree\+\_\+node.\+h}}.
Referenced by \mbox{\hyperlink{tree__node_8cpp_source_l00073}{Get\+Signal()}}.
\mbox{\Hypertarget{classTreeNode_a04bccab9e60a6a78777cd7dfec52d224}\label{classTreeNode_a04bccab9e60a6a78777cd7dfec52d224}}
\index{TreeNode@{TreeNode}!m\_type@{m\_type}}
\index{m\_type@{m\_type}!TreeNode@{TreeNode}}
\doxysubsubsection{\texorpdfstring{m\_type}{m\_type}}
{\footnotesize\ttfamily \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16}{Node\+Type}} Tree\+Node\+::m\+\_\+type\hspace{0.3cm}{\ttfamily [private]}}
Definition at line \mbox{\hyperlink{tree__node_8h_source_l00113}{113}} of file \mbox{\hyperlink{tree__node_8h_source}{tree\+\_\+node.\+h}}.
Referenced by \mbox{\hyperlink{tree__node_8cpp_source_l00061}{Get\+Type()}}.
The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{tree__node_8h}{tree\+\_\+node.\+h}}\item
\mbox{\hyperlink{tree__node_8cpp}{tree\+\_\+node.\+cpp}}\end{DoxyCompactItemize}

View File

@@ -0,0 +1,23 @@
\hypertarget{dbc__database_8h}{}\doxysection{dbc\+\_\+database.\+h File Reference}
\label{dbc__database_8h}\index{dbc\_database.h@{dbc\_database.h}}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
{\ttfamily \#include $<$vector$>$}\newline
{\ttfamily \#include \char`\"{}frame\+\_\+info.\+h\char`\"{}}\newline
\doxysubsection*{Classes}
\begin{DoxyCompactItemize}
\item
struct \mbox{\hyperlink{structDbcDatabase}{Dbc\+Database}}
\begin{DoxyCompactList}\small\item\em Parsed DBC content stored in a simple internal form. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
Licensed under the MIT License. See LICENSE file in the project root for full license text.
Definition in file \mbox{\hyperlink{dbc__database_8h_source}{dbc\+\_\+database.\+h}}.

View File

@@ -0,0 +1,31 @@
\hypertarget{dbc__database_8h_source}{}\doxysection{dbc\+\_\+database.\+h}
\mbox{\hyperlink{dbc__database_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00001}00001 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00002}00002 \textcolor{comment}{ * @file dbc\_database.h}}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00003}00003 \textcolor{comment}{ * @brief}}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00005}00005 \textcolor{comment}{ * Created: 2026-\/03-\/13}}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00006}00006 \textcolor{comment}{ * Author: Deeaitch (Dim. Himro)}}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00008}00008 \textcolor{comment}{ * Licensed under the MIT License.}}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00009}00009 \textcolor{comment}{ * See LICENSE file in the project root for full license text.}}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00010}00010 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00011}00011 }
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00012}00012 \textcolor{preprocessor}{\#ifndef DBC\_DATABASE\_H}}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00013}00013 \textcolor{preprocessor}{\#define DBC\_DATABASE\_H}}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00014}00014 }
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00015}00015 \textcolor{preprocessor}{\#include <vector>}}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00016}00016 }
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00017}00017 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{frame__info_8h}{frame\_info.h}}"{}}}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00018}00018 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00019}00019 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00020}00020 \textcolor{comment}{ * @brief Parsed DBC content stored in a simple internal form.}}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00021}00021 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00022}\mbox{\hyperlink{structDbcDatabase}{00022}} \textcolor{keyword}{struct }\mbox{\hyperlink{structDbcDatabase}{DbcDatabase}} \{}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00023}\mbox{\hyperlink{structDbcDatabase_a2cade5d0234ee816132127542f8c612b}{00023}} std::vector<FrameInfo> \mbox{\hyperlink{structDbcDatabase_a2cade5d0234ee816132127542f8c612b}{frames}}; \textcolor{comment}{/**< All frames found in the DBC file. */}}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00024}00024 \};}
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00025}00025 }
\DoxyCodeLine{\Hypertarget{dbc__database_8h_source_l00026}00026 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* DBC\_DATABASE\_H */}\textcolor{preprocessor}{}}
\end{DoxyCode}

View File

@@ -0,0 +1,17 @@
\hypertarget{dbc__decode__builder_8cpp}{}\doxysection{dbc\+\_\+decode\+\_\+builder.\+cpp File Reference}
\label{dbc__decode__builder_8cpp}\index{dbc\_decode\_builder.cpp@{dbc\_decode\_builder.cpp}}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
{\ttfamily \#include \char`\"{}dbc\+\_\+decode\+\_\+builder.\+h\char`\"{}}\newline
\doxysubsection{Detailed Description}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
Licensed under the MIT License. See LICENSE file in the project root for full license text.
Definition in file \mbox{\hyperlink{dbc__decode__builder_8cpp_source}{dbc\+\_\+decode\+\_\+builder.\+cpp}}.

View File

@@ -0,0 +1,61 @@
\hypertarget{dbc__decode__builder_8cpp_source}{}\doxysection{dbc\+\_\+decode\+\_\+builder.\+cpp}
\mbox{\hyperlink{dbc__decode__builder_8cpp}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00001}00001 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00002}00002 \textcolor{comment}{ * @file dbc\_decode\_builder.cpp}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00003}00003 \textcolor{comment}{ * @brief}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00005}00005 \textcolor{comment}{ * Created: 2026-\/03-\/13}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00006}00006 \textcolor{comment}{ * Author: Deeaitch (Dim. Himro)}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00008}00008 \textcolor{comment}{ * Licensed under the MIT License.}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00009}00009 \textcolor{comment}{ * See LICENSE file in the project root for full license text.}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00010}00010 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00011}00011 }
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00012}00012 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{dbc__decode__builder_8h}{dbc\_decode\_builder.h}}"{}}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00013}00013 }
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00014}\mbox{\hyperlink{classDbcDecodeBuilder_a2bc6386dfb5e58976c42e22c19ec471b}{00014}} \mbox{\hyperlink{structDecodeDatabase}{DecodeDatabase}} \mbox{\hyperlink{classDbcDecodeBuilder_a2bc6386dfb5e58976c42e22c19ec471b}{DbcDecodeBuilder::Build}} (\textcolor{keyword}{const} \mbox{\hyperlink{structDbcDatabase}{DbcDatabase}} \&source)\textcolor{keyword}{ const }\{}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00015}00015 \mbox{\hyperlink{structDecodeDatabase}{DecodeDatabase}} result;}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00016}00016 }
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00017}00017 \textcolor{keywordflow}{for} (std::size\_t frameIndex = 0U; frameIndex < source.\mbox{\hyperlink{structDbcDatabase_a2cade5d0234ee816132127542f8c612b}{frames}}.size(); ++frameIndex) \{}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00018}00018 \textcolor{keyword}{const} \mbox{\hyperlink{structFrameInfo}{FrameInfo}} \&sourceFrame = source.\mbox{\hyperlink{structDbcDatabase_a2cade5d0234ee816132127542f8c612b}{frames}}[frameIndex];}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00019}00019 \mbox{\hyperlink{structDecodeFrame}{DecodeFrame}} targetFrame;}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00020}00020 }
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00021}00021 targetFrame.\mbox{\hyperlink{structDecodeFrame_aa0a7f8fd5bfde2148dfd0d838328f579}{name}} = sourceFrame.\mbox{\hyperlink{structFrameInfo_abb53a7f93ed7abc0ea1ae4a8ccafcdcb}{name}};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00022}00022 targetFrame.\mbox{\hyperlink{structDecodeFrame_a52e10215388db7df8b541b9d9909edcf}{canId}} = sourceFrame.\mbox{\hyperlink{structFrameInfo_af470b0742c05bfbffc31c51a68f5c05e}{canId}};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00023}00023 targetFrame.\mbox{\hyperlink{structDecodeFrame_a3ee2348d781f8f15aaf87e8dcf57ec41}{isExtended}} = sourceFrame.\mbox{\hyperlink{structFrameInfo_a34b726afaad2ac5c697fdb2ac070cdaf}{isExtended}};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00024}00024 targetFrame.\mbox{\hyperlink{structDecodeFrame_a51111ac13988be372d5673d12cf3e060}{dlc}} = sourceFrame.\mbox{\hyperlink{structFrameInfo_aa2b198ea0f55e560c123d35e7b3ecab9}{dlc}};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00025}00025 targetFrame.\mbox{\hyperlink{structDecodeFrame_a1d3c54055c0cbceb73adf551f7067f23}{pgn}} = sourceFrame.\mbox{\hyperlink{structFrameInfo_aee518b33f1000bf0b7f6e4a87474c943}{pgn}};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00026}00026 targetFrame.\mbox{\hyperlink{structDecodeFrame_a2551102670c4a540fced4c71da0b369d}{hasPgn}} = sourceFrame.\mbox{\hyperlink{structFrameInfo_a4737a5420213ad4304724e39f3a4e55d}{hasPgn}};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00027}00027 targetFrame.\mbox{\hyperlink{structDecodeFrame_ad78241dc40c793aabb8495b6989b81a9}{transmitter}} = sourceFrame.\mbox{\hyperlink{structFrameInfo_a92749ec3798d4211a505860fb389a9e8}{transmitter}};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00028}00028 targetFrame.\mbox{\hyperlink{structDecodeFrame_a25819ef907a32391af5c9f7cae9cdb22}{comment}} = sourceFrame.\mbox{\hyperlink{structFrameInfo_ace75121294f9d89b762080ab5643293c}{comment}};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00029}00029 }
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00030}00030 \textcolor{keywordflow}{for} (std::size\_t signalIndex = 0U; signalIndex < sourceFrame.\mbox{\hyperlink{structFrameInfo_a942937027f1af06536f98cc23b2bf6ce}{signals}}.size(); ++signalIndex) \{}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00031}00031 \textcolor{keyword}{const} \mbox{\hyperlink{structSignalInfo}{SignalInfo}} \&sourceSignal = sourceFrame.\mbox{\hyperlink{structFrameInfo_a942937027f1af06536f98cc23b2bf6ce}{signals}}[signalIndex];}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00032}00032 \mbox{\hyperlink{structDecodeSignal}{DecodeSignal}} targetSignal;}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00033}00033 }
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00034}00034 targetSignal.\mbox{\hyperlink{structDecodeSignal_a58cf5844f2272a23dcb9687d912e4780}{name}} = sourceSignal.\mbox{\hyperlink{structSignalInfo_a379e422a00cad56f896cacf60455b088}{name}};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00035}00035 targetSignal.\mbox{\hyperlink{structDecodeSignal_aaf5d7527ddf65b6355c2b4f3626df22d}{startBit}} = sourceSignal.\mbox{\hyperlink{structSignalInfo_ace290724f9801521609aedaa946d61f1}{startBit}};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00036}00036 targetSignal.\mbox{\hyperlink{structDecodeSignal_acd4ef5ee30421d117b5756854302debb}{length}} = sourceSignal.\mbox{\hyperlink{structSignalInfo_a1008b5201f71848177217bd52fb84baa}{length}};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00037}00037 targetSignal.\mbox{\hyperlink{structDecodeSignal_abdc4c4bb4a67a6d61d6ca81e8a52833d}{byteOrder}} = sourceSignal.\mbox{\hyperlink{structSignalInfo_af363b1563fb4c7cc8973f9a80c06846c}{isLittleEndian}} ? \mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142baff97a9fdede09eaf6e1c8ec9f6a61dd5}{ByteOrder::Intel}} : \mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142ba2ed1afe3c9215523e4272f46e6186b31}{ByteOrder::Motorola}};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00038}00038 targetSignal.\mbox{\hyperlink{structDecodeSignal_a9d37638129263b8902ba5be59baf39a8}{valueType}} = sourceSignal.\mbox{\hyperlink{structSignalInfo_a52a52b320eef92fbcb4626307f9a498f}{isSigned}} ? \mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1a71fed0c3428bf1a2e19af257c4bac379}{ValueType::Signed}} : \mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1aa1a914735b205424ba6c40b85528d78a}{ValueType::Unsigned}};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00039}00039 targetSignal.\mbox{\hyperlink{structDecodeSignal_a428c39913a366a8476dd291061354391}{factor}} = sourceSignal.\mbox{\hyperlink{structSignalInfo_ae4f78d99a2750aa564d7eba860171499}{factor}};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00040}00040 targetSignal.\mbox{\hyperlink{structDecodeSignal_a92db637af4e224a0ae70173050dc3f74}{offset}} = sourceSignal.\mbox{\hyperlink{structSignalInfo_ab7d0769f47aa540656b22e4e49db517e}{offset}};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00041}00041 targetSignal.\mbox{\hyperlink{structDecodeSignal_a0fb84e19a0ab3bd50b6f65c1075ebc25}{minimum}} = sourceSignal.\mbox{\hyperlink{structSignalInfo_ada7bf94fbeaa26bd08c73982b5af255b}{minimum}};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00042}00042 targetSignal.\mbox{\hyperlink{structDecodeSignal_a4a6ba87142a9badbf0ca830e9e709cb7}{maximum}} = sourceSignal.\mbox{\hyperlink{structSignalInfo_adf1c4331b9eabced0d7fdda40ff0eb52}{maximum}};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00043}00043 targetSignal.\mbox{\hyperlink{structDecodeSignal_a38eed9ca7581423fd8bfbedcffc12092}{unit}} = sourceSignal.\mbox{\hyperlink{structSignalInfo_a1f214f03e94ef5794de2d3367bfcbd01}{unit}};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00044}00044 targetSignal.\mbox{\hyperlink{structDecodeSignal_abdbae62a64d2df716bf60c6b67b30eaa}{receivers}} = sourceSignal.\mbox{\hyperlink{structSignalInfo_a2c95562fd0b29327a7fd7b1e6feee7f3}{receivers}};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00045}00045 targetSignal.\mbox{\hyperlink{structDecodeSignal_ae28c905d4a2bc86419c2a8361bfea473}{comment}} = sourceSignal.\mbox{\hyperlink{structSignalInfo_ac99ba7563a5dad01e39c4257216953f5}{comment}};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00046}00046 }
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00047}00047 targetFrame.\mbox{\hyperlink{structDecodeFrame_a372afd9e74f1ae33f85cb4acfd3e2036}{signals}}.push\_back (targetSignal);}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00048}00048 \}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00049}00049 }
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00050}00050 result.\mbox{\hyperlink{structDecodeDatabase_a2bd4ddfc2602c1de4e12a373bfc93072}{frames}}.push\_back (targetFrame);}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00051}00051 result.\mbox{\hyperlink{structDecodeDatabase_ae4fd1351008bb0dce337821a849100c5}{frameIndexByKey}}[\mbox{\hyperlink{structFrameKey}{FrameKey}} (targetFrame.\mbox{\hyperlink{structDecodeFrame_a52e10215388db7df8b541b9d9909edcf}{canId}}, targetFrame.\mbox{\hyperlink{structDecodeFrame_a3ee2348d781f8f15aaf87e8dcf57ec41}{isExtended}})] =}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00052}00052 result.\mbox{\hyperlink{structDecodeDatabase_a2bd4ddfc2602c1de4e12a373bfc93072}{frames}}.size() -\/ 1U;}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00053}00053 \}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00054}00054 }
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00055}00055 \textcolor{keywordflow}{return} result;}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8cpp_source_l00056}00056 \}}
\end{DoxyCode}

View File

@@ -0,0 +1,23 @@
\hypertarget{dbc__decode__builder_8h}{}\doxysection{dbc\+\_\+decode\+\_\+builder.\+h File Reference}
\label{dbc__decode__builder_8h}\index{dbc\_decode\_builder.h@{dbc\_decode\_builder.h}}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
{\ttfamily \#include \char`\"{}dbc\+\_\+database.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}decode\+\_\+database.\+h\char`\"{}}\newline
\doxysubsection*{Classes}
\begin{DoxyCompactItemize}
\item
class \mbox{\hyperlink{classDbcDecodeBuilder}{Dbc\+Decode\+Builder}}
\begin{DoxyCompactList}\small\item\em Converts parsed DBC data into runtime decode database. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
Licensed under the MIT License. See LICENSE file in the project root for full license text.
Definition in file \mbox{\hyperlink{dbc__decode__builder_8h_source}{dbc\+\_\+decode\+\_\+builder.\+h}}.

View File

@@ -0,0 +1,36 @@
\hypertarget{dbc__decode__builder_8h_source}{}\doxysection{dbc\+\_\+decode\+\_\+builder.\+h}
\mbox{\hyperlink{dbc__decode__builder_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00001}00001 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00002}00002 \textcolor{comment}{ * @file dbc\_decode\_builder.h}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00003}00003 \textcolor{comment}{ * @brief}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00005}00005 \textcolor{comment}{ * Created: 2026-\/03-\/13}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00006}00006 \textcolor{comment}{ * Author: Deeaitch (Dim. Himro)}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00008}00008 \textcolor{comment}{ * Licensed under the MIT License.}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00009}00009 \textcolor{comment}{ * See LICENSE file in the project root for full license text.}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00010}00010 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00011}00011 }
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00012}00012 \textcolor{preprocessor}{\#ifndef DBC\_DECODE\_BUILDER\_H}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00013}00013 \textcolor{preprocessor}{\#define DBC\_DECODE\_BUILDER\_H}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00014}00014 }
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00015}00015 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{dbc__database_8h}{dbc\_database.h}}"{}}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00016}00016 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{decode__database_8h}{decode\_database.h}}"{}}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00017}00017 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00018}00018 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00019}00019 \textcolor{comment}{ * @brief Converts parsed DBC data into runtime decode database.}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00020}00020 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00021}\mbox{\hyperlink{classDbcDecodeBuilder}{00021}} \textcolor{keyword}{class }\mbox{\hyperlink{classDbcDecodeBuilder}{DbcDecodeBuilder}} \{}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00022}00022 \textcolor{keyword}{public}:\textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00023}00023 \textcolor{comment}{ /**}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00024}00024 \textcolor{comment}{ * @brief Build runtime decode database.}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00025}00025 \textcolor{comment}{ * @param source Parsed DBC database.}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00026}00026 \textcolor{comment}{ * @return Runtime-\/ready decode database.}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00027}00027 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00028}00028 \mbox{\hyperlink{structDecodeDatabase}{DecodeDatabase}} \mbox{\hyperlink{classDbcDecodeBuilder_a2bc6386dfb5e58976c42e22c19ec471b}{Build}} (\textcolor{keyword}{const} \mbox{\hyperlink{structDbcDatabase}{DbcDatabase}} \&source) \textcolor{keyword}{const};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00029}00029 \};}
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00030}00030 }
\DoxyCodeLine{\Hypertarget{dbc__decode__builder_8h_source_l00031}00031 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* DBC\_DECODE\_BUILDER\_H */}\textcolor{preprocessor}{}}
\end{DoxyCode}

View File

@@ -0,0 +1,17 @@
\hypertarget{dbc__decoder_8cpp}{}\doxysection{dbc\+\_\+decoder.\+cpp File Reference}
\label{dbc__decoder_8cpp}\index{dbc\_decoder.cpp@{dbc\_decoder.cpp}}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
{\ttfamily \#include \char`\"{}dbc\+\_\+decoder.\+h\char`\"{}}\newline
\doxysubsection{Detailed Description}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
Licensed under the MIT License. See LICENSE file in the project root for full license text.
Definition in file \mbox{\hyperlink{dbc__decoder_8cpp_source}{dbc\+\_\+decoder.\+cpp}}.

View File

@@ -0,0 +1,162 @@
\hypertarget{dbc__decoder_8cpp_source}{}\doxysection{dbc\+\_\+decoder.\+cpp}
\mbox{\hyperlink{dbc__decoder_8cpp}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00001}00001 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00002}00002 \textcolor{comment}{ * @file dbc\_decoder.cpp}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00003}00003 \textcolor{comment}{ * @brief}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00005}00005 \textcolor{comment}{ * Created: 2026-\/03-\/13}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00006}00006 \textcolor{comment}{ * Author: Deeaitch (Dim. Himro)}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00008}00008 \textcolor{comment}{ * Licensed under the MIT License.}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00009}00009 \textcolor{comment}{ * See LICENSE file in the project root for full license text.}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00010}00010 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00011}00011 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00012}00012 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{dbc__decoder_8h}{dbc\_decoder.h}}"{}}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00013}00013 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00014}\mbox{\hyperlink{classDbcDecoder_ab2cfb2fb711c95d3a29365546b89f3da}{00014}} \textcolor{keyword}{const} \mbox{\hyperlink{structDecodeFrame}{DecodeFrame}} *\mbox{\hyperlink{classDbcDecoder_ab2cfb2fb711c95d3a29365546b89f3da}{DbcDecoder::FindFrame}} (\textcolor{keyword}{const} \mbox{\hyperlink{structDecodeDatabase}{DecodeDatabase}} \&database,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00015}00015 std::uint32\_t canId,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00016}00016 \textcolor{keywordtype}{bool} isExtended)\textcolor{keyword}{ const }\{}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00017}00017 \textcolor{keyword}{const} \mbox{\hyperlink{structFrameKey}{FrameKey}} key (canId, isExtended);}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00018}00018 \textcolor{keyword}{const} std::unordered\_map<FrameKey, std::size\_t, FrameKeyHasher>::const\_iterator it =}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00019}00019 database.\mbox{\hyperlink{structDecodeDatabase_ae4fd1351008bb0dce337821a849100c5}{frameIndexByKey}}.find (key);}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00020}00020 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00021}00021 \textcolor{keywordflow}{if} (it == database.\mbox{\hyperlink{structDecodeDatabase_ae4fd1351008bb0dce337821a849100c5}{frameIndexByKey}}.end())}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00022}00022 \textcolor{keywordflow}{return} \textcolor{keyword}{nullptr};}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00023}00023 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00024}00024 \textcolor{keyword}{const} std::size\_t index = it-\/>second;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00025}00025 \textcolor{keywordflow}{if} (index >= database.\mbox{\hyperlink{structDecodeDatabase_a2bd4ddfc2602c1de4e12a373bfc93072}{frames}}.size())}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00026}00026 \textcolor{keywordflow}{return} \textcolor{keyword}{nullptr};}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00027}00027 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00028}00028 \textcolor{keywordflow}{return} \&database.\mbox{\hyperlink{structDecodeDatabase_a2bd4ddfc2602c1de4e12a373bfc93072}{frames}}[index];}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00029}00029 \}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00030}00030 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00031}\mbox{\hyperlink{classDbcDecoder_a345951ffe5d943a70d3a1ea1f39e74f7}{00031}} \mbox{\hyperlink{structDecodedFrameValue}{DecodedFrameValue}} \mbox{\hyperlink{classDbcDecoder_a345951ffe5d943a70d3a1ea1f39e74f7}{DbcDecoder::Decode}} (\textcolor{keyword}{const} \mbox{\hyperlink{structDecodeDatabase}{DecodeDatabase}} \&database,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00032}00032 \textcolor{keyword}{const} \mbox{\hyperlink{structRawCanFrame}{RawCanFrame}} \&frame)\textcolor{keyword}{ const }\{}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00033}00033 \mbox{\hyperlink{structDecodedFrameValue}{DecodedFrameValue}} result;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00034}00034 \textcolor{keyword}{const} \mbox{\hyperlink{structDecodeFrame}{DecodeFrame}} *definition = \mbox{\hyperlink{classDbcDecoder_ab2cfb2fb711c95d3a29365546b89f3da}{FindFrame}} (database, frame.\mbox{\hyperlink{structRawCanFrame_a2d0e7fa0e3d5c20bbed55ed8f7888ff4}{canId}}, frame.\mbox{\hyperlink{structRawCanFrame_a462193d275adc1dba8bd18ffa0e36bb7}{isExtended}});}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00035}00035 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00036}00036 \textcolor{keywordflow}{if} (definition == \textcolor{keyword}{nullptr})}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00037}00037 \textcolor{keywordflow}{return} result;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00038}00038 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00039}00039 result.\mbox{\hyperlink{structDecodedFrameValue_a60dda1cc352d2c8087f0bdbc81dd266c}{definition}} = definition;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00040}00040 result.\mbox{\hyperlink{structDecodedFrameValue_a4f51c31110dba1f73a763c596372beb0}{valid}} = \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00041}00041 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00042}00042 \textcolor{keywordflow}{for} (std::size\_t signalIndex = 0U; signalIndex < definition-\/>\mbox{\hyperlink{structDecodeFrame_a372afd9e74f1ae33f85cb4acfd3e2036}{signals}}.size(); ++signalIndex) \{}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00043}00043 \textcolor{keyword}{const} \mbox{\hyperlink{structDecodeSignal}{DecodeSignal}} \&signal = definition-\/>\mbox{\hyperlink{structDecodeFrame_a372afd9e74f1ae33f85cb4acfd3e2036}{signals}}[signalIndex];}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00044}00044 \mbox{\hyperlink{structDecodedSignalValue}{DecodedSignalValue}} decoded;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00045}00045 std::uint64\_t unsignedValue = 0U;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00046}00046 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00047}00047 decoded.\mbox{\hyperlink{structDecodedSignalValue_acadc3b3bb21dd6b0412d342c7e6b20d7}{definition}} = \&signal;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00048}00048 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00049}00049 \textcolor{keywordflow}{if} (!\mbox{\hyperlink{classDbcDecoder_a2a8a99b1107543be6fd1b3f891130bf5}{ExtractUnsigned}} (frame.\mbox{\hyperlink{structRawCanFrame_a0acb487612104c99c9907344c035df83}{data}}, signal, unsignedValue)) \{}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00050}00050 decoded.\mbox{\hyperlink{structDecodedSignalValue_aac0ed361af545cde48d0e6f41a859686}{valid}} = \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00051}00051 result.\mbox{\hyperlink{structDecodedFrameValue_a8440e0e5d7953102095b029f522022d3}{signals}}.push\_back (decoded);}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00052}00052 \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00053}00053 \}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00054}00054 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00055}00055 \textcolor{keywordflow}{if} (signal.\mbox{\hyperlink{structDecodeSignal_a9d37638129263b8902ba5be59baf39a8}{valueType}} == \mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1a71fed0c3428bf1a2e19af257c4bac379}{ValueType::Signed}})}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00056}00056 decoded.\mbox{\hyperlink{structDecodedSignalValue_a5138b825940e34689f7b3891627ee9ec}{rawValue}} = \mbox{\hyperlink{classDbcDecoder_a41e89e343338088d27e46773fa52df42}{SignExtend}} (unsignedValue, signal.\mbox{\hyperlink{structDecodeSignal_acd4ef5ee30421d117b5756854302debb}{length}});}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00057}00057 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00058}00058 decoded.\mbox{\hyperlink{structDecodedSignalValue_a5138b825940e34689f7b3891627ee9ec}{rawValue}} = \textcolor{keyword}{static\_cast<}std::int64\_t\textcolor{keyword}{>} (unsignedValue);}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00059}00059 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00060}00060 decoded.\mbox{\hyperlink{structDecodedSignalValue_a6847d05b3cb00d5e0f6c611968f57978}{physicalValue}} =}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00061}00061 (\textcolor{keyword}{static\_cast<}\textcolor{keywordtype}{double}\textcolor{keyword}{>} (decoded.\mbox{\hyperlink{structDecodedSignalValue_a5138b825940e34689f7b3891627ee9ec}{rawValue}}) * signal.\mbox{\hyperlink{structDecodeSignal_a428c39913a366a8476dd291061354391}{factor}}) + signal.\mbox{\hyperlink{structDecodeSignal_a92db637af4e224a0ae70173050dc3f74}{offset}};}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00062}00062 decoded.\mbox{\hyperlink{structDecodedSignalValue_aac0ed361af545cde48d0e6f41a859686}{valid}} = \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00063}00063 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00064}00064 result.\mbox{\hyperlink{structDecodedFrameValue_a8440e0e5d7953102095b029f522022d3}{signals}}.push\_back (decoded);}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00065}00065 \}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00066}00066 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00067}00067 \textcolor{keywordflow}{return} result;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00068}00068 \}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00069}00069 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00070}\mbox{\hyperlink{classDbcDecoder_a2a8a99b1107543be6fd1b3f891130bf5}{00070}} \textcolor{keywordtype}{bool} \mbox{\hyperlink{classDbcDecoder_a2a8a99b1107543be6fd1b3f891130bf5}{DbcDecoder::ExtractUnsigned}} (\textcolor{keyword}{const} std::vector<std::uint8\_t> \&data,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00071}00071 \textcolor{keyword}{const} \mbox{\hyperlink{structDecodeSignal}{DecodeSignal}} \&signal,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00072}00072 std::uint64\_t \&value) \{}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00073}00073 \textcolor{keywordflow}{if} ((signal.\mbox{\hyperlink{structDecodeSignal_acd4ef5ee30421d117b5756854302debb}{length}} == 0U) || (signal.\mbox{\hyperlink{structDecodeSignal_acd4ef5ee30421d117b5756854302debb}{length}} > 64U))}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00074}00074 \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00075}00075 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00076}00076 \textcolor{keywordflow}{if} (signal.\mbox{\hyperlink{structDecodeSignal_abdc4c4bb4a67a6d61d6ca81e8a52833d}{byteOrder}} == \mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142baff97a9fdede09eaf6e1c8ec9f6a61dd5}{ByteOrder::Intel}})}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00077}00077 \textcolor{keywordflow}{return} \mbox{\hyperlink{classDbcDecoder_aba130165c1a73bb4cd3a0454f415d872}{ExtractIntel}} (data, signal.\mbox{\hyperlink{structDecodeSignal_aaf5d7527ddf65b6355c2b4f3626df22d}{startBit}}, signal.\mbox{\hyperlink{structDecodeSignal_acd4ef5ee30421d117b5756854302debb}{length}}, value);}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00078}00078 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00079}00079 \textcolor{keywordflow}{return} \mbox{\hyperlink{classDbcDecoder_aede690734148c3d538105d5a2f7ee0a9}{ExtractMotorola}} (data, signal.\mbox{\hyperlink{structDecodeSignal_aaf5d7527ddf65b6355c2b4f3626df22d}{startBit}}, signal.\mbox{\hyperlink{structDecodeSignal_acd4ef5ee30421d117b5756854302debb}{length}}, value);}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00080}00080 \}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00081}00081 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00082}\mbox{\hyperlink{classDbcDecoder_aba130165c1a73bb4cd3a0454f415d872}{00082}} \textcolor{keywordtype}{bool} \mbox{\hyperlink{classDbcDecoder_aba130165c1a73bb4cd3a0454f415d872}{DbcDecoder::ExtractIntel}} (\textcolor{keyword}{const} std::vector<std::uint8\_t> \&data,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00083}00083 std::uint32\_t startBit,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00084}00084 std::uint32\_t length,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00085}00085 std::uint64\_t \&value) \{}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00086}00086 value = 0U;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00087}00087 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00088}00088 \textcolor{keywordflow}{for} (std::uint32\_t bitIndex = 0U; bitIndex < length; ++bitIndex) \{}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00089}00089 \textcolor{keyword}{const} std::uint32\_t absoluteBit = startBit + bitIndex;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00090}00090 \textcolor{keyword}{const} std::uint32\_t byteIndex = absoluteBit / 8U;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00091}00091 \textcolor{keyword}{const} std::uint32\_t bitInByte = absoluteBit \% 8U;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00092}00092 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00093}00093 \textcolor{keywordflow}{if} (byteIndex >= data.size())}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00094}00094 \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00095}00095 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00096}00096 \textcolor{keyword}{const} std::uint64\_t bitValue =}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00097}00097 (\textcolor{keyword}{static\_cast<}std::uint64\_t\textcolor{keyword}{>} ((data[byteIndex] >> bitInByte) \& 0x01U) << bitIndex);}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00098}00098 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00099}00099 value |= bitValue;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00100}00100 \}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00101}00101 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00102}00102 \textcolor{keywordflow}{return} \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00103}00103 \}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00104}00104 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00105}\mbox{\hyperlink{classDbcDecoder_aede690734148c3d538105d5a2f7ee0a9}{00105}} \textcolor{keywordtype}{bool} \mbox{\hyperlink{classDbcDecoder_aede690734148c3d538105d5a2f7ee0a9}{DbcDecoder::ExtractMotorola}} (\textcolor{keyword}{const} std::vector<std::uint8\_t> \&data,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00106}00106 std::uint32\_t startBit,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00107}00107 std::uint32\_t length,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00108}00108 std::uint64\_t \&value) \{}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00109}00109 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00110}00110 \textcolor{comment}{ * DBC Motorola bit numbering:}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00111}00111 \textcolor{comment}{ * -\/ startBit points to the most significant bit of the signal}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00112}00112 \textcolor{comment}{ * -\/ inside a byte, bit numbering goes 7..0}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00113}00113 \textcolor{comment}{ * -\/ crossing byte boundary moves to the next byte, bit 7}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00114}00114 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00115}00115 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00116}00116 value = 0U;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00117}00117 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00118}00118 std::int32\_t currentBit = \textcolor{keyword}{static\_cast<}std::int32\_t\textcolor{keyword}{>} (startBit);}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00119}00119 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00120}00120 \textcolor{keywordflow}{for} (std::uint32\_t bitIndex = 0U; bitIndex < length; ++bitIndex) \{}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00121}00121 \textcolor{keywordflow}{if} (currentBit < 0)}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00122}00122 \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00123}00123 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00124}00124 \textcolor{keyword}{const} std::uint32\_t absoluteBit = \textcolor{keyword}{static\_cast<}std::uint32\_t\textcolor{keyword}{>} (currentBit);}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00125}00125 \textcolor{keyword}{const} std::uint32\_t byteIndex = absoluteBit / 8U;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00126}00126 \textcolor{keyword}{const} std::uint32\_t bitFromMsb = absoluteBit \% 8U;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00127}00127 \textcolor{keyword}{const} std::uint32\_t bitInByte = 7U -\/ bitFromMsb;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00128}00128 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00129}00129 \textcolor{keywordflow}{if} (byteIndex >= data.size())}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00130}00130 \textcolor{keywordflow}{return} \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00131}00131 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00132}00132 value <<= 1U;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00133}00133 value |= \textcolor{keyword}{static\_cast<}std::uint64\_t\textcolor{keyword}{>} ((data[byteIndex] >> bitInByte) \& 0x01U);}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00134}00134 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00135}00135 \textcolor{keywordflow}{if} ((absoluteBit \% 8U) == 7U)}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00136}00136 currentBit = \textcolor{keyword}{static\_cast<}std::int32\_t\textcolor{keyword}{>} ((byteIndex + 1U) * 8U);}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00137}00137 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00138}00138 -\/-\/currentBit;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00139}00139 \}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00140}00140 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00141}00141 \textcolor{keywordflow}{return} \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00142}00142 \}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00143}00143 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00144}\mbox{\hyperlink{classDbcDecoder_a41e89e343338088d27e46773fa52df42}{00144}} std::int64\_t \mbox{\hyperlink{classDbcDecoder_a41e89e343338088d27e46773fa52df42}{DbcDecoder::SignExtend}} (std::uint64\_t value, std::uint32\_t bitLength) \{}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00145}00145 \textcolor{keywordflow}{if} ((bitLength == 0U) || (bitLength >= 64U))}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00146}00146 \textcolor{keywordflow}{return} \textcolor{keyword}{static\_cast<}std::int64\_t\textcolor{keyword}{>} (value);}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00147}00147 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00148}00148 \textcolor{keyword}{const} std::uint64\_t signMask = (\textcolor{keyword}{static\_cast<}std::uint64\_t\textcolor{keyword}{>} (1U) << (bitLength -\/ 1U));}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00149}00149 \textcolor{keyword}{const} std::uint64\_t valueMask = (\textcolor{keyword}{static\_cast<}std::uint64\_t\textcolor{keyword}{>} (1U) << bitLength) -\/ 1U;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00150}00150 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00151}00151 value \&= valueMask;}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00152}00152 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00153}00153 \textcolor{keywordflow}{if} ((value \& signMask) == 0U)}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00154}00154 \textcolor{keywordflow}{return} \textcolor{keyword}{static\_cast<}std::int64\_t\textcolor{keyword}{>} (value);}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00155}00155 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00156}00156 \textcolor{keywordflow}{return} \textcolor{keyword}{static\_cast<}std::int64\_t\textcolor{keyword}{>} (value | (\string~valueMask));}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8cpp_source_l00157}00157 \}}
\end{DoxyCode}

View File

@@ -0,0 +1,30 @@
\hypertarget{dbc__decoder_8h}{}\doxysection{dbc\+\_\+decoder.\+h File Reference}
\label{dbc__decoder_8h}\index{dbc\_decoder.h@{dbc\_decoder.h}}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
{\ttfamily \#include $<$vector$>$}\newline
{\ttfamily \#include $<$cstdint$>$}\newline
{\ttfamily \#include \char`\"{}decode\+\_\+database.\+h\char`\"{}}\newline
\doxysubsection*{Classes}
\begin{DoxyCompactItemize}
\item
struct \mbox{\hyperlink{structRawCanFrame}{Raw\+Can\+Frame}}
\begin{DoxyCompactList}\small\item\em Raw CAN frame used for runtime or trace decoding. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structDecodedSignalValue}{Decoded\+Signal\+Value}}
\begin{DoxyCompactList}\small\item\em One decoded signal value. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structDecodedFrameValue}{Decoded\+Frame\+Value}}
\begin{DoxyCompactList}\small\item\em Fully decoded frame. \end{DoxyCompactList}\item
class \mbox{\hyperlink{classDbcDecoder}{Dbc\+Decoder}}
\begin{DoxyCompactList}\small\item\em Runtime CAN decoder using prebuilt decode database. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
Licensed under the MIT License. See LICENSE file in the project root for full license text.
Definition in file \mbox{\hyperlink{dbc__decoder_8h_source}{dbc\+\_\+decoder.\+h}}.

View File

@@ -0,0 +1,115 @@
\hypertarget{dbc__decoder_8h_source}{}\doxysection{dbc\+\_\+decoder.\+h}
\mbox{\hyperlink{dbc__decoder_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00001}00001 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00002}00002 \textcolor{comment}{ * @file dbc\_decoder.h}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00003}00003 \textcolor{comment}{ * @brief}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00005}00005 \textcolor{comment}{ * Created: 2026-\/03-\/13}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00006}00006 \textcolor{comment}{ * Author: Deeaitch (Dim. Himro)}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00008}00008 \textcolor{comment}{ * Licensed under the MIT License.}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00009}00009 \textcolor{comment}{ * See LICENSE file in the project root for full license text.}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00010}00010 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00011}00011 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00012}00012 \textcolor{preprocessor}{\#ifndef DBC\_DECODER\_H}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00013}00013 \textcolor{preprocessor}{\#define DBC\_DECODER\_H}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00014}00014 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00015}00015 \textcolor{preprocessor}{\#include <vector>}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00016}00016 \textcolor{preprocessor}{\#include <cstdint>}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00017}00017 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00018}00018 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{decode__database_8h}{decode\_database.h}}"{}}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00019}00019 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00020}00020 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00021}00021 \textcolor{comment}{ * @brief Raw CAN frame used for runtime or trace decoding.}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00022}00022 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00023}\mbox{\hyperlink{structRawCanFrame}{00023}} \textcolor{keyword}{struct }\mbox{\hyperlink{structRawCanFrame}{RawCanFrame}} \{}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00024}\mbox{\hyperlink{structRawCanFrame_a2d0e7fa0e3d5c20bbed55ed8f7888ff4}{00024}} std::uint32\_t \mbox{\hyperlink{structRawCanFrame_a2d0e7fa0e3d5c20bbed55ed8f7888ff4}{canId}}; \textcolor{comment}{/**< Normalized CAN ID. */}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00025}\mbox{\hyperlink{structRawCanFrame_a462193d275adc1dba8bd18ffa0e36bb7}{00025}} \textcolor{keywordtype}{bool} \mbox{\hyperlink{structRawCanFrame_a462193d275adc1dba8bd18ffa0e36bb7}{isExtended}}; \textcolor{comment}{/**< true for extended frame. */}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00026}\mbox{\hyperlink{structRawCanFrame_a0acb487612104c99c9907344c035df83}{00026}} std::vector<std::uint8\_t> \mbox{\hyperlink{structRawCanFrame_a0acb487612104c99c9907344c035df83}{data}}; \textcolor{comment}{/**< Payload bytes. */}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00027}00027 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00028}\mbox{\hyperlink{structRawCanFrame_a17d18b39bed45e69f4e17ae2838f07f7}{00028}} \mbox{\hyperlink{structRawCanFrame_a17d18b39bed45e69f4e17ae2838f07f7}{RawCanFrame}}()}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00029}00029 : \mbox{\hyperlink{structRawCanFrame_a2d0e7fa0e3d5c20bbed55ed8f7888ff4}{canId}} (0U)}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00030}00030 , \mbox{\hyperlink{structRawCanFrame_a462193d275adc1dba8bd18ffa0e36bb7}{isExtended}} (false)}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00031}00031 , \mbox{\hyperlink{structRawCanFrame_a0acb487612104c99c9907344c035df83}{data}}() \{}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00032}00032 \}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00033}00033 \};}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00034}00034 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00035}00035 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00036}00036 \textcolor{comment}{ * @brief One decoded signal value.}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00037}00037 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00038}\mbox{\hyperlink{structDecodedSignalValue}{00038}} \textcolor{keyword}{struct }\mbox{\hyperlink{structDecodedSignalValue}{DecodedSignalValue}} \{}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00039}\mbox{\hyperlink{structDecodedSignalValue_acadc3b3bb21dd6b0412d342c7e6b20d7}{00039}} \textcolor{keyword}{const} \mbox{\hyperlink{structDecodeSignal}{DecodeSignal}} *\mbox{\hyperlink{structDecodedSignalValue_acadc3b3bb21dd6b0412d342c7e6b20d7}{definition}}; \textcolor{comment}{/**< Signal definition. */}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00040}\mbox{\hyperlink{structDecodedSignalValue_a5138b825940e34689f7b3891627ee9ec}{00040}} std::int64\_t \mbox{\hyperlink{structDecodedSignalValue_a5138b825940e34689f7b3891627ee9ec}{rawValue}}; \textcolor{comment}{/**< Extracted raw integer value. */}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00041}\mbox{\hyperlink{structDecodedSignalValue_a6847d05b3cb00d5e0f6c611968f57978}{00041}} \textcolor{keywordtype}{double} \mbox{\hyperlink{structDecodedSignalValue_a6847d05b3cb00d5e0f6c611968f57978}{physicalValue}}; \textcolor{comment}{/**< Converted physical value. */}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00042}\mbox{\hyperlink{structDecodedSignalValue_aac0ed361af545cde48d0e6f41a859686}{00042}} \textcolor{keywordtype}{bool} \mbox{\hyperlink{structDecodedSignalValue_aac0ed361af545cde48d0e6f41a859686}{valid}}; \textcolor{comment}{/**< true if decoding succeeded. */}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00043}00043 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00044}\mbox{\hyperlink{structDecodedSignalValue_a1481b122a7ce5a618012b1133c6adedf}{00044}} \mbox{\hyperlink{structDecodedSignalValue_a1481b122a7ce5a618012b1133c6adedf}{DecodedSignalValue}}()}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00045}00045 : \mbox{\hyperlink{structDecodedSignalValue_acadc3b3bb21dd6b0412d342c7e6b20d7}{definition}} (nullptr)}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00046}00046 , \mbox{\hyperlink{structDecodedSignalValue_a5138b825940e34689f7b3891627ee9ec}{rawValue}} (0)}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00047}00047 , \mbox{\hyperlink{structDecodedSignalValue_a6847d05b3cb00d5e0f6c611968f57978}{physicalValue}} (0.0)}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00048}00048 , \mbox{\hyperlink{structDecodedSignalValue_aac0ed361af545cde48d0e6f41a859686}{valid}} (false) \{}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00049}00049 \}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00050}00050 \};}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00051}00051 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00052}00052 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00053}00053 \textcolor{comment}{ * @brief Fully decoded frame.}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00054}00054 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00055}\mbox{\hyperlink{structDecodedFrameValue}{00055}} \textcolor{keyword}{struct }\mbox{\hyperlink{structDecodedFrameValue}{DecodedFrameValue}} \{}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00056}\mbox{\hyperlink{structDecodedFrameValue_a60dda1cc352d2c8087f0bdbc81dd266c}{00056}} \textcolor{keyword}{const} \mbox{\hyperlink{structDecodeFrame}{DecodeFrame}} *\mbox{\hyperlink{structDecodedFrameValue_a60dda1cc352d2c8087f0bdbc81dd266c}{definition}}; \textcolor{comment}{/**< Frame definition. */}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00057}\mbox{\hyperlink{structDecodedFrameValue_a8440e0e5d7953102095b029f522022d3}{00057}} std::vector<DecodedSignalValue> \mbox{\hyperlink{structDecodedFrameValue_a8440e0e5d7953102095b029f522022d3}{signals}}; \textcolor{comment}{/**< Decoded signal values. */}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00058}\mbox{\hyperlink{structDecodedFrameValue_a4f51c31110dba1f73a763c596372beb0}{00058}} \textcolor{keywordtype}{bool} \mbox{\hyperlink{structDecodedFrameValue_a4f51c31110dba1f73a763c596372beb0}{valid}}; \textcolor{comment}{/**< true if frame was matched. */}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00059}00059 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00060}\mbox{\hyperlink{structDecodedFrameValue_a19f754bb84e67e6ae71ea93b9ae6382b}{00060}} \mbox{\hyperlink{structDecodedFrameValue_a19f754bb84e67e6ae71ea93b9ae6382b}{DecodedFrameValue}}()}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00061}00061 : \mbox{\hyperlink{structDecodedFrameValue_a60dda1cc352d2c8087f0bdbc81dd266c}{definition}} (nullptr)}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00062}00062 , \mbox{\hyperlink{structDecodedFrameValue_a8440e0e5d7953102095b029f522022d3}{signals}}()}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00063}00063 , \mbox{\hyperlink{structDecodedFrameValue_a4f51c31110dba1f73a763c596372beb0}{valid}} (false) \{}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00064}00064 \}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00065}00065 \};}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00066}00066 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00067}00067 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00068}00068 \textcolor{comment}{ * @brief Runtime CAN decoder using prebuilt decode database.}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00069}00069 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00070}\mbox{\hyperlink{classDbcDecoder}{00070}} \textcolor{keyword}{class }\mbox{\hyperlink{classDbcDecoder}{DbcDecoder}} \{}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00071}00071 \textcolor{keyword}{public}:\textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00072}00072 \textcolor{comment}{ /**}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00073}00073 \textcolor{comment}{ * @brief Find frame definition by CAN ID.}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00074}00074 \textcolor{comment}{ * @param database Runtime decode database.}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00075}00075 \textcolor{comment}{ * @param canId Normalized CAN ID.}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00076}00076 \textcolor{comment}{ * @param isExtended true for extended frame.}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00077}00077 \textcolor{comment}{ * @return Pointer to frame definition or nullptr.}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00078}00078 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00079}00079 \textcolor{keyword}{const} \mbox{\hyperlink{structDecodeFrame}{DecodeFrame}} *\mbox{\hyperlink{classDbcDecoder_ab2cfb2fb711c95d3a29365546b89f3da}{FindFrame}} (\textcolor{keyword}{const} \mbox{\hyperlink{structDecodeDatabase}{DecodeDatabase}} \&database,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00080}00080 std::uint32\_t canId,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00081}00081 \textcolor{keywordtype}{bool} isExtended) \textcolor{keyword}{const};}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00082}00082 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00083}00083 \textcolor{comment}{ /**}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00084}00084 \textcolor{comment}{ * @brief Decode one raw CAN frame.}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00085}00085 \textcolor{comment}{ * @param database Runtime decode database.}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00086}00086 \textcolor{comment}{ * @param frame Raw CAN frame.}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00087}00087 \textcolor{comment}{ * @return Decoded frame value.}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00088}00088 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00089}00089 \mbox{\hyperlink{structDecodedFrameValue}{DecodedFrameValue}} \mbox{\hyperlink{classDbcDecoder_a345951ffe5d943a70d3a1ea1f39e74f7}{Decode}} (\textcolor{keyword}{const} \mbox{\hyperlink{structDecodeDatabase}{DecodeDatabase}} \&database,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00090}00090 \textcolor{keyword}{const} \mbox{\hyperlink{structRawCanFrame}{RawCanFrame}} \&frame) \textcolor{keyword}{const};}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00091}00091 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00092}00092 \textcolor{keyword}{private}:}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00093}00093 \textcolor{keyword}{static} \textcolor{keywordtype}{bool} \mbox{\hyperlink{classDbcDecoder_a2a8a99b1107543be6fd1b3f891130bf5}{ExtractUnsigned}} (\textcolor{keyword}{const} std::vector<std::uint8\_t> \&data,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00094}00094 \textcolor{keyword}{const} \mbox{\hyperlink{structDecodeSignal}{DecodeSignal}} \&signal,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00095}00095 std::uint64\_t \&value);}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00096}00096 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00097}00097 \textcolor{keyword}{static} \textcolor{keywordtype}{bool} \mbox{\hyperlink{classDbcDecoder_aba130165c1a73bb4cd3a0454f415d872}{ExtractIntel}} (\textcolor{keyword}{const} std::vector<std::uint8\_t> \&data,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00098}00098 std::uint32\_t startBit,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00099}00099 std::uint32\_t length,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00100}00100 std::uint64\_t \&value);}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00101}00101 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00102}00102 \textcolor{keyword}{static} \textcolor{keywordtype}{bool} \mbox{\hyperlink{classDbcDecoder_aede690734148c3d538105d5a2f7ee0a9}{ExtractMotorola}} (\textcolor{keyword}{const} std::vector<std::uint8\_t> \&data,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00103}00103 std::uint32\_t startBit,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00104}00104 std::uint32\_t length,}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00105}00105 std::uint64\_t \&value);}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00106}00106 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00107}00107 \textcolor{keyword}{static} std::int64\_t \mbox{\hyperlink{classDbcDecoder_a41e89e343338088d27e46773fa52df42}{SignExtend}} (std::uint64\_t value, std::uint32\_t bitLength);}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00108}00108 \};}
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00109}00109 }
\DoxyCodeLine{\Hypertarget{dbc__decoder_8h_source_l00110}00110 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* DBC\_DECODER\_H */}\textcolor{preprocessor}{}}
\end{DoxyCode}

View File

@@ -0,0 +1,31 @@
\hypertarget{dbc__parser_8cpp}{}\doxysection{dbc\+\_\+parser.\+cpp File Reference}
\label{dbc__parser_8cpp}\index{dbc\_parser.cpp@{dbc\_parser.cpp}}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
{\ttfamily \#include \char`\"{}dbc\+\_\+parser.\+h\char`\"{}}\newline
{\ttfamily \#include $<$fstream$>$}\newline
{\ttfamily \#include $<$sstream$>$}\newline
{\ttfamily \#include $<$stdexcept$>$}\newline
{\ttfamily \#include $<$cctype$>$}\newline
\doxysubsection*{Namespaces}
\begin{DoxyCompactItemize}
\item
namespace \mbox{\hyperlink{namespaceanonymous__namespace_02dbc__parser_8cpp_03}{anonymous\+\_\+namespace\{dbc\+\_\+parser.\+cpp\}}}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item
std\+::string \mbox{\hyperlink{namespaceanonymous__namespace_02dbc__parser_8cpp_03_a5850f07ce5f4e5c4f3bf385ebcfcebbb}{anonymous\+\_\+namespace\{dbc\+\_\+parser.\+cpp\}\+::\+Trim\+Text}} (const std\+::string \&text)
\begin{DoxyCompactList}\small\item\em Remove leading and trailing spaces. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
Licensed under the MIT License. See LICENSE file in the project root for full license text.
Definition in file \mbox{\hyperlink{dbc__parser_8cpp_source}{dbc\+\_\+parser.\+cpp}}.

View File

@@ -0,0 +1,361 @@
\hypertarget{dbc__parser_8cpp_source}{}\doxysection{dbc\+\_\+parser.\+cpp}
\mbox{\hyperlink{dbc__parser_8cpp}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00001}00001 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00002}00002 \textcolor{comment}{ * @file dbc\_parser.cpp}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00003}00003 \textcolor{comment}{ * @brief}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00005}00005 \textcolor{comment}{ * Created: 2026-\/03-\/13}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00006}00006 \textcolor{comment}{ * Author: Deeaitch (Dim. Himro)}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00008}00008 \textcolor{comment}{ * Licensed under the MIT License.}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00009}00009 \textcolor{comment}{ * See LICENSE file in the project root for full license text.}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00010}00010 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00011}00011 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00012}00012 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{dbc__parser_8h}{dbc\_parser.h}}"{}}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00013}00013 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00014}00014 \textcolor{preprocessor}{\#include <fstream>}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00015}00015 \textcolor{preprocessor}{\#include <sstream>}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00016}00016 \textcolor{preprocessor}{\#include <stdexcept>}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00017}00017 \textcolor{preprocessor}{\#include <cctype>}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00018}00018 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00019}\mbox{\hyperlink{namespaceanonymous__namespace_02dbc__parser_8cpp_03}{00019}} \textcolor{keyword}{namespace }\{\textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00020}00020 \textcolor{comment}{ /**}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00021}00021 \textcolor{comment}{ * @brief Remove leading and trailing spaces.}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00022}00022 \textcolor{comment}{ * @param text Input text.}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00023}00023 \textcolor{comment}{ * @return Trimmed text.}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00024}00024 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00025}\mbox{\hyperlink{namespaceanonymous__namespace_02dbc__parser_8cpp_03_a5850f07ce5f4e5c4f3bf385ebcfcebbb}{00025}} std::string \mbox{\hyperlink{namespaceanonymous__namespace_02dbc__parser_8cpp_03_a5850f07ce5f4e5c4f3bf385ebcfcebbb}{TrimText}} (\textcolor{keyword}{const} std::string \&text) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00026}00026 std::string::size\_type begin = 0U;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00027}00027 \textcolor{keywordflow}{while} ((begin < text.size()) \&\&}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00028}00028 std::isspace (\textcolor{keyword}{static\_cast<}\textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char}\textcolor{keyword}{>} (text[begin])))}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00029}00029 ++begin;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00030}00030 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00031}00031 std::string::size\_type end = text.size();}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00032}00032 \textcolor{keywordflow}{while} ((end > begin) \&\&}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00033}00033 std::isspace (\textcolor{keyword}{static\_cast<}\textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char}\textcolor{keyword}{>} (text[end -\/ 1U])))}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00034}00034 -\/-\/end;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00035}00035 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00036}00036 \textcolor{keywordflow}{return} text.substr (begin, end -\/ begin);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00037}00037 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00038}00038 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00039}00039 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00040}\mbox{\hyperlink{classDbcParser_aef72826942c9095d653fafa435855e56}{00040}} \mbox{\hyperlink{structDbcDatabase}{DbcDatabase}} \mbox{\hyperlink{classDbcParser_aef72826942c9095d653fafa435855e56}{DbcParser::ParseFile}} (\textcolor{keyword}{const} std::string \&filePath)\textcolor{keyword}{ const }\{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00041}00041 std::ifstream input (filePath.c\_str());}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00042}00042 \textcolor{keywordflow}{if} (!input.is\_open())}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00043}00043 \textcolor{keywordflow}{throw} std::runtime\_error (\textcolor{stringliteral}{"{}Failed to open DBC file: "{}} + filePath);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00044}00044 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00045}00045 \mbox{\hyperlink{structDbcDatabase}{DbcDatabase}} database;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00046}00046 \mbox{\hyperlink{structFrameInfo}{FrameInfo}} *currentFrame = \textcolor{keyword}{nullptr};}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00047}00047 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00048}00048 std::string line;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00049}00049 \textcolor{keywordflow}{while} (std::getline (input, line)) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00050}00050 line = \mbox{\hyperlink{classDbcParser_a1ae77c4c356af3d7b01a30044366f02b}{Trim}} (line);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00051}00051 \textcolor{keywordflow}{if} (line.empty())}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00052}00052 \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00053}00053 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00054}00054 \textcolor{keywordflow}{if} (\mbox{\hyperlink{classDbcParser_ada086584d371c08dd93b75fb7965f13b}{IsFrameLine}} (line)) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00055}00055 \mbox{\hyperlink{structFrameInfo}{FrameInfo}} frame = \mbox{\hyperlink{classDbcParser_a6d73bb1885e59aecd8202e93a7cd392a}{ParseFrameLine}} (line);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00056}00056 database.\mbox{\hyperlink{structDbcDatabase_a2cade5d0234ee816132127542f8c612b}{frames}}.push\_back (frame);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00057}00057 currentFrame = \&database.\mbox{\hyperlink{structDbcDatabase_a2cade5d0234ee816132127542f8c612b}{frames}}.back();}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00058}00058 \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (\mbox{\hyperlink{classDbcParser_ace3d3432a55707bc286a994aa205fed1}{IsSignalLine}} (line)) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00059}00059 \textcolor{keywordflow}{if} (currentFrame == \textcolor{keyword}{nullptr})}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00060}00060 \textcolor{keywordflow}{throw} std::runtime\_error (\textcolor{stringliteral}{"{}Signal found before any frame definition."{}});}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00061}00061 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00062}00062 \mbox{\hyperlink{structSignalInfo}{SignalInfo}} signal = \mbox{\hyperlink{classDbcParser_a4cbce88d08b1f72903ecf1bce41de5d2}{ParseSignalLine}} (line);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00063}00063 currentFrame-\/>\mbox{\hyperlink{structFrameInfo_a942937027f1af06536f98cc23b2bf6ce}{signals}}.push\_back (signal);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00064}00064 \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (\mbox{\hyperlink{classDbcParser_ae3488a0a6c64dc95e4ed289e77579feb}{IsCommentLine}} (line))}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00065}00065 \mbox{\hyperlink{classDbcParser_aa662b34694fd8b3edd757f36cb064c5c}{ParseCommentLine}} (line, database);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00066}00066 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00067}00067 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00068}00068 \textcolor{keywordflow}{return} database;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00069}00069 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00070}00070 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00071}\mbox{\hyperlink{classDbcParser_ada086584d371c08dd93b75fb7965f13b}{00071}} \textcolor{keywordtype}{bool} \mbox{\hyperlink{classDbcParser_ada086584d371c08dd93b75fb7965f13b}{DbcParser::IsFrameLine}} (\textcolor{keyword}{const} std::string \&line) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00072}00072 \textcolor{keywordflow}{return} (line.size() >= 4U) \&\& (line.compare (0U, 4U, \textcolor{stringliteral}{"{}BO\_ "{}}) == 0);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00073}00073 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00074}00074 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00075}\mbox{\hyperlink{classDbcParser_ace3d3432a55707bc286a994aa205fed1}{00075}} \textcolor{keywordtype}{bool} \mbox{\hyperlink{classDbcParser_ace3d3432a55707bc286a994aa205fed1}{DbcParser::IsSignalLine}} (\textcolor{keyword}{const} std::string \&line) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00076}00076 \textcolor{keywordflow}{return} (line.size() >= 4U) \&\& (line.compare (0U, 4U, \textcolor{stringliteral}{"{}SG\_ "{}}) == 0);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00077}00077 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00078}00078 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00079}\mbox{\hyperlink{classDbcParser_ae3488a0a6c64dc95e4ed289e77579feb}{00079}} \textcolor{keywordtype}{bool} \mbox{\hyperlink{classDbcParser_ae3488a0a6c64dc95e4ed289e77579feb}{DbcParser::IsCommentLine}} (\textcolor{keyword}{const} std::string \&line) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00080}00080 \textcolor{keywordflow}{return} (line.size() >= 4U) \&\& (line.compare (0U, 4U, \textcolor{stringliteral}{"{}CM\_ "{}}) == 0);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00081}00081 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00082}00082 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00083}\mbox{\hyperlink{classDbcParser_a1ae77c4c356af3d7b01a30044366f02b}{00083}} std::string \mbox{\hyperlink{classDbcParser_a1ae77c4c356af3d7b01a30044366f02b}{DbcParser::Trim}} (\textcolor{keyword}{const} std::string \&text) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00084}00084 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespaceanonymous__namespace_02dbc__parser_8cpp_03_a5850f07ce5f4e5c4f3bf385ebcfcebbb}{TrimText}} (text);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00085}00085 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00086}00086 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00087}\mbox{\hyperlink{classDbcParser_a0c1cc3c58f33473bf426a77b7a25c529}{00087}} std::vector<std::string> \mbox{\hyperlink{classDbcParser_a0c1cc3c58f33473bf426a77b7a25c529}{DbcParser::SplitReceivers}} (\textcolor{keyword}{const} std::string \&text) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00088}00088 std::vector<std::string> receivers;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00089}00089 std::string token;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00090}00090 std::istringstream stream (text);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00091}00091 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00092}00092 \textcolor{keywordflow}{while} (std::getline (stream, token, \textcolor{charliteral}{','})) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00093}00093 token = \mbox{\hyperlink{namespaceanonymous__namespace_02dbc__parser_8cpp_03_a5850f07ce5f4e5c4f3bf385ebcfcebbb}{TrimText}} (token);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00094}00094 \textcolor{keywordflow}{if} (!token.empty())}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00095}00095 receivers.push\_back (token);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00096}00096 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00097}00097 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00098}00098 \textcolor{keywordflow}{return} receivers;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00099}00099 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00100}00100 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00101}\mbox{\hyperlink{classDbcParser_a94d140d9442e4989b5b2ea7662c2debf}{00101}} \textcolor{keywordtype}{void} \mbox{\hyperlink{classDbcParser_a94d140d9442e4989b5b2ea7662c2debf}{DbcParser::NormalizeCanId}} (std::uint32\_t rawCanId,}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00102}00102 std::uint32\_t \&normalizedCanId,}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00103}00103 \textcolor{keywordtype}{bool} \&isExtended) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00104}00104 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00105}00105 \textcolor{comment}{ * DBC commonly stores extended identifiers with bit 31 set.}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00106}00106 \textcolor{comment}{ * Example:}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00107}00107 \textcolor{comment}{ * raw id = 0x80000000 | actual\_29\_bit\_id}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00108}00108 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00109}00109 \textcolor{keywordflow}{if} ((rawCanId \& 0x80000000U) != 0U) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00110}00110 isExtended = \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00111}00111 normalizedCanId = (rawCanId \& 0x1FFFFFFFU);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00112}00112 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00113}00113 isExtended = (rawCanId > 0x7FFU);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00114}00114 normalizedCanId = rawCanId;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00115}00115 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00116}00116 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00117}00117 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00118}\mbox{\hyperlink{classDbcParser_a8a7e8fc517e40beab87a8a1dbad2b324}{00118}} std::uint32\_t \mbox{\hyperlink{classDbcParser_a8a7e8fc517e40beab87a8a1dbad2b324}{DbcParser::TryExtractPgn}} (std::uint32\_t canId, \textcolor{keywordtype}{bool} isExtended, \textcolor{keywordtype}{bool} \&hasPgn) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00119}00119 hasPgn = \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00120}00120 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00121}00121 \textcolor{keywordflow}{if} (!isExtended)}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00122}00122 \textcolor{keywordflow}{return} 0U;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00123}00123 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00124}00124 \textcolor{keywordflow}{if} ((canId \& 0x1FFFFFFFU) != canId)}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00125}00125 \textcolor{keywordflow}{return} 0U;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00126}00126 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00127}00127 \textcolor{keyword}{const} std::uint32\_t pf = (canId >> 16U) \& 0xFFU;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00128}00128 \textcolor{keyword}{const} std::uint32\_t ps = (canId >> 8U) \& 0xFFU;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00129}00129 \textcolor{keyword}{const} std::uint32\_t dp = (canId >> 24U) \& 0x01U;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00130}00130 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00131}00131 std::uint32\_t pgn = 0U;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00132}00132 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00133}00133 \textcolor{keywordflow}{if} (pf < 240U)}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00134}00134 pgn = (dp << 16U) | (pf << 8U);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00135}00135 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00136}00136 pgn = (dp << 16U) | (pf << 8U) | ps;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00137}00137 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00138}00138 hasPgn = \textcolor{keyword}{true};}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00139}00139 \textcolor{keywordflow}{return} pgn;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00140}00140 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00141}00141 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00142}\mbox{\hyperlink{classDbcParser_a6d73bb1885e59aecd8202e93a7cd392a}{00142}} \mbox{\hyperlink{structFrameInfo}{FrameInfo}} \mbox{\hyperlink{classDbcParser_a6d73bb1885e59aecd8202e93a7cd392a}{DbcParser::ParseFrameLine}} (\textcolor{keyword}{const} std::string \&line) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00143}00143 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00144}00144 \textcolor{comment}{ * Example:}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00145}00145 \textcolor{comment}{ * BO\_ 256 EngineData: 8 EEC1}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00146}00146 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00147}00147 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00148}00148 std::istringstream stream (line);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00149}00149 std::string token;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00150}00150 \mbox{\hyperlink{structFrameInfo}{FrameInfo}} frame;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00151}00151 std::uint32\_t rawCanId = 0U;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00152}00152 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00153}00153 stream >> token;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00154}00154 \textcolor{keywordflow}{if} (token != \textcolor{stringliteral}{"{}BO\_"{}})}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00155}00155 \textcolor{keywordflow}{throw} std::runtime\_error (\textcolor{stringliteral}{"{}Invalid frame line: "{}} + line);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00156}00156 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00157}00157 stream >> rawCanId;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00158}00158 \mbox{\hyperlink{classDbcParser_a94d140d9442e4989b5b2ea7662c2debf}{NormalizeCanId}} (rawCanId, frame.\mbox{\hyperlink{structFrameInfo_af470b0742c05bfbffc31c51a68f5c05e}{canId}}, frame.\mbox{\hyperlink{structFrameInfo_a34b726afaad2ac5c697fdb2ac070cdaf}{isExtended}});}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00159}00159 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00160}00160 stream >> token;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00161}00161 \textcolor{keywordflow}{if} (token.empty())}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00162}00162 \textcolor{keywordflow}{throw} std::runtime\_error (\textcolor{stringliteral}{"{}Missing frame name: "{}} + line);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00163}00163 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00164}00164 \textcolor{keywordflow}{if} (token[token.size() -\/ 1U] == \textcolor{charliteral}{':'})}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00165}00165 token.erase (token.size() -\/ 1U, 1U);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00166}00166 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00167}00167 frame.\mbox{\hyperlink{structFrameInfo_abb53a7f93ed7abc0ea1ae4a8ccafcdcb}{name}} = token;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00168}00168 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00169}00169 \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00170}00170 \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} dlcValue = 0U;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00171}00171 stream >> dlcValue;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00172}00172 frame.\mbox{\hyperlink{structFrameInfo_aa2b198ea0f55e560c123d35e7b3ecab9}{dlc}} = \textcolor{keyword}{static\_cast<}std::uint8\_t\textcolor{keyword}{>} (dlcValue);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00173}00173 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00174}00174 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00175}00175 stream >> frame.\mbox{\hyperlink{structFrameInfo_a92749ec3798d4211a505860fb389a9e8}{transmitter}};}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00176}00176 frame.\mbox{\hyperlink{structFrameInfo_aee518b33f1000bf0b7f6e4a87474c943}{pgn}} = \mbox{\hyperlink{classDbcParser_a8a7e8fc517e40beab87a8a1dbad2b324}{TryExtractPgn}} (frame.\mbox{\hyperlink{structFrameInfo_af470b0742c05bfbffc31c51a68f5c05e}{canId}}, frame.\mbox{\hyperlink{structFrameInfo_a34b726afaad2ac5c697fdb2ac070cdaf}{isExtended}}, frame.\mbox{\hyperlink{structFrameInfo_a4737a5420213ad4304724e39f3a4e55d}{hasPgn}});}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00177}00177 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00178}00178 \textcolor{keywordflow}{return} frame;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00179}00179 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00180}00180 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00181}\mbox{\hyperlink{classDbcParser_a4cbce88d08b1f72903ecf1bce41de5d2}{00181}} \mbox{\hyperlink{structSignalInfo}{SignalInfo}} \mbox{\hyperlink{classDbcParser_a4cbce88d08b1f72903ecf1bce41de5d2}{DbcParser::ParseSignalLine}} (\textcolor{keyword}{const} std::string \&line) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00182}00182 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00183}00183 \textcolor{comment}{ * Example:}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00184}00184 \textcolor{comment}{ * SG\_ EngineSpeed : 0|16@1+ (0.125,0) [0|8000] "{}rpm"{} ECU1,ECU2}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00185}00185 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00186}00186 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00187}00187 \mbox{\hyperlink{structSignalInfo}{SignalInfo}} signal;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00188}00188 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00189}00189 std::string work = \mbox{\hyperlink{namespaceanonymous__namespace_02dbc__parser_8cpp_03_a5850f07ce5f4e5c4f3bf385ebcfcebbb}{TrimText}} (line);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00190}00190 \textcolor{keywordflow}{if} (work.compare (0U, 4U, \textcolor{stringliteral}{"{}SG\_ "{}}) != 0)}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00191}00191 \textcolor{keywordflow}{throw} std::runtime\_error (\textcolor{stringliteral}{"{}Invalid signal line: "{}} + line);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00192}00192 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00193}00193 work.erase (0U, 4U);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00194}00194 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00195}00195 \textcolor{keyword}{const} std::string::size\_type colonPos = work.find (\textcolor{charliteral}{':'});}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00196}00196 \textcolor{keywordflow}{if} (colonPos == std::string::npos)}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00197}00197 \textcolor{keywordflow}{throw} std::runtime\_error (\textcolor{stringliteral}{"{}Signal line missing ':' : "{}} + line);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00198}00198 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00199}00199 signal.\mbox{\hyperlink{structSignalInfo_a379e422a00cad56f896cacf60455b088}{name}} = \mbox{\hyperlink{namespaceanonymous__namespace_02dbc__parser_8cpp_03_a5850f07ce5f4e5c4f3bf385ebcfcebbb}{TrimText}} (work.substr (0U, colonPos));}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00200}00200 std::string rest = \mbox{\hyperlink{namespaceanonymous__namespace_02dbc__parser_8cpp_03_a5850f07ce5f4e5c4f3bf385ebcfcebbb}{TrimText}} (work.substr (colonPos + 1U));}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00201}00201 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00202}00202 \textcolor{keyword}{const} std::string::size\_type pipePos = rest.find (\textcolor{charliteral}{'|'});}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00203}00203 \textcolor{keyword}{const} std::string::size\_type atPos = rest.find (\textcolor{charliteral}{'@'});}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00204}00204 \textcolor{keyword}{const} std::string::size\_type signPos = rest.find\_first\_of (\textcolor{stringliteral}{"{}+-\/"{}}, atPos);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00205}00205 \textcolor{keyword}{const} std::string::size\_type factorBegin = rest.find (\textcolor{charliteral}{'('});}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00206}00206 \textcolor{keyword}{const} std::string::size\_type factorComma = rest.find (\textcolor{charliteral}{','}, factorBegin);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00207}00207 \textcolor{keyword}{const} std::string::size\_type factorEnd = rest.find (\textcolor{charliteral}{')'}, factorComma);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00208}00208 \textcolor{keyword}{const} std::string::size\_type rangeBegin = rest.find (\textcolor{charliteral}{'['});}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00209}00209 \textcolor{keyword}{const} std::string::size\_type rangeSep = rest.find (\textcolor{charliteral}{'|'}, rangeBegin);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00210}00210 \textcolor{keyword}{const} std::string::size\_type rangeEnd = rest.find (\textcolor{charliteral}{']'}, rangeSep);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00211}00211 \textcolor{keyword}{const} std::string::size\_type unitBegin = rest.find (\textcolor{charliteral}{'"{}'}, rangeEnd);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00212}00212 \textcolor{keyword}{const} std::string::size\_type unitEnd = rest.find (\textcolor{charliteral}{'"{}'}, unitBegin + 1U);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00213}00213 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00214}00214 \textcolor{keywordflow}{if} ((pipePos == std::string::npos) ||}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00215}00215 (atPos == std::string::npos) ||}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00216}00216 (signPos == std::string::npos) ||}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00217}00217 (factorBegin == std::string::npos) ||}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00218}00218 (factorComma == std::string::npos) ||}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00219}00219 (factorEnd == std::string::npos) ||}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00220}00220 (rangeBegin == std::string::npos) ||}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00221}00221 (rangeSep == std::string::npos) ||}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00222}00222 (rangeEnd == std::string::npos) ||}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00223}00223 (unitBegin == std::string::npos) ||}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00224}00224 (unitEnd == std::string::npos))}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00225}00225 \textcolor{keywordflow}{throw} std::runtime\_error (\textcolor{stringliteral}{"{}Unsupported signal syntax: "{}} + line);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00226}00226 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00227}00227 signal.\mbox{\hyperlink{structSignalInfo_ace290724f9801521609aedaa946d61f1}{startBit}} = \textcolor{keyword}{static\_cast<}std::uint32\_t\textcolor{keyword}{>} (}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00228}00228 std::stoul (\mbox{\hyperlink{namespaceanonymous__namespace_02dbc__parser_8cpp_03_a5850f07ce5f4e5c4f3bf385ebcfcebbb}{TrimText}} (rest.substr (0U, pipePos)))}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00229}00229 );}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00230}00230 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00231}00231 signal.\mbox{\hyperlink{structSignalInfo_a1008b5201f71848177217bd52fb84baa}{length}} = \textcolor{keyword}{static\_cast<}std::uint32\_t\textcolor{keyword}{>} (}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00232}00232 std::stoul (\mbox{\hyperlink{namespaceanonymous__namespace_02dbc__parser_8cpp_03_a5850f07ce5f4e5c4f3bf385ebcfcebbb}{TrimText}} (rest.substr (pipePos + 1U, atPos -\/ pipePos -\/ 1U)))}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00233}00233 );}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00234}00234 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00235}00235 \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00236}00236 \textcolor{keywordflow}{if} ((atPos + 1U) >= rest.size())}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00237}00237 \textcolor{keywordflow}{throw} std::runtime\_error (\textcolor{stringliteral}{"{}Invalid endianness in signal: "{}} + line);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00238}00238 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00239}00239 \textcolor{keyword}{const} \textcolor{keywordtype}{char} endianChar = rest[atPos + 1U];}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00240}00240 signal.\mbox{\hyperlink{structSignalInfo_af363b1563fb4c7cc8973f9a80c06846c}{isLittleEndian}} = (endianChar == \textcolor{charliteral}{'1'});}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00241}00241 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00242}00242 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00243}00243 \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00244}00244 \textcolor{keyword}{const} \textcolor{keywordtype}{char} signChar = rest[signPos];}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00245}00245 signal.\mbox{\hyperlink{structSignalInfo_a52a52b320eef92fbcb4626307f9a498f}{isSigned}} = (signChar == \textcolor{charliteral}{'-\/'});}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00246}00246 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00247}00247 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00248}00248 signal.\mbox{\hyperlink{structSignalInfo_ae4f78d99a2750aa564d7eba860171499}{factor}} = std::stod (}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00249}00249 \mbox{\hyperlink{namespaceanonymous__namespace_02dbc__parser_8cpp_03_a5850f07ce5f4e5c4f3bf385ebcfcebbb}{TrimText}} (rest.substr (factorBegin + 1U, factorComma -\/ factorBegin -\/ 1U))}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00250}00250 );}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00251}00251 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00252}00252 signal.\mbox{\hyperlink{structSignalInfo_ab7d0769f47aa540656b22e4e49db517e}{offset}} = std::stod (}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00253}00253 \mbox{\hyperlink{namespaceanonymous__namespace_02dbc__parser_8cpp_03_a5850f07ce5f4e5c4f3bf385ebcfcebbb}{TrimText}} (rest.substr (factorComma + 1U, factorEnd -\/ factorComma -\/ 1U))}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00254}00254 );}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00255}00255 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00256}00256 signal.\mbox{\hyperlink{structSignalInfo_ada7bf94fbeaa26bd08c73982b5af255b}{minimum}} = std::stod (}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00257}00257 \mbox{\hyperlink{namespaceanonymous__namespace_02dbc__parser_8cpp_03_a5850f07ce5f4e5c4f3bf385ebcfcebbb}{TrimText}} (rest.substr (rangeBegin + 1U, rangeSep -\/ rangeBegin -\/ 1U))}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00258}00258 );}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00259}00259 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00260}00260 signal.\mbox{\hyperlink{structSignalInfo_adf1c4331b9eabced0d7fdda40ff0eb52}{maximum}} = std::stod (}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00261}00261 \mbox{\hyperlink{namespaceanonymous__namespace_02dbc__parser_8cpp_03_a5850f07ce5f4e5c4f3bf385ebcfcebbb}{TrimText}} (rest.substr (rangeSep + 1U, rangeEnd -\/ rangeSep -\/ 1U))}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00262}00262 );}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00263}00263 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00264}00264 signal.\mbox{\hyperlink{structSignalInfo_a1f214f03e94ef5794de2d3367bfcbd01}{unit}} = rest.substr (unitBegin + 1U, unitEnd -\/ unitBegin -\/ 1U);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00265}00265 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00266}00266 \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00267}00267 \textcolor{keyword}{const} std::string receiversText = \mbox{\hyperlink{namespaceanonymous__namespace_02dbc__parser_8cpp_03_a5850f07ce5f4e5c4f3bf385ebcfcebbb}{TrimText}} (rest.substr (unitEnd + 1U));}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00268}00268 signal.\mbox{\hyperlink{structSignalInfo_a2c95562fd0b29327a7fd7b1e6feee7f3}{receivers}} = \mbox{\hyperlink{classDbcParser_a0c1cc3c58f33473bf426a77b7a25c529}{SplitReceivers}} (receiversText);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00269}00269 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00270}00270 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00271}00271 \textcolor{keywordflow}{return} signal;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00272}00272 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00273}00273 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00274}\mbox{\hyperlink{classDbcParser_aa662b34694fd8b3edd757f36cb064c5c}{00274}} \textcolor{keywordtype}{void} \mbox{\hyperlink{classDbcParser_aa662b34694fd8b3edd757f36cb064c5c}{DbcParser::ParseCommentLine}} (\textcolor{keyword}{const} std::string \&line, \mbox{\hyperlink{structDbcDatabase}{DbcDatabase}} \&database) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00275}00275 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00276}00276 \textcolor{comment}{ * Examples:}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00277}00277 \textcolor{comment}{ * CM\_ BO\_ 256 "{}Frame comment"{};}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00278}00278 \textcolor{comment}{ * CM\_ SG\_ 256 EngineSpeed "{}Signal comment"{};}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00279}00279 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00280}00280 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00281}00281 std::istringstream stream (line);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00282}00282 std::string token;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00283}00283 stream >> token;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00284}00284 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00285}00285 \textcolor{keywordflow}{if} (token != \textcolor{stringliteral}{"{}CM\_"{}})}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00286}00286 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00287}00287 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00288}00288 stream >> token;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00289}00289 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00290}00290 \textcolor{keywordflow}{if} (token == \textcolor{stringliteral}{"{}BO\_"{}}) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00291}00291 std::uint32\_t rawCanId = 0U;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00292}00292 std::uint32\_t canId = 0U;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00293}00293 \textcolor{keywordtype}{bool} isExtended = \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00294}00294 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00295}00295 stream >> rawCanId;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00296}00296 \mbox{\hyperlink{classDbcParser_a94d140d9442e4989b5b2ea7662c2debf}{NormalizeCanId}} (rawCanId, canId, isExtended);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00297}00297 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00298}00298 \textcolor{keyword}{const} std::string::size\_type quoteBegin = line.find (\textcolor{charliteral}{'"{}'});}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00299}00299 \textcolor{keyword}{const} std::string::size\_type quoteEnd = line.rfind (\textcolor{charliteral}{'"{}'});}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00300}00300 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00301}00301 \textcolor{keywordflow}{if} ((quoteBegin == std::string::npos) ||}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00302}00302 (quoteEnd == std::string::npos) ||}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00303}00303 (quoteEnd <= quoteBegin))}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00304}00304 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00305}00305 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00306}00306 \mbox{\hyperlink{structFrameInfo}{FrameInfo}} *frame = \mbox{\hyperlink{classDbcParser_ab1fee32cb845573ce10949b4bec721f9}{FindFrameById}} (database, canId, isExtended);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00307}00307 \textcolor{keywordflow}{if} (frame != \textcolor{keyword}{nullptr})}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00308}00308 frame-\/>\mbox{\hyperlink{structFrameInfo_ace75121294f9d89b762080ab5643293c}{comment}} = line.substr (quoteBegin + 1U, quoteEnd -\/ quoteBegin -\/ 1U);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00309}00309 \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (token == \textcolor{stringliteral}{"{}SG\_"{}}) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00310}00310 std::uint32\_t rawCanId = 0U;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00311}00311 std::uint32\_t canId = 0U;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00312}00312 \textcolor{keywordtype}{bool} isExtended = \textcolor{keyword}{false};}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00313}00313 std::string signalName;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00314}00314 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00315}00315 stream >> rawCanId;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00316}00316 stream >> signalName;}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00317}00317 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00318}00318 \mbox{\hyperlink{classDbcParser_a94d140d9442e4989b5b2ea7662c2debf}{NormalizeCanId}} (rawCanId, canId, isExtended);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00319}00319 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00320}00320 \textcolor{keyword}{const} std::string::size\_type quoteBegin = line.find (\textcolor{charliteral}{'"{}'});}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00321}00321 \textcolor{keyword}{const} std::string::size\_type quoteEnd = line.rfind (\textcolor{charliteral}{'"{}'});}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00322}00322 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00323}00323 \textcolor{keywordflow}{if} ((quoteBegin == std::string::npos) ||}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00324}00324 (quoteEnd == std::string::npos) ||}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00325}00325 (quoteEnd <= quoteBegin))}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00326}00326 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00327}00327 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00328}00328 \mbox{\hyperlink{structFrameInfo}{FrameInfo}} *frame = \mbox{\hyperlink{classDbcParser_ab1fee32cb845573ce10949b4bec721f9}{FindFrameById}} (database, canId, isExtended);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00329}00329 \textcolor{keywordflow}{if} (frame != \textcolor{keyword}{nullptr}) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00330}00330 \mbox{\hyperlink{structSignalInfo}{SignalInfo}} *signal = \mbox{\hyperlink{classDbcParser_ab7b95be4433c56cc855bedb08b96a71a}{FindSignalByName}} (*frame, signalName);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00331}00331 \textcolor{keywordflow}{if} (signal != \textcolor{keyword}{nullptr})}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00332}00332 signal-\/>\mbox{\hyperlink{structSignalInfo_ac99ba7563a5dad01e39c4257216953f5}{comment}} = line.substr (quoteBegin + 1U, quoteEnd -\/ quoteBegin -\/ 1U);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00333}00333 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00334}00334 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00335}00335 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00336}00336 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00337}\mbox{\hyperlink{classDbcParser_ab1fee32cb845573ce10949b4bec721f9}{00337}} \mbox{\hyperlink{structFrameInfo}{FrameInfo}} *\mbox{\hyperlink{classDbcParser_ab1fee32cb845573ce10949b4bec721f9}{DbcParser::FindFrameById}} (\mbox{\hyperlink{structDbcDatabase}{DbcDatabase}} \&database,}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00338}00338 std::uint32\_t canId,}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00339}00339 \textcolor{keywordtype}{bool} isExtended) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00340}00340 \textcolor{keywordflow}{for} (std::size\_t index = 0U; index < database.\mbox{\hyperlink{structDbcDatabase_a2cade5d0234ee816132127542f8c612b}{frames}}.size(); ++index) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00341}00341 \textcolor{keywordflow}{if} ((database.\mbox{\hyperlink{structDbcDatabase_a2cade5d0234ee816132127542f8c612b}{frames}}[index].canId == canId) \&\&}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00342}00342 (database.\mbox{\hyperlink{structDbcDatabase_a2cade5d0234ee816132127542f8c612b}{frames}}[index].isExtended == isExtended))}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00343}00343 \textcolor{keywordflow}{return} \&database.\mbox{\hyperlink{structDbcDatabase_a2cade5d0234ee816132127542f8c612b}{frames}}[index];}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00344}00344 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00345}00345 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00346}00346 \textcolor{keywordflow}{return} \textcolor{keyword}{nullptr};}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00347}00347 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00348}00348 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00349}\mbox{\hyperlink{classDbcParser_ab7b95be4433c56cc855bedb08b96a71a}{00349}} \mbox{\hyperlink{structSignalInfo}{SignalInfo}} *\mbox{\hyperlink{classDbcParser_ab7b95be4433c56cc855bedb08b96a71a}{DbcParser::FindSignalByName}} (\mbox{\hyperlink{structFrameInfo}{FrameInfo}} \&frame, \textcolor{keyword}{const} std::string \&signalName) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00350}00350 \textcolor{keywordflow}{for} (std::size\_t index = 0U; index < frame.\mbox{\hyperlink{structFrameInfo_a942937027f1af06536f98cc23b2bf6ce}{signals}}.size(); ++index) \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00351}00351 \textcolor{keywordflow}{if} (frame.\mbox{\hyperlink{structFrameInfo_a942937027f1af06536f98cc23b2bf6ce}{signals}}[index].name == signalName)}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00352}00352 \textcolor{keywordflow}{return} \&frame.\mbox{\hyperlink{structFrameInfo_a942937027f1af06536f98cc23b2bf6ce}{signals}}[index];}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00353}00353 \}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00354}00354 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00355}00355 \textcolor{keywordflow}{return} \textcolor{keyword}{nullptr};}
\DoxyCodeLine{\Hypertarget{dbc__parser_8cpp_source_l00356}00356 \}}
\end{DoxyCode}

View File

@@ -0,0 +1,25 @@
\hypertarget{dbc__parser_8h}{}\doxysection{dbc\+\_\+parser.\+h File Reference}
\label{dbc__parser_8h}\index{dbc\_parser.h@{dbc\_parser.h}}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
{\ttfamily \#include $<$string$>$}\newline
{\ttfamily \#include $<$vector$>$}\newline
{\ttfamily \#include $<$cstdint$>$}\newline
{\ttfamily \#include \char`\"{}dbc\+\_\+database.\+h\char`\"{}}\newline
\doxysubsection*{Classes}
\begin{DoxyCompactItemize}
\item
class \mbox{\hyperlink{classDbcParser}{Dbc\+Parser}}
\begin{DoxyCompactList}\small\item\em Minimal DBC parser. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
Licensed under the MIT License. See LICENSE file in the project root for full license text.
Definition in file \mbox{\hyperlink{dbc__parser_8h_source}{dbc\+\_\+parser.\+h}}.

View File

@@ -0,0 +1,74 @@
\hypertarget{dbc__parser_8h_source}{}\doxysection{dbc\+\_\+parser.\+h}
\mbox{\hyperlink{dbc__parser_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00001}00001 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00002}00002 \textcolor{comment}{ * @file dbc\_parser.h}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00003}00003 \textcolor{comment}{ * @brief}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00005}00005 \textcolor{comment}{ * Created: 2026-\/03-\/13}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00006}00006 \textcolor{comment}{ * Author: Deeaitch (Dim. Himro)}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00008}00008 \textcolor{comment}{ * Licensed under the MIT License.}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00009}00009 \textcolor{comment}{ * See LICENSE file in the project root for full license text.}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00010}00010 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00011}00011 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00012}00012 \textcolor{preprocessor}{\#ifndef DBC\_PARSER\_H}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00013}00013 \textcolor{preprocessor}{\#define DBC\_PARSER\_H}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00014}00014 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00015}00015 \textcolor{preprocessor}{\#include <string>}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00016}00016 \textcolor{preprocessor}{\#include <vector>}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00017}00017 \textcolor{preprocessor}{\#include <cstdint>}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00018}00018 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00019}00019 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{dbc__database_8h}{dbc\_database.h}}"{}}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00020}00020 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00021}00021 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00022}00022 \textcolor{comment}{ * @brief Minimal DBC parser.}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00023}00023 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00024}00024 \textcolor{comment}{ * Supports:}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00025}00025 \textcolor{comment}{ * -\/ BO\_}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00026}00026 \textcolor{comment}{ * -\/ SG\_}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00027}00027 \textcolor{comment}{ * -\/ CM\_ BO\_}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00028}00028 \textcolor{comment}{ * -\/ CM\_ SG\_}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00029}00029 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00030}00030 \textcolor{comment}{ * Ignores:}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00031}00031 \textcolor{comment}{ * -\/ attributes}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00032}00032 \textcolor{comment}{ * -\/ multiplexing}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00033}00033 \textcolor{comment}{ * -\/ value tables}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00034}00034 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00035}\mbox{\hyperlink{classDbcParser}{00035}} \textcolor{keyword}{class }\mbox{\hyperlink{classDbcParser}{DbcParser}} \{}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00036}00036 \textcolor{keyword}{public}:\textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00037}00037 \textcolor{comment}{ /**}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00038}00038 \textcolor{comment}{ * @brief Parse DBC file.}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00039}00039 \textcolor{comment}{ * @param filePath Path to input file.}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00040}00040 \textcolor{comment}{ * @return Parsed database.}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00041}00041 \textcolor{comment}{ * @throws std::runtime\_error on file or parse errors.}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00042}00042 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00043}00043 \mbox{\hyperlink{structDbcDatabase}{DbcDatabase}} \mbox{\hyperlink{classDbcParser_aef72826942c9095d653fafa435855e56}{ParseFile}} (\textcolor{keyword}{const} std::string \&filePath) \textcolor{keyword}{const};}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00044}00044 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00045}00045 \textcolor{keyword}{private}:}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00046}00046 \textcolor{keyword}{static} \textcolor{keywordtype}{bool} \mbox{\hyperlink{classDbcParser_ada086584d371c08dd93b75fb7965f13b}{IsFrameLine}} (\textcolor{keyword}{const} std::string \&line);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00047}00047 \textcolor{keyword}{static} \textcolor{keywordtype}{bool} \mbox{\hyperlink{classDbcParser_ace3d3432a55707bc286a994aa205fed1}{IsSignalLine}} (\textcolor{keyword}{const} std::string \&line);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00048}00048 \textcolor{keyword}{static} \textcolor{keywordtype}{bool} \mbox{\hyperlink{classDbcParser_ae3488a0a6c64dc95e4ed289e77579feb}{IsCommentLine}} (\textcolor{keyword}{const} std::string \&line);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00049}00049 \textcolor{keyword}{static} std::string \mbox{\hyperlink{classDbcParser_a1ae77c4c356af3d7b01a30044366f02b}{Trim}} (\textcolor{keyword}{const} std::string \&text);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00050}00050 \textcolor{keyword}{static} std::vector<std::string> \mbox{\hyperlink{classDbcParser_a0c1cc3c58f33473bf426a77b7a25c529}{SplitReceivers}} (\textcolor{keyword}{const} std::string \&text);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00051}00051 \textcolor{keyword}{static} std::uint32\_t \mbox{\hyperlink{classDbcParser_a8a7e8fc517e40beab87a8a1dbad2b324}{TryExtractPgn}} (std::uint32\_t canId, \textcolor{keywordtype}{bool} isExtended, \textcolor{keywordtype}{bool} \&hasPgn);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00052}00052 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00053}00053 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{classDbcParser_a94d140d9442e4989b5b2ea7662c2debf}{NormalizeCanId}} (std::uint32\_t rawCanId,}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00054}00054 std::uint32\_t \&normalizedCanId,}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00055}00055 \textcolor{keywordtype}{bool} \&isExtended);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00056}00056 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00057}00057 \textcolor{keyword}{static} \mbox{\hyperlink{structFrameInfo}{FrameInfo}} \mbox{\hyperlink{classDbcParser_a6d73bb1885e59aecd8202e93a7cd392a}{ParseFrameLine}} (\textcolor{keyword}{const} std::string \&line);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00058}00058 \textcolor{keyword}{static} \mbox{\hyperlink{structSignalInfo}{SignalInfo}} \mbox{\hyperlink{classDbcParser_a4cbce88d08b1f72903ecf1bce41de5d2}{ParseSignalLine}} (\textcolor{keyword}{const} std::string \&line);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00059}00059 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00060}00060 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{classDbcParser_aa662b34694fd8b3edd757f36cb064c5c}{ParseCommentLine}} (\textcolor{keyword}{const} std::string \&line, \mbox{\hyperlink{structDbcDatabase}{DbcDatabase}} \&database);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00061}00061 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00062}00062 \textcolor{keyword}{static} \mbox{\hyperlink{structFrameInfo}{FrameInfo}} *\mbox{\hyperlink{classDbcParser_ab1fee32cb845573ce10949b4bec721f9}{FindFrameById}} (\mbox{\hyperlink{structDbcDatabase}{DbcDatabase}} \&database,}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00063}00063 std::uint32\_t canId,}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00064}00064 \textcolor{keywordtype}{bool} isExtended);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00065}00065 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00066}00066 \textcolor{keyword}{static} \mbox{\hyperlink{structSignalInfo}{SignalInfo}} *\mbox{\hyperlink{classDbcParser_ab7b95be4433c56cc855bedb08b96a71a}{FindSignalByName}} (\mbox{\hyperlink{structFrameInfo}{FrameInfo}} \&frame, \textcolor{keyword}{const} std::string \&signalName);}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00067}00067 \};}
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00068}00068 }
\DoxyCodeLine{\Hypertarget{dbc__parser_8h_source_l00069}00069 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* DBC\_PARSER\_H */}\textcolor{preprocessor}{}}
\end{DoxyCode}

View File

@@ -0,0 +1,17 @@
\hypertarget{dbc__tree__builder_8cpp}{}\doxysection{dbc\+\_\+tree\+\_\+builder.\+cpp File Reference}
\label{dbc__tree__builder_8cpp}\index{dbc\_tree\_builder.cpp@{dbc\_tree\_builder.cpp}}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
{\ttfamily \#include \char`\"{}dbc\+\_\+tree\+\_\+builder.\+h\char`\"{}}\newline
\doxysubsection{Detailed Description}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
Licensed under the MIT License. See LICENSE file in the project root for full license text.
Definition in file \mbox{\hyperlink{dbc__tree__builder_8cpp_source}{dbc\+\_\+tree\+\_\+builder.\+cpp}}.

View File

@@ -0,0 +1,36 @@
\hypertarget{dbc__tree__builder_8cpp_source}{}\doxysection{dbc\+\_\+tree\+\_\+builder.\+cpp}
\mbox{\hyperlink{dbc__tree__builder_8cpp}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00001}00001 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00002}00002 \textcolor{comment}{ * @file dbc\_tree\_builder.cpp}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00003}00003 \textcolor{comment}{ * @brief}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00005}00005 \textcolor{comment}{ * Created: 2026-\/03-\/13}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00006}00006 \textcolor{comment}{ * Author: Deeaitch (Dim. Himro)}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00008}00008 \textcolor{comment}{ * Licensed under the MIT License.}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00009}00009 \textcolor{comment}{ * See LICENSE file in the project root for full license text.}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00010}00010 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00011}00011 }
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00012}00012 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{dbc__tree__builder_8h}{dbc\_tree\_builder.h}}"{}}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00013}00013 }
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00014}\mbox{\hyperlink{classDbcTreeBuilder_a7e57d067d831b14b383947fd125edd4b}{00014}} std::unique\_ptr<TreeNode> \mbox{\hyperlink{classDbcTreeBuilder_a7e57d067d831b14b383947fd125edd4b}{DbcTreeBuilder::Build}} (\textcolor{keyword}{const} \mbox{\hyperlink{structDbcDatabase}{DbcDatabase}} \&database)\textcolor{keyword}{ const }\{}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00015}00015 std::unique\_ptr<TreeNode> root (\textcolor{keyword}{new} \mbox{\hyperlink{classTreeNode}{TreeNode}}());}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00016}00016 }
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00017}00017 \textcolor{keywordflow}{for} (std::size\_t frameIndex = 0U; frameIndex < database.\mbox{\hyperlink{structDbcDatabase_a2cade5d0234ee816132127542f8c612b}{frames}}.size(); ++frameIndex) \{}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00018}00018 \textcolor{keyword}{const} \mbox{\hyperlink{structFrameInfo}{FrameInfo}} \&frame = database.\mbox{\hyperlink{structDbcDatabase_a2cade5d0234ee816132127542f8c612b}{frames}}[frameIndex];}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00019}00019 std::unique\_ptr<TreeNode> frameNode (\textcolor{keyword}{new} \mbox{\hyperlink{classTreeNode}{TreeNode}} (frame));}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00020}00020 }
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00021}00021 \textcolor{keywordflow}{for} (std::size\_t signalIndex = 0U; signalIndex < frame.\mbox{\hyperlink{structFrameInfo_a942937027f1af06536f98cc23b2bf6ce}{signals}}.size(); ++signalIndex) \{}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00022}00022 \textcolor{keyword}{const} \mbox{\hyperlink{structSignalInfo}{SignalInfo}} \&signal = frame.\mbox{\hyperlink{structFrameInfo_a942937027f1af06536f98cc23b2bf6ce}{signals}}[signalIndex];}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00023}00023 std::unique\_ptr<TreeNode> signalNode (\textcolor{keyword}{new} \mbox{\hyperlink{classTreeNode}{TreeNode}} (signal));}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00024}00024 frameNode-\/>AddChild (std::move (signalNode));}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00025}00025 \}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00026}00026 }
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00027}00027 root-\/>AddChild (std::move (frameNode));}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00028}00028 \}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00029}00029 }
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00030}00030 \textcolor{keywordflow}{return} root;}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8cpp_source_l00031}00031 \}}
\end{DoxyCode}

View File

@@ -0,0 +1,24 @@
\hypertarget{dbc__tree__builder_8h}{}\doxysection{dbc\+\_\+tree\+\_\+builder.\+h File Reference}
\label{dbc__tree__builder_8h}\index{dbc\_tree\_builder.h@{dbc\_tree\_builder.h}}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
{\ttfamily \#include $<$memory$>$}\newline
{\ttfamily \#include \char`\"{}dbc\+\_\+database.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tree\+\_\+node.\+h\char`\"{}}\newline
\doxysubsection*{Classes}
\begin{DoxyCompactItemize}
\item
class \mbox{\hyperlink{classDbcTreeBuilder}{Dbc\+Tree\+Builder}}
\begin{DoxyCompactList}\small\item\em Builds a simple tree from parsed DBC database. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
Licensed under the MIT License. See LICENSE file in the project root for full license text.
Definition in file \mbox{\hyperlink{dbc__tree__builder_8h_source}{dbc\+\_\+tree\+\_\+builder.\+h}}.

View File

@@ -0,0 +1,38 @@
\hypertarget{dbc__tree__builder_8h_source}{}\doxysection{dbc\+\_\+tree\+\_\+builder.\+h}
\mbox{\hyperlink{dbc__tree__builder_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00001}00001 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00002}00002 \textcolor{comment}{ * @file dbc\_tree\_builder.h}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00003}00003 \textcolor{comment}{ * @brief}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00005}00005 \textcolor{comment}{ * Created: 2026-\/03-\/13}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00006}00006 \textcolor{comment}{ * Author: Deeaitch (Dim. Himro)}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00008}00008 \textcolor{comment}{ * Licensed under the MIT License.}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00009}00009 \textcolor{comment}{ * See LICENSE file in the project root for full license text.}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00010}00010 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00011}00011 }
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00012}00012 \textcolor{preprocessor}{\#ifndef DBC\_TREE\_BUILDER\_H}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00013}00013 \textcolor{preprocessor}{\#define DBC\_TREE\_BUILDER\_H}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00014}00014 }
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00015}00015 \textcolor{preprocessor}{\#include <memory>}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00016}00016 }
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00017}00017 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{dbc__database_8h}{dbc\_database.h}}"{}}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00018}00018 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{tree__node_8h}{tree\_node.h}}"{}}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00019}00019 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00020}00020 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00021}00021 \textcolor{comment}{ * @brief Builds a simple tree from parsed DBC database.}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00022}00022 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00023}\mbox{\hyperlink{classDbcTreeBuilder}{00023}} \textcolor{keyword}{class }\mbox{\hyperlink{classDbcTreeBuilder}{DbcTreeBuilder}} \{}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00024}00024 \textcolor{keyword}{public}:\textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00025}00025 \textcolor{comment}{ /**}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00026}00026 \textcolor{comment}{ * @brief Build tree representation of parsed DBC data.}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00027}00027 \textcolor{comment}{ * @param database Parsed database.}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00028}00028 \textcolor{comment}{ * @return Root node of the tree.}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00029}00029 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00030}00030 std::unique\_ptr<TreeNode> \mbox{\hyperlink{classDbcTreeBuilder_a7e57d067d831b14b383947fd125edd4b}{Build}} (\textcolor{keyword}{const} \mbox{\hyperlink{structDbcDatabase}{DbcDatabase}} \&database) \textcolor{keyword}{const};}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00031}00031 \};}
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00032}00032 }
\DoxyCodeLine{\Hypertarget{dbc__tree__builder_8h_source_l00033}00033 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* DBC\_TREE\_BUILDER\_H */}\textcolor{preprocessor}{}}
\end{DoxyCode}

View File

@@ -0,0 +1,95 @@
\hypertarget{decode__database_8h}{}\doxysection{decode\+\_\+database.\+h File Reference}
\label{decode__database_8h}\index{decode\_database.h@{decode\_database.h}}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
{\ttfamily \#include $<$string$>$}\newline
{\ttfamily \#include $<$vector$>$}\newline
{\ttfamily \#include $<$unordered\+\_\+map$>$}\newline
{\ttfamily \#include $<$cstdint$>$}\newline
\doxysubsection*{Classes}
\begin{DoxyCompactItemize}
\item
struct \mbox{\hyperlink{structDecodeSignal}{Decode\+Signal}}
\begin{DoxyCompactList}\small\item\em Runtime-\/ready signal definition. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structDecodeFrame}{Decode\+Frame}}
\begin{DoxyCompactList}\small\item\em Runtime-\/ready frame definition. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structFrameKey}{Frame\+Key}}
\begin{DoxyCompactList}\small\item\em Key for fast frame lookup. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structFrameKeyHasher}{Frame\+Key\+Hasher}}
\begin{DoxyCompactList}\small\item\em Hasher for frame key. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structDecodeDatabase}{Decode\+Database}}
\begin{DoxyCompactList}\small\item\em Runtime decode database with fast lookup by CAN ID. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item
enum class \mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142b}{Byte\+Order}} \{ \mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142baff97a9fdede09eaf6e1c8ec9f6a61dd5}{Intel}}
, \mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142ba2ed1afe3c9215523e4272f46e6186b31}{Motorola}}
\}
\begin{DoxyCompactList}\small\item\em Signal byte order used for runtime decoding. \end{DoxyCompactList}\item
enum class \mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1}{Value\+Type}} \{ \mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1aa1a914735b205424ba6c40b85528d78a}{Unsigned}}
, \mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1a71fed0c3428bf1a2e19af257c4bac379}{Signed}}
\}
\begin{DoxyCompactList}\small\item\em Signal numeric type. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
Licensed under the MIT License. See LICENSE file in the project root for full license text.
Definition in file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
\doxysubsection{Enumeration Type Documentation}
\mbox{\Hypertarget{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142b}\label{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142b}}
\index{decode\_database.h@{decode\_database.h}!ByteOrder@{ByteOrder}}
\index{ByteOrder@{ByteOrder}!decode\_database.h@{decode\_database.h}}
\doxysubsubsection{\texorpdfstring{ByteOrder}{ByteOrder}}
{\footnotesize\ttfamily enum class \mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142b}{Byte\+Order}}\hspace{0.3cm}{\ttfamily [strong]}}
Signal byte order used for runtime decoding.
\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{Intel@{Intel}!decode\_database.h@{decode\_database.h}}\index{decode\_database.h@{decode\_database.h}!Intel@{Intel}}}\mbox{\Hypertarget{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142baff97a9fdede09eaf6e1c8ec9f6a61dd5}\label{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142baff97a9fdede09eaf6e1c8ec9f6a61dd5}}
Intel&\\
\hline
\raisebox{\heightof{T}}[0pt][0pt]{\index{Motorola@{Motorola}!decode\_database.h@{decode\_database.h}}\index{decode\_database.h@{decode\_database.h}!Motorola@{Motorola}}}\mbox{\Hypertarget{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142ba2ed1afe3c9215523e4272f46e6186b31}\label{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142ba2ed1afe3c9215523e4272f46e6186b31}}
Motorola&\\
\hline
\end{DoxyEnumFields}
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00023}{23}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
\mbox{\Hypertarget{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1}\label{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1}}
\index{decode\_database.h@{decode\_database.h}!ValueType@{ValueType}}
\index{ValueType@{ValueType}!decode\_database.h@{decode\_database.h}}
\doxysubsubsection{\texorpdfstring{ValueType}{ValueType}}
{\footnotesize\ttfamily enum class \mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1}{Value\+Type}}\hspace{0.3cm}{\ttfamily [strong]}}
Signal numeric type.
\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{Unsigned@{Unsigned}!decode\_database.h@{decode\_database.h}}\index{decode\_database.h@{decode\_database.h}!Unsigned@{Unsigned}}}\mbox{\Hypertarget{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1aa1a914735b205424ba6c40b85528d78a}\label{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1aa1a914735b205424ba6c40b85528d78a}}
Unsigned&\\
\hline
\raisebox{\heightof{T}}[0pt][0pt]{\index{Signed@{Signed}!decode\_database.h@{decode\_database.h}}\index{decode\_database.h@{decode\_database.h}!Signed@{Signed}}}\mbox{\Hypertarget{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1a71fed0c3428bf1a2e19af257c4bac379}\label{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1a71fed0c3428bf1a2e19af257c4bac379}}
Signed&\\
\hline
\end{DoxyEnumFields}
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00031}{31}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.

View File

@@ -0,0 +1,142 @@
\hypertarget{decode__database_8h_source}{}\doxysection{decode\+\_\+database.\+h}
\mbox{\hyperlink{decode__database_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00001}00001 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00002}00002 \textcolor{comment}{ * @file decode\_database.h}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00003}00003 \textcolor{comment}{ * @brief}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00005}00005 \textcolor{comment}{ * Created: 2026-\/03-\/13}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00006}00006 \textcolor{comment}{ * Author: Deeaitch (Dim. Himro)}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00008}00008 \textcolor{comment}{ * Licensed under the MIT License.}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00009}00009 \textcolor{comment}{ * See LICENSE file in the project root for full license text.}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00010}00010 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00011}00011 }
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00012}00012 \textcolor{preprocessor}{\#ifndef DECODE\_DATABASE\_H}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00013}00013 \textcolor{preprocessor}{\#define DECODE\_DATABASE\_H}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00014}00014 }
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00015}00015 \textcolor{preprocessor}{\#include <string>}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00016}00016 \textcolor{preprocessor}{\#include <vector>}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00017}00017 \textcolor{preprocessor}{\#include <unordered\_map>}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00018}00018 \textcolor{preprocessor}{\#include <cstdint>}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00019}00019 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00020}00020 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00021}00021 \textcolor{comment}{ * @brief Signal byte order used for runtime decoding.}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00022}00022 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00023}\mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142b}{00023}} \textcolor{keyword}{enum class} \mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142b}{ByteOrder}} \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00024}00024 \mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142baff97a9fdede09eaf6e1c8ec9f6a61dd5}{Intel}},}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00025}00025 \mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142ba2ed1afe3c9215523e4272f46e6186b31}{Motorola}}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00026}00026 \};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00027}00027 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00028}00028 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00029}00029 \textcolor{comment}{ * @brief Signal numeric type.}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00030}00030 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00031}\mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1}{00031}} \textcolor{keyword}{enum class} \mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1}{ValueType}} \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00032}00032 \mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1aa1a914735b205424ba6c40b85528d78a}{Unsigned}},}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00033}00033 \mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1a71fed0c3428bf1a2e19af257c4bac379}{Signed}}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00034}00034 \};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00035}00035 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00036}00036 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00037}00037 \textcolor{comment}{ * @brief Runtime-\/ready signal definition.}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00038}00038 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00039}\mbox{\hyperlink{structDecodeSignal}{00039}} \textcolor{keyword}{struct }\mbox{\hyperlink{structDecodeSignal}{DecodeSignal}} \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00040}\mbox{\hyperlink{structDecodeSignal_a58cf5844f2272a23dcb9687d912e4780}{00040}} std::string \mbox{\hyperlink{structDecodeSignal_a58cf5844f2272a23dcb9687d912e4780}{name}}; \textcolor{comment}{/**< Signal name. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00041}\mbox{\hyperlink{structDecodeSignal_aaf5d7527ddf65b6355c2b4f3626df22d}{00041}} std::uint32\_t \mbox{\hyperlink{structDecodeSignal_aaf5d7527ddf65b6355c2b4f3626df22d}{startBit}}; \textcolor{comment}{/**< DBC start bit. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00042}\mbox{\hyperlink{structDecodeSignal_acd4ef5ee30421d117b5756854302debb}{00042}} std::uint32\_t \mbox{\hyperlink{structDecodeSignal_acd4ef5ee30421d117b5756854302debb}{length}}; \textcolor{comment}{/**< Signal length in bits. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00043}\mbox{\hyperlink{structDecodeSignal_abdc4c4bb4a67a6d61d6ca81e8a52833d}{00043}} \mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142b}{ByteOrder}} \mbox{\hyperlink{structDecodeSignal_abdc4c4bb4a67a6d61d6ca81e8a52833d}{byteOrder}}; \textcolor{comment}{/**< Intel or Motorola. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00044}\mbox{\hyperlink{structDecodeSignal_a9d37638129263b8902ba5be59baf39a8}{00044}} \mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1}{ValueType}} \mbox{\hyperlink{structDecodeSignal_a9d37638129263b8902ba5be59baf39a8}{valueType}}; \textcolor{comment}{/**< Signed or unsigned. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00045}\mbox{\hyperlink{structDecodeSignal_a428c39913a366a8476dd291061354391}{00045}} \textcolor{keywordtype}{double} \mbox{\hyperlink{structDecodeSignal_a428c39913a366a8476dd291061354391}{factor}}; \textcolor{comment}{/**< Scaling factor. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00046}\mbox{\hyperlink{structDecodeSignal_a92db637af4e224a0ae70173050dc3f74}{00046}} \textcolor{keywordtype}{double} \mbox{\hyperlink{structDecodeSignal_a92db637af4e224a0ae70173050dc3f74}{offset}}; \textcolor{comment}{/**< Physical offset. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00047}\mbox{\hyperlink{structDecodeSignal_a0fb84e19a0ab3bd50b6f65c1075ebc25}{00047}} \textcolor{keywordtype}{double} \mbox{\hyperlink{structDecodeSignal_a0fb84e19a0ab3bd50b6f65c1075ebc25}{minimum}}; \textcolor{comment}{/**< Minimum physical value. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00048}\mbox{\hyperlink{structDecodeSignal_a4a6ba87142a9badbf0ca830e9e709cb7}{00048}} \textcolor{keywordtype}{double} \mbox{\hyperlink{structDecodeSignal_a4a6ba87142a9badbf0ca830e9e709cb7}{maximum}}; \textcolor{comment}{/**< Maximum physical value. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00049}\mbox{\hyperlink{structDecodeSignal_a38eed9ca7581423fd8bfbedcffc12092}{00049}} std::string \mbox{\hyperlink{structDecodeSignal_a38eed9ca7581423fd8bfbedcffc12092}{unit}}; \textcolor{comment}{/**< Physical unit. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00050}\mbox{\hyperlink{structDecodeSignal_abdbae62a64d2df716bf60c6b67b30eaa}{00050}} std::vector<std::string> \mbox{\hyperlink{structDecodeSignal_abdbae62a64d2df716bf60c6b67b30eaa}{receivers}}; \textcolor{comment}{/**< Receivers. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00051}\mbox{\hyperlink{structDecodeSignal_ae28c905d4a2bc86419c2a8361bfea473}{00051}} std::string \mbox{\hyperlink{structDecodeSignal_ae28c905d4a2bc86419c2a8361bfea473}{comment}}; \textcolor{comment}{/**< Comment. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00052}00052 }
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00053}\mbox{\hyperlink{structDecodeSignal_a93fd97267e2614979440261628e493f5}{00053}} \mbox{\hyperlink{structDecodeSignal_a93fd97267e2614979440261628e493f5}{DecodeSignal}}()}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00054}00054 : \mbox{\hyperlink{structDecodeSignal_a58cf5844f2272a23dcb9687d912e4780}{name}}()}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00055}00055 , \mbox{\hyperlink{structDecodeSignal_aaf5d7527ddf65b6355c2b4f3626df22d}{startBit}} (0U)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00056}00056 , \mbox{\hyperlink{structDecodeSignal_acd4ef5ee30421d117b5756854302debb}{length}} (0U)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00057}00057 , \mbox{\hyperlink{structDecodeSignal_abdc4c4bb4a67a6d61d6ca81e8a52833d}{byteOrder}} (\mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142b}{ByteOrder}}::\mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142baff97a9fdede09eaf6e1c8ec9f6a61dd5}{Intel}})}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00058}00058 , \mbox{\hyperlink{structDecodeSignal_a9d37638129263b8902ba5be59baf39a8}{valueType}} (\mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1}{ValueType}}::\mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1aa1a914735b205424ba6c40b85528d78a}{Unsigned}})}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00059}00059 , \mbox{\hyperlink{structDecodeSignal_a428c39913a366a8476dd291061354391}{factor}} (1.0)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00060}00060 , \mbox{\hyperlink{structDecodeSignal_a92db637af4e224a0ae70173050dc3f74}{offset}} (0.0)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00061}00061 , \mbox{\hyperlink{structDecodeSignal_a0fb84e19a0ab3bd50b6f65c1075ebc25}{minimum}} (0.0)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00062}00062 , \mbox{\hyperlink{structDecodeSignal_a4a6ba87142a9badbf0ca830e9e709cb7}{maximum}} (0.0)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00063}00063 , \mbox{\hyperlink{structDecodeSignal_a38eed9ca7581423fd8bfbedcffc12092}{unit}}()}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00064}00064 , \mbox{\hyperlink{structDecodeSignal_abdbae62a64d2df716bf60c6b67b30eaa}{receivers}}()}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00065}00065 , \mbox{\hyperlink{structDecodeSignal_ae28c905d4a2bc86419c2a8361bfea473}{comment}}() \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00066}00066 \}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00067}00067 \};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00068}00068 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00069}00069 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00070}00070 \textcolor{comment}{ * @brief Runtime-\/ready frame definition.}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00071}00071 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00072}\mbox{\hyperlink{structDecodeFrame}{00072}} \textcolor{keyword}{struct }\mbox{\hyperlink{structDecodeFrame}{DecodeFrame}} \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00073}\mbox{\hyperlink{structDecodeFrame_aa0a7f8fd5bfde2148dfd0d838328f579}{00073}} std::string \mbox{\hyperlink{structDecodeFrame_aa0a7f8fd5bfde2148dfd0d838328f579}{name}}; \textcolor{comment}{/**< Frame name. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00074}\mbox{\hyperlink{structDecodeFrame_a52e10215388db7df8b541b9d9909edcf}{00074}} std::uint32\_t \mbox{\hyperlink{structDecodeFrame_a52e10215388db7df8b541b9d9909edcf}{canId}}; \textcolor{comment}{/**< Normalized CAN ID. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00075}\mbox{\hyperlink{structDecodeFrame_a3ee2348d781f8f15aaf87e8dcf57ec41}{00075}} \textcolor{keywordtype}{bool} \mbox{\hyperlink{structDecodeFrame_a3ee2348d781f8f15aaf87e8dcf57ec41}{isExtended}}; \textcolor{comment}{/**< true for extended frame. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00076}\mbox{\hyperlink{structDecodeFrame_a51111ac13988be372d5673d12cf3e060}{00076}} std::uint8\_t \mbox{\hyperlink{structDecodeFrame_a51111ac13988be372d5673d12cf3e060}{dlc}}; \textcolor{comment}{/**< Payload length. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00077}\mbox{\hyperlink{structDecodeFrame_a1d3c54055c0cbceb73adf551f7067f23}{00077}} std::uint32\_t \mbox{\hyperlink{structDecodeFrame_a1d3c54055c0cbceb73adf551f7067f23}{pgn}}; \textcolor{comment}{/**< PGN if available. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00078}\mbox{\hyperlink{structDecodeFrame_a2551102670c4a540fced4c71da0b369d}{00078}} \textcolor{keywordtype}{bool} \mbox{\hyperlink{structDecodeFrame_a2551102670c4a540fced4c71da0b369d}{hasPgn}}; \textcolor{comment}{/**< true if PGN is valid. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00079}\mbox{\hyperlink{structDecodeFrame_ad78241dc40c793aabb8495b6989b81a9}{00079}} std::string \mbox{\hyperlink{structDecodeFrame_ad78241dc40c793aabb8495b6989b81a9}{transmitter}}; \textcolor{comment}{/**< Transmitter ECU. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00080}\mbox{\hyperlink{structDecodeFrame_a25819ef907a32391af5c9f7cae9cdb22}{00080}} std::string \mbox{\hyperlink{structDecodeFrame_a25819ef907a32391af5c9f7cae9cdb22}{comment}}; \textcolor{comment}{/**< Frame comment. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00081}\mbox{\hyperlink{structDecodeFrame_a372afd9e74f1ae33f85cb4acfd3e2036}{00081}} std::vector<DecodeSignal> \mbox{\hyperlink{structDecodeFrame_a372afd9e74f1ae33f85cb4acfd3e2036}{signals}}; \textcolor{comment}{/**< Signal definitions. */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00082}00082 }
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00083}\mbox{\hyperlink{structDecodeFrame_ae6ae88ee29bcaff936e7c7b2380f96b4}{00083}} \mbox{\hyperlink{structDecodeFrame_ae6ae88ee29bcaff936e7c7b2380f96b4}{DecodeFrame}}()}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00084}00084 : \mbox{\hyperlink{structDecodeFrame_aa0a7f8fd5bfde2148dfd0d838328f579}{name}}()}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00085}00085 , \mbox{\hyperlink{structDecodeFrame_a52e10215388db7df8b541b9d9909edcf}{canId}} (0U)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00086}00086 , \mbox{\hyperlink{structDecodeFrame_a3ee2348d781f8f15aaf87e8dcf57ec41}{isExtended}} (false)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00087}00087 , \mbox{\hyperlink{structDecodeFrame_a51111ac13988be372d5673d12cf3e060}{dlc}} (0U)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00088}00088 , \mbox{\hyperlink{structDecodeFrame_a1d3c54055c0cbceb73adf551f7067f23}{pgn}} (0U)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00089}00089 , \mbox{\hyperlink{structDecodeFrame_a2551102670c4a540fced4c71da0b369d}{hasPgn}} (false)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00090}00090 , \mbox{\hyperlink{structDecodeFrame_ad78241dc40c793aabb8495b6989b81a9}{transmitter}}()}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00091}00091 , \mbox{\hyperlink{structDecodeFrame_a25819ef907a32391af5c9f7cae9cdb22}{comment}}()}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00092}00092 , \mbox{\hyperlink{structDecodeFrame_a372afd9e74f1ae33f85cb4acfd3e2036}{signals}}() \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00093}00093 \}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00094}00094 \};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00095}00095 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00096}00096 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00097}00097 \textcolor{comment}{ * @brief Key for fast frame lookup.}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00098}00098 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00099}\mbox{\hyperlink{structFrameKey}{00099}} \textcolor{keyword}{struct }\mbox{\hyperlink{structFrameKey}{FrameKey}} \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00100}\mbox{\hyperlink{structFrameKey_a022917652b4d3c2f2dfcc5a13ab7caa4}{00100}} std::uint32\_t \mbox{\hyperlink{structFrameKey_a022917652b4d3c2f2dfcc5a13ab7caa4}{canId}};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00101}\mbox{\hyperlink{structFrameKey_aa3179b709d02ef70cf0e736f040a2145}{00101}} \textcolor{keywordtype}{bool} \mbox{\hyperlink{structFrameKey_aa3179b709d02ef70cf0e736f040a2145}{isExtended}};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00102}00102 }
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00103}\mbox{\hyperlink{structFrameKey_a0e9aad56b251cdf802d45a9c19050b14}{00103}} \mbox{\hyperlink{structFrameKey_a0e9aad56b251cdf802d45a9c19050b14}{FrameKey}}()}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00104}00104 : \mbox{\hyperlink{structFrameKey_a022917652b4d3c2f2dfcc5a13ab7caa4}{canId}} (0U)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00105}00105 , \mbox{\hyperlink{structFrameKey_aa3179b709d02ef70cf0e736f040a2145}{isExtended}} (false) \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00106}00106 \}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00107}00107 }
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00108}\mbox{\hyperlink{structFrameKey_a33bde405c7ea53000d54b3dd6e058670}{00108}} \mbox{\hyperlink{structFrameKey_a33bde405c7ea53000d54b3dd6e058670}{FrameKey}} (std::uint32\_t \textcolor{keywordtype}{id}, \textcolor{keywordtype}{bool} extended)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00109}00109 : \mbox{\hyperlink{structFrameKey_a022917652b4d3c2f2dfcc5a13ab7caa4}{canId}} (id)}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00110}00110 , \mbox{\hyperlink{structFrameKey_aa3179b709d02ef70cf0e736f040a2145}{isExtended}} (extended) \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00111}00111 \}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00112}00112 }
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00113}\mbox{\hyperlink{structFrameKey_aaaec9f914e127787247fcda5e183b01f}{00113}} \textcolor{keywordtype}{bool} \mbox{\hyperlink{structFrameKey_aaaec9f914e127787247fcda5e183b01f}{operator== }}(\textcolor{keyword}{const} \mbox{\hyperlink{structFrameKey}{FrameKey}} \&other)\textcolor{keyword}{ const }\{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00114}00114 \textcolor{keywordflow}{return} (\mbox{\hyperlink{structFrameKey_a022917652b4d3c2f2dfcc5a13ab7caa4}{canId}} == other.\mbox{\hyperlink{structFrameKey_a022917652b4d3c2f2dfcc5a13ab7caa4}{canId}}) \&\& (\mbox{\hyperlink{structFrameKey_aa3179b709d02ef70cf0e736f040a2145}{isExtended}} == other.\mbox{\hyperlink{structFrameKey_aa3179b709d02ef70cf0e736f040a2145}{isExtended}});}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00115}00115 \}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00116}00116 \};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00117}00117 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00118}00118 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00119}00119 \textcolor{comment}{ * @brief Hasher for frame key.}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00120}00120 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00121}\mbox{\hyperlink{structFrameKeyHasher}{00121}} \textcolor{keyword}{struct }\mbox{\hyperlink{structFrameKeyHasher}{FrameKeyHasher}} \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00122}\mbox{\hyperlink{structFrameKeyHasher_a1612ce56b513790e3ed4c06ec7d28b9f}{00122}} std::size\_t \mbox{\hyperlink{structFrameKeyHasher_a1612ce56b513790e3ed4c06ec7d28b9f}{operator() }}(\textcolor{keyword}{const} \mbox{\hyperlink{structFrameKey}{FrameKey}} \&key)\textcolor{keyword}{ const }\{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00123}00123 \textcolor{keyword}{const} std::size\_t a = \textcolor{keyword}{static\_cast<}std::size\_t\textcolor{keyword}{>} (key.\mbox{\hyperlink{structFrameKey_a022917652b4d3c2f2dfcc5a13ab7caa4}{canId}});}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00124}00124 \textcolor{keyword}{const} std::size\_t b = key.\mbox{\hyperlink{structFrameKey_aa3179b709d02ef70cf0e736f040a2145}{isExtended}} ? 1U : 0U;}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00125}00125 \textcolor{keywordflow}{return} (a * 1315423911U) \string^ b;}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00126}00126 \}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00127}00127 \};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00128}00128 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00129}00129 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00130}00130 \textcolor{comment}{ * @brief Runtime decode database with fast lookup by CAN ID.}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00131}00131 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00132}\mbox{\hyperlink{structDecodeDatabase}{00132}} \textcolor{keyword}{struct }\mbox{\hyperlink{structDecodeDatabase}{DecodeDatabase}} \{}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00133}\mbox{\hyperlink{structDecodeDatabase_a2bd4ddfc2602c1de4e12a373bfc93072}{00133}} std::vector<DecodeFrame> \mbox{\hyperlink{structDecodeDatabase_a2bd4ddfc2602c1de4e12a373bfc93072}{frames}};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00134}\mbox{\hyperlink{structDecodeDatabase_ae4fd1351008bb0dce337821a849100c5}{00134}} std::unordered\_map<FrameKey, std::size\_t, FrameKeyHasher> \mbox{\hyperlink{structDecodeDatabase_ae4fd1351008bb0dce337821a849100c5}{frameIndexByKey}};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00135}00135 \};}
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00136}00136 }
\DoxyCodeLine{\Hypertarget{decode__database_8h_source_l00137}00137 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* DECODE\_DATABASE\_H */}\textcolor{preprocessor}{}}
\end{DoxyCode}

596
docs/latex/doxygen.sty Normal file
View File

@@ -0,0 +1,596 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{doxygen}
% Packages used by this style file
\RequirePackage{alltt}
%%\RequirePackage{array} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package
\RequirePackage{calc}
\RequirePackage{float}
%%\RequirePackage{ifthen} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package
\RequirePackage{verbatim}
\RequirePackage[table]{xcolor}
\RequirePackage{longtable_doxygen}
\RequirePackage{tabu_doxygen}
\RequirePackage{fancyvrb}
\RequirePackage{tabularx}
\RequirePackage{multicol}
\RequirePackage{multirow}
\RequirePackage{hanging}
\RequirePackage{ifpdf}
\RequirePackage{adjustbox}
\RequirePackage{amssymb}
\RequirePackage{stackengine}
\RequirePackage{enumitem}
\RequirePackage{alphalph}
\RequirePackage[normalem]{ulem} % for strikeout, but don't modify emphasis
\RequirePackage{enumitem}
%---------- Internal commands used in this style file ----------------
\newcommand{\ensurespace}[1]{%
\begingroup%
\setlength{\dimen@}{#1}%
\vskip\z@\@plus\dimen@%
\penalty -100\vskip\z@\@plus -\dimen@%
\vskip\dimen@%
\penalty 9999%
\vskip -\dimen@%
\vskip\z@skip% hide the previous |\vskip| from |\addvspace|
\endgroup%
}
\newcommand{\DoxyHorRuler}[1]{%
\setlength{\parskip}{0ex plus 0ex minus 0ex}%
\ifthenelse{#1=0}%
{%
\hrule%
}%
{%
\hrulefilll%
}%
}
\newcommand{\DoxyLabelFont}{}
\newcommand{\entrylabel}[1]{%
{%
\parbox[b]{\labelwidth-4pt}{%
\makebox[0pt][l]{\DoxyLabelFont#1}%
\vspace{1.5\baselineskip}%
}%
}%
}
\newenvironment{DoxyDesc}[1]{%
\ensurespace{4\baselineskip}%
\begin{list}{}{%
\settowidth{\labelwidth}{20pt}%
%\setlength{\parsep}{0pt}%
\setlength{\itemsep}{0pt}%
\setlength{\leftmargin}{\labelwidth+\labelsep}%
\renewcommand{\makelabel}{\entrylabel}%
}%
\item[#1]%
}{%
\end{list}%
}
\newsavebox{\xrefbox}
\newlength{\xreflength}
\newcommand{\xreflabel}[1]{%
\sbox{\xrefbox}{#1}%
\setlength{\xreflength}{\wd\xrefbox}%
\ifthenelse{\xreflength>\labelwidth}{%
\begin{minipage}{\textwidth}%
\setlength{\parindent}{0pt}%
\hangindent=15pt\bfseries #1\vspace{1.2\itemsep}%
\end{minipage}%
}{%
\parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}%
}%
}
%---------- Commands used by doxygen LaTeX output generator ----------
% Used by <pre> ... </pre>
\newenvironment{DoxyPre}{%
\small%
\begin{alltt}%
}{%
\end{alltt}%
\normalsize%
}
% Necessary for redefining not defined characters, i.e. "Replacement Character" in tex output.
\newlength{\CodeWidthChar}
\newlength{\CodeHeightChar}
\settowidth{\CodeWidthChar}{?}
\settoheight{\CodeHeightChar}{?}
% Necessary for hanging indent
\newlength{\DoxyCodeWidth}
\newcommand\DoxyCodeLine[1]{\hangpara{\DoxyCodeWidth}{1}{#1}\par}
\newcommand\NiceSpace{%
\discretionary{}{\kern\fontdimen2\font}{\kern\fontdimen2\font}%
}
% Used by @code ... @endcode
\newenvironment{DoxyCode}[1]{%
\par%
\scriptsize%
\normalfont\ttfamily%
\rightskip0pt plus 1fil%
\settowidth{\DoxyCodeWidth}{000000}%
\settowidth{\CodeWidthChar}{?}%
\settoheight{\CodeHeightChar}{?}%
\setlength{\parskip}{0ex plus 0ex minus 0ex}%
\ifthenelse{\equal{#1}{0}}
{
{\lccode`~32 \lowercase{\global\let~}\NiceSpace}\obeyspaces%
}
{
{\lccode`~32 \lowercase{\global\let~}}\obeyspaces%
}
}{%
\normalfont%
\normalsize%
\settowidth{\CodeWidthChar}{?}%
\settoheight{\CodeHeightChar}{?}%
}
% Redefining not defined characters, i.e. "Replacement Character" in tex output.
\def\ucr{\adjustbox{width=\CodeWidthChar,height=\CodeHeightChar}{\stackinset{c}{}{c}{-.2pt}{%
\textcolor{white}{\sffamily\bfseries\small ?}}{%
\rotatebox{45}{$\blacksquare$}}}}
% Used by @example, @include, @includelineno and @dontinclude
\newenvironment{DoxyCodeInclude}[1]{%
\DoxyCode{#1}%
}{%
\endDoxyCode%
}
% Used by @verbatim ... @endverbatim
\newenvironment{DoxyVerb}{%
\par%
\footnotesize%
\verbatim%
}{%
\endverbatim%
\normalsize%
}
% Used by @verbinclude
\newenvironment{DoxyVerbInclude}{%
\DoxyVerb%
}{%
\endDoxyVerb%
}
% Used by numbered lists (using '-#' or <ol> ... </ol>)
\setlistdepth{12}
\newlist{DoxyEnumerate}{enumerate}{12}
\setlist[DoxyEnumerate,1]{label=\arabic*.}
\setlist[DoxyEnumerate,2]{label=(\enumalphalphcnt*)}
\setlist[DoxyEnumerate,3]{label=\roman*.}
\setlist[DoxyEnumerate,4]{label=\enumAlphAlphcnt*.}
\setlist[DoxyEnumerate,5]{label=\arabic*.}
\setlist[DoxyEnumerate,6]{label=(\enumalphalphcnt*)}
\setlist[DoxyEnumerate,7]{label=\roman*.}
\setlist[DoxyEnumerate,8]{label=\enumAlphAlphcnt*.}
\setlist[DoxyEnumerate,9]{label=\arabic*.}
\setlist[DoxyEnumerate,10]{label=(\enumalphalphcnt*)}
\setlist[DoxyEnumerate,11]{label=\roman*.}
\setlist[DoxyEnumerate,12]{label=\enumAlphAlphcnt*.}
% Used by bullet lists (using '-', @li, @arg, or <ul> ... </ul>)
\setlistdepth{12}
\newlist{DoxyItemize}{itemize}{12}
\setlist[DoxyItemize]{label=\textperiodcentered}
\setlist[DoxyItemize,1]{label=\textbullet}
\setlist[DoxyItemize,2]{label=\normalfont\bfseries \textendash}
\setlist[DoxyItemize,3]{label=\textasteriskcentered}
\setlist[DoxyItemize,4]{label=\textperiodcentered}
% Used by description lists (using <dl> ... </dl>)
\newenvironment{DoxyDescription}{%
\description%
}{%
\enddescription%
}
% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
% (only if caption is specified)
\newenvironment{DoxyImage}{%
\begin{figure}[H]%
\centering%
}{%
\end{figure}%
}
% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
% (only if no caption is specified)
\newenvironment{DoxyImageNoCaption}{%
\begin{center}%
}{%
\end{center}%
}
% Used by @image
% (only if inline is specified)
\newenvironment{DoxyInlineImage}{%
}{%
}
% Used by @attention
\newenvironment{DoxyAttention}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @author and @authors
\newenvironment{DoxyAuthor}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @date
\newenvironment{DoxyDate}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @invariant
\newenvironment{DoxyInvariant}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @note
\newenvironment{DoxyNote}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @post
\newenvironment{DoxyPostcond}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @pre
\newenvironment{DoxyPrecond}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @copyright
\newenvironment{DoxyCopyright}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @remark
\newenvironment{DoxyRemark}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @return and @returns
\newenvironment{DoxyReturn}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @since
\newenvironment{DoxySince}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @see
\newenvironment{DoxySeeAlso}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @version
\newenvironment{DoxyVersion}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @warning
\newenvironment{DoxyWarning}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by @par and @paragraph
\newenvironment{DoxyParagraph}[1]{%
\begin{DoxyDesc}{#1}%
}{%
\end{DoxyDesc}%
}
% Used by parameter lists
\newenvironment{DoxyParams}[2][]{%
\tabulinesep=1mm%
\par%
\ifthenelse{\equal{#1}{}}%
{\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description
{\ifthenelse{\equal{#1}{1}}%
{\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc
{\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc
}
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
\hline%
\endfirsthead%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
\hline%
\endhead%
}{%
\end{longtabu*}%
\vspace{6pt}%
}
% Used for fields of simple structs
\newenvironment{DoxyFields}[1]{%
\tabulinesep=1mm%
\par%
\begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}%
\multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endfirsthead%
\multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endhead%
}{%
\end{longtabu*}%
\vspace{6pt}%
}
% Used for fields simple class style enums
\newenvironment{DoxyEnumFields}[1]{%
\tabulinesep=1mm%
\par%
\begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endfirsthead%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endhead%
}{%
\end{longtabu*}%
\vspace{6pt}%
}
% Used for parameters within a detailed function description
\newenvironment{DoxyParamCaption}{%
\renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}%
}{%
}
% Used by return value lists
\newenvironment{DoxyRetVals}[1]{%
\tabulinesep=1mm%
\par%
\begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endfirsthead%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endhead%
}{%
\end{longtabu*}%
\vspace{6pt}%
}
% Used by exception lists
\newenvironment{DoxyExceptions}[1]{%
\tabulinesep=1mm%
\par%
\begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endfirsthead%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endhead%
}{%
\end{longtabu*}%
\vspace{6pt}%
}
% Used by template parameter lists
\newenvironment{DoxyTemplParams}[1]{%
\tabulinesep=1mm%
\par%
\begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endfirsthead%
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
\hline%
\endhead%
}{%
\end{longtabu*}%
\vspace{6pt}%
}
% Used for member lists
\newenvironment{DoxyCompactItemize}{%
\begin{itemize}%
\setlength{\itemsep}{-3pt}%
\setlength{\parsep}{0pt}%
\setlength{\topsep}{0pt}%
\setlength{\partopsep}{0pt}%
}{%
\end{itemize}%
}
% Used for member descriptions
\newenvironment{DoxyCompactList}{%
\begin{list}{}{%
\setlength{\leftmargin}{0.5cm}%
\setlength{\itemsep}{0pt}%
\setlength{\parsep}{0pt}%
\setlength{\topsep}{0pt}%
\renewcommand{\makelabel}{\hfill}%
}%
}{%
\end{list}%
}
% Used for reference lists (@bug, @deprecated, @todo, etc.)
\newenvironment{DoxyRefList}{%
\begin{list}{}{%
\setlength{\labelwidth}{10pt}%
\setlength{\leftmargin}{\labelwidth}%
\addtolength{\leftmargin}{\labelsep}%
\renewcommand{\makelabel}{\xreflabel}%
}%
}{%
\end{list}%
}
% Used by @bug, @deprecated, @todo, etc.
\newenvironment{DoxyRefDesc}[1]{%
\begin{list}{}{%
\renewcommand\makelabel[1]{\textbf{##1}}%
\settowidth\labelwidth{\makelabel{#1}}%
\setlength\leftmargin{\labelwidth+\labelsep}%
}%
}{%
\end{list}%
}
% Used by parameter lists and simple sections
\newenvironment{Desc}
{\begin{list}{}{%
\settowidth{\labelwidth}{20pt}%
\setlength{\parsep}{0pt}%
\setlength{\itemsep}{0pt}%
\setlength{\leftmargin}{\labelwidth+\labelsep}%
\renewcommand{\makelabel}{\entrylabel}%
}
}{%
\end{list}%
}
% Used by tables
\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}%
\newenvironment{TabularC}[1]%
{\tabulinesep=1mm
\begin{longtabu*}spread 0pt [c]{*#1{|X[-1]}|}}%
{\end{longtabu*}\par}%
\newenvironment{TabularNC}[1]%
{\begin{tabu}spread 0pt [l]{*#1{|X[-1]}|}}%
{\end{tabu}\par}%
% Used for member group headers
\newenvironment{Indent}{%
\begin{list}{}{%
\setlength{\leftmargin}{0.5cm}%
}%
\item[]\ignorespaces%
}{%
\unskip%
\end{list}%
}
% Used when hyperlinks are turned off
\newcommand{\doxyref}[3]{%
\textbf{#1} (\textnormal{#2}\,\pageref{#3})%
}
% Used to link to a table when hyperlinks are turned on
\newcommand{\doxytablelink}[2]{%
\ref{#1}%
}
% Used to link to a table when hyperlinks are turned off
\newcommand{\doxytableref}[3]{%
\ref{#3}%
}
% Used by @addindex
\newcommand{\lcurly}{\{}
\newcommand{\rcurly}{\}}
% Colors used for syntax highlighting
\definecolor{comment}{rgb}{0.5,0.0,0.0}
\definecolor{keyword}{rgb}{0.0,0.5,0.0}
\definecolor{keywordtype}{rgb}{0.38,0.25,0.125}
\definecolor{keywordflow}{rgb}{0.88,0.5,0.0}
\definecolor{preprocessor}{rgb}{0.5,0.38,0.125}
\definecolor{stringliteral}{rgb}{0.0,0.125,0.25}
\definecolor{charliteral}{rgb}{0.0,0.5,0.5}
\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0}
\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43}
\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0}
\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0}
% Color used for table heading
\newcommand{\tableheadbgcolor}{lightgray}%
% Version of hypertarget with correct landing location
\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}}
% possibility to have sections etc. be within the margins
% unfortunately had to copy part of book.cls and add \raggedright
\makeatletter
\newcommand\doxysection{\@startsection {section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
{\raggedright\normalfont\Large\bfseries}}
\newcommand\doxysubsection{\@startsection{subsection}{2}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\raggedright\normalfont\large\bfseries}}
\newcommand\doxysubsubsection{\@startsection{subsubsection}{3}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\raggedright\normalfont\normalsize\bfseries}}
\newcommand\doxyparagraph{\@startsection{paragraph}{4}{\z@}%
{3.25ex \@plus1ex \@minus.2ex}%
{-1em}%
{\raggedright\normalfont\normalsize\bfseries}}
\newcommand\doxysubparagraph{\@startsection{subparagraph}{5}{\parindent}%
{3.25ex \@plus1ex \@minus .2ex}%
{-1em}%
{\raggedright\normalfont\normalsize\bfseries}}
\makeatother
% Define caption that is also suitable in a table
\makeatletter
\def\doxyfigcaption{%
\H@refstepcounter{figure}%
\@dblarg{\@caption{figure}}}
\makeatother
% Define alpha enumarative names for counters > 26
\makeatletter
\def\enumalphalphcnt#1{\expandafter\@enumalphalphcnt\csname c@#1\endcsname}
\def\@enumalphalphcnt#1{\alphalph{#1}}
\def\enumAlphAlphcnt#1{\expandafter\@enumAlphAlphcnt\csname c@#1\endcsname}
\def\@enumAlphAlphcnt#1{\AlphAlph{#1}}
\makeatother
\AddEnumerateCounter{\enumalphalphcnt}{\@enumalphalphcnt}{aa}
\AddEnumerateCounter{\enumAlphAlphcnt}{\@enumAlphAlphcnt}{AA}

18
docs/latex/files.tex Normal file
View File

@@ -0,0 +1,18 @@
\doxysection{File List}
Here is a list of all files with brief descriptions\+:\begin{DoxyCompactList}
\item\contentsline{section}{\mbox{\hyperlink{dbc__database_8h}{dbc\+\_\+database.\+h}} \\*Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro) }{\pageref{dbc__database_8h}}{}
\item\contentsline{section}{\mbox{\hyperlink{dbc__decode__builder_8cpp}{dbc\+\_\+decode\+\_\+builder.\+cpp}} \\*Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro) }{\pageref{dbc__decode__builder_8cpp}}{}
\item\contentsline{section}{\mbox{\hyperlink{dbc__decode__builder_8h}{dbc\+\_\+decode\+\_\+builder.\+h}} \\*Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro) }{\pageref{dbc__decode__builder_8h}}{}
\item\contentsline{section}{\mbox{\hyperlink{dbc__decoder_8cpp}{dbc\+\_\+decoder.\+cpp}} \\*Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro) }{\pageref{dbc__decoder_8cpp}}{}
\item\contentsline{section}{\mbox{\hyperlink{dbc__decoder_8h}{dbc\+\_\+decoder.\+h}} \\*Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro) }{\pageref{dbc__decoder_8h}}{}
\item\contentsline{section}{\mbox{\hyperlink{dbc__parser_8cpp}{dbc\+\_\+parser.\+cpp}} \\*Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro) }{\pageref{dbc__parser_8cpp}}{}
\item\contentsline{section}{\mbox{\hyperlink{dbc__parser_8h}{dbc\+\_\+parser.\+h}} \\*Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro) }{\pageref{dbc__parser_8h}}{}
\item\contentsline{section}{\mbox{\hyperlink{dbc__tree__builder_8cpp}{dbc\+\_\+tree\+\_\+builder.\+cpp}} \\*Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro) }{\pageref{dbc__tree__builder_8cpp}}{}
\item\contentsline{section}{\mbox{\hyperlink{dbc__tree__builder_8h}{dbc\+\_\+tree\+\_\+builder.\+h}} \\*Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro) }{\pageref{dbc__tree__builder_8h}}{}
\item\contentsline{section}{\mbox{\hyperlink{decode__database_8h}{decode\+\_\+database.\+h}} \\*Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro) }{\pageref{decode__database_8h}}{}
\item\contentsline{section}{\mbox{\hyperlink{frame__info_8h}{frame\+\_\+info.\+h}} \\*Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro) }{\pageref{frame__info_8h}}{}
\item\contentsline{section}{\mbox{\hyperlink{main_8cpp}{main.\+cpp}} \\*Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro) }{\pageref{main_8cpp}}{}
\item\contentsline{section}{\mbox{\hyperlink{signal__info_8h}{signal\+\_\+info.\+h}} \\*Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro) }{\pageref{signal__info_8h}}{}
\item\contentsline{section}{\mbox{\hyperlink{tree__node_8cpp}{tree\+\_\+node.\+cpp}} \\*Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro) }{\pageref{tree__node_8cpp}}{}
\item\contentsline{section}{\mbox{\hyperlink{tree__node_8h}{tree\+\_\+node.\+h}} \\*Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro) }{\pageref{tree__node_8h}}{}
\end{DoxyCompactList}

View File

@@ -0,0 +1,25 @@
\hypertarget{frame__info_8h}{}\doxysection{frame\+\_\+info.\+h File Reference}
\label{frame__info_8h}\index{frame\_info.h@{frame\_info.h}}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
{\ttfamily \#include $<$string$>$}\newline
{\ttfamily \#include $<$vector$>$}\newline
{\ttfamily \#include $<$cstdint$>$}\newline
{\ttfamily \#include \char`\"{}signal\+\_\+info.\+h\char`\"{}}\newline
\doxysubsection*{Classes}
\begin{DoxyCompactItemize}
\item
struct \mbox{\hyperlink{structFrameInfo}{Frame\+Info}}
\begin{DoxyCompactList}\small\item\em Describes one CAN frame from a DBC file. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
Licensed under the MIT License. See LICENSE file in the project root for full license text.
Definition in file \mbox{\hyperlink{frame__info_8h_source}{frame\+\_\+info.\+h}}.

View File

@@ -0,0 +1,53 @@
\hypertarget{frame__info_8h_source}{}\doxysection{frame\+\_\+info.\+h}
\mbox{\hyperlink{frame__info_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00001}00001 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00002}00002 \textcolor{comment}{ * @file frame\_info.h}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00003}00003 \textcolor{comment}{ * @brief}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00005}00005 \textcolor{comment}{ * Created: 2026-\/03-\/13}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00006}00006 \textcolor{comment}{ * Author: Deeaitch (Dim. Himro)}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00008}00008 \textcolor{comment}{ * Licensed under the MIT License.}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00009}00009 \textcolor{comment}{ * See LICENSE file in the project root for full license text.}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00010}00010 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00011}00011 }
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00012}00012 \textcolor{preprocessor}{\#ifndef FRAME\_INFO\_H}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00013}00013 \textcolor{preprocessor}{\#define FRAME\_INFO\_H}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00014}00014 }
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00015}00015 \textcolor{preprocessor}{\#include <string>}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00016}00016 \textcolor{preprocessor}{\#include <vector>}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00017}00017 \textcolor{preprocessor}{\#include <cstdint>}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00018}00018 }
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00019}00019 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{signal__info_8h}{signal\_info.h}}"{}}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00020}00020 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00021}00021 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00022}00022 \textcolor{comment}{ * @brief Describes one CAN frame from a DBC file.}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00023}00023 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00024}\mbox{\hyperlink{structFrameInfo}{00024}} \textcolor{keyword}{struct }\mbox{\hyperlink{structFrameInfo}{FrameInfo}} \{}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00025}\mbox{\hyperlink{structFrameInfo_abb53a7f93ed7abc0ea1ae4a8ccafcdcb}{00025}} std::string \mbox{\hyperlink{structFrameInfo_abb53a7f93ed7abc0ea1ae4a8ccafcdcb}{name}}; \textcolor{comment}{/**< Frame name. */}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00026}\mbox{\hyperlink{structFrameInfo_af470b0742c05bfbffc31c51a68f5c05e}{00026}} std::uint32\_t \mbox{\hyperlink{structFrameInfo_af470b0742c05bfbffc31c51a68f5c05e}{canId}}; \textcolor{comment}{/**< Normalized CAN identifier. */}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00027}\mbox{\hyperlink{structFrameInfo_a34b726afaad2ac5c697fdb2ac070cdaf}{00027}} \textcolor{keywordtype}{bool} \mbox{\hyperlink{structFrameInfo_a34b726afaad2ac5c697fdb2ac070cdaf}{isExtended}}; \textcolor{comment}{/**< true for extended frame. */}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00028}\mbox{\hyperlink{structFrameInfo_aee518b33f1000bf0b7f6e4a87474c943}{00028}} std::uint32\_t \mbox{\hyperlink{structFrameInfo_aee518b33f1000bf0b7f6e4a87474c943}{pgn}}; \textcolor{comment}{/**< J1939 PGN if applicable. */}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00029}\mbox{\hyperlink{structFrameInfo_a4737a5420213ad4304724e39f3a4e55d}{00029}} \textcolor{keywordtype}{bool} \mbox{\hyperlink{structFrameInfo_a4737a5420213ad4304724e39f3a4e55d}{hasPgn}}; \textcolor{comment}{/**< true if PGN was derived. */}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00030}\mbox{\hyperlink{structFrameInfo_aa2b198ea0f55e560c123d35e7b3ecab9}{00030}} std::uint8\_t \mbox{\hyperlink{structFrameInfo_aa2b198ea0f55e560c123d35e7b3ecab9}{dlc}}; \textcolor{comment}{/**< Frame payload length. */}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00031}\mbox{\hyperlink{structFrameInfo_a92749ec3798d4211a505860fb389a9e8}{00031}} std::string \mbox{\hyperlink{structFrameInfo_a92749ec3798d4211a505860fb389a9e8}{transmitter}}; \textcolor{comment}{/**< Transmitter ECU name. */}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00032}\mbox{\hyperlink{structFrameInfo_ace75121294f9d89b762080ab5643293c}{00032}} std::string \mbox{\hyperlink{structFrameInfo_ace75121294f9d89b762080ab5643293c}{comment}}; \textcolor{comment}{/**< Optional frame comment. */}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00033}\mbox{\hyperlink{structFrameInfo_a942937027f1af06536f98cc23b2bf6ce}{00033}} std::vector<SignalInfo> \mbox{\hyperlink{structFrameInfo_a942937027f1af06536f98cc23b2bf6ce}{signals}}; \textcolor{comment}{/**< Signals contained in the frame. */}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00034}00034 }
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00035}\mbox{\hyperlink{structFrameInfo_a7f2d192b7969f7b60479a48e1f7eba61}{00035}} \mbox{\hyperlink{structFrameInfo_a7f2d192b7969f7b60479a48e1f7eba61}{FrameInfo}}()}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00036}00036 : \mbox{\hyperlink{structFrameInfo_abb53a7f93ed7abc0ea1ae4a8ccafcdcb}{name}}()}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00037}00037 , \mbox{\hyperlink{structFrameInfo_af470b0742c05bfbffc31c51a68f5c05e}{canId}} (0U)}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00038}00038 , \mbox{\hyperlink{structFrameInfo_a34b726afaad2ac5c697fdb2ac070cdaf}{isExtended}} (false)}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00039}00039 , \mbox{\hyperlink{structFrameInfo_aee518b33f1000bf0b7f6e4a87474c943}{pgn}} (0U)}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00040}00040 , \mbox{\hyperlink{structFrameInfo_a4737a5420213ad4304724e39f3a4e55d}{hasPgn}} (false)}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00041}00041 , \mbox{\hyperlink{structFrameInfo_aa2b198ea0f55e560c123d35e7b3ecab9}{dlc}} (0U)}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00042}00042 , \mbox{\hyperlink{structFrameInfo_a92749ec3798d4211a505860fb389a9e8}{transmitter}}()}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00043}00043 , \mbox{\hyperlink{structFrameInfo_ace75121294f9d89b762080ab5643293c}{comment}}()}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00044}00044 , \mbox{\hyperlink{structFrameInfo_a942937027f1af06536f98cc23b2bf6ce}{signals}}() \{}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00045}00045 \}}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00046}00046 \};}
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00047}00047 }
\DoxyCodeLine{\Hypertarget{frame__info_8h_source_l00048}00048 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* FRAME\_INFO\_H */}\textcolor{preprocessor}{}}
\end{DoxyCode}

View File

@@ -0,0 +1,448 @@
%%
%% This is file `longtable.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% longtable.dtx (with options: `package')
%%
%% This is a generated file.
%%
%% The source is maintained by the LaTeX Project team and bug
%% reports for it can be opened at http://latex-project.org/bugs.html
%% (but please observe conditions on bug reports sent to that address!)
%%
%% Copyright 1993-2016
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
%% --------------------------------------------------------------------------
%%
%% It may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
%% This file may only be distributed together with a copy of the LaTeX
%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle'
%% without such generated files.
%%
%% The list of all files belonging to the LaTeX `Tools Bundle' is
%% given in the file `manifest.txt'.
%%
%% File: longtable.dtx Copyright (C) 1990-2001 David Carlisle
\NeedsTeXFormat{LaTeX2e}[1995/06/01]
\ProvidesPackage{longtable_doxygen}
[2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen]
\def\LT@err{\PackageError{longtable}}
\def\LT@warn{\PackageWarning{longtable}}
\def\LT@final@warn{%
\AtEndDocument{%
\LT@warn{Table \@width s have changed. Rerun LaTeX.\@gobbletwo}}%
\global\let\LT@final@warn\relax}
\DeclareOption{errorshow}{%
\def\LT@warn{\PackageInfo{longtable}}}
\DeclareOption{pausing}{%
\def\LT@warn#1{%
\LT@err{#1}{This is not really an error}}}
\DeclareOption{set}{}
\DeclareOption{final}{}
\ProcessOptions
\newskip\LTleft \LTleft=\fill
\newskip\LTright \LTright=\fill
\newskip\LTpre \LTpre=\bigskipamount
\newskip\LTpost \LTpost=\bigskipamount
\newcount\LTchunksize \LTchunksize=20
\let\c@LTchunksize\LTchunksize
\newdimen\LTcapwidth \LTcapwidth=4in
\newbox\LT@head
\newbox\LT@firsthead
\newbox\LT@foot
\newbox\LT@lastfoot
\newcount\LT@cols
\newcount\LT@rows
\newcounter{LT@tables}
\newcounter{LT@chunks}[LT@tables]
\ifx\c@table\undefined
\newcounter{table}
\def\fnum@table{\tablename~\thetable}
\fi
\ifx\tablename\undefined
\def\tablename{Table}
\fi
\newtoks\LT@p@ftn
\mathchardef\LT@end@pen=30000
\def\longtable{%
\par
\ifx\multicols\@undefined
\else
\ifnum\col@number>\@ne
\@twocolumntrue
\fi
\fi
\if@twocolumn
\LT@err{longtable not in 1-column mode}\@ehc
\fi
\begingroup
\@ifnextchar[\LT@array{\LT@array[x]}}
\def\LT@array[#1]#2{%
\refstepcounter{table}\stepcounter{LT@tables}%
\if l#1%
\LTleft\z@ \LTright\fill
\else\if r#1%
\LTleft\fill \LTright\z@
\else\if c#1%
\LTleft\fill \LTright\fill
\fi\fi\fi
\let\LT@mcol\multicolumn
\let\LT@@tabarray\@tabarray
\let\LT@@hl\hline
\def\@tabarray{%
\let\hline\LT@@hl
\LT@@tabarray}%
\let\\\LT@tabularcr\let\tabularnewline\\%
\def\newpage{\noalign{\break}}%
\def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
\def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
\let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption
\@tempdima\ht\strutbox
\let\@endpbox\LT@endpbox
\ifx\extrarowheight\@undefined
\let\@acol\@tabacol
\let\@classz\@tabclassz \let\@classiv\@tabclassiv
\def\@startpbox{\vtop\LT@startpbox}%
\let\@@startpbox\@startpbox
\let\@@endpbox\@endpbox
\let\LT@LL@FM@cr\@tabularcr
\else
\advance\@tempdima\extrarowheight
\col@sep\tabcolsep
\let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr
\fi
\setbox\@arstrutbox\hbox{\vrule
\@height \arraystretch \@tempdima
\@depth \arraystretch \dp \strutbox
\@width \z@}%
\let\@sharp##\let\protect\relax
\begingroup
\@mkpream{#2}%
\xdef\LT@bchunk{%
\global\advance\c@LT@chunks\@ne
\global\LT@rows\z@\setbox\z@\vbox\bgroup
\LT@setprevdepth
\tabskip\LTleft \noexpand\halign to\hsize\bgroup
\tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}%
\endgroup
\expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
\LT@make@row
\m@th\let\par\@empty
\everycr{}\lineskip\z@\baselineskip\z@
\LT@bchunk}
\def\LT@no@pgbk#1[#2]{\penalty #1\@getpen{#2}\ifnum`{=0\fi}}
\def\LT@start{%
\let\LT@start\endgraf
\endgraf\penalty\z@\vskip\LTpre
\dimen@\pagetotal
\advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
\advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
\advance\dimen@ \ht\LT@foot
\dimen@ii\vfuzz
\vfuzz\maxdimen
\setbox\tw@\copy\z@
\setbox\tw@\vsplit\tw@ to \ht\@arstrutbox
\setbox\tw@\vbox{\unvbox\tw@}%
\vfuzz\dimen@ii
\advance\dimen@ \ht
\ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi
\advance\dimen@\dp
\ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi
\advance\dimen@ -\pagegoal
\ifdim \dimen@>\z@\vfil\break\fi
\global\@colroom\@colht
\ifvoid\LT@foot\else
\advance\vsize-\ht\LT@foot
\global\advance\@colroom-\ht\LT@foot
\dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@
\maxdepth\z@
\fi
\ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak
\output{\LT@output}}
\def\endlongtable{%
\crcr
\noalign{%
\let\LT@entry\LT@entry@chop
\xdef\LT@save@row{\LT@save@row}}%
\LT@echunk
\LT@start
\unvbox\z@
\LT@get@widths
\if@filesw
{\let\LT@entry\LT@entry@write\immediate\write\@auxout{%
\gdef\expandafter\noexpand
\csname LT@\romannumeral\c@LT@tables\endcsname
{\LT@save@row}}}%
\fi
\ifx\LT@save@row\LT@@save@row
\else
\LT@warn{Column \@width s have changed\MessageBreak
in table \thetable}%
\LT@final@warn
\fi
\endgraf\penalty -\LT@end@pen
\endgroup
\global\@mparbottom\z@
\pagegoal\vsize
\endgraf\penalty\z@\addvspace\LTpost
\ifvoid\footins\else\insert\footins{}\fi}
\def\LT@nofcols#1&{%
\futurelet\@let@token\LT@n@fcols}
\def\LT@n@fcols{%
\advance\LT@cols\@ne
\ifx\@let@token\LT@nofcols
\expandafter\@gobble
\else
\expandafter\LT@nofcols
\fi}
\def\LT@tabularcr{%
\relax\iffalse{\fi\ifnum0=`}\fi
\@ifstar
{\def\crcr{\LT@crcr\noalign{\nobreak}}\let\cr\crcr
\LT@t@bularcr}%
{\LT@t@bularcr}}
\let\LT@crcr\crcr
\let\LT@setprevdepth\relax
\def\LT@t@bularcr{%
\global\advance\LT@rows\@ne
\ifnum\LT@rows=\LTchunksize
\gdef\LT@setprevdepth{%
\prevdepth\z@\global
\global\let\LT@setprevdepth\relax}%
\expandafter\LT@xtabularcr
\else
\ifnum0=`{}\fi
\expandafter\LT@LL@FM@cr
\fi}
\def\LT@xtabularcr{%
\@ifnextchar[\LT@argtabularcr\LT@ntabularcr}
\def\LT@ntabularcr{%
\ifnum0=`{}\fi
\LT@echunk
\LT@start
\unvbox\z@
\LT@get@widths
\LT@bchunk}
\def\LT@argtabularcr[#1]{%
\ifnum0=`{}\fi
\ifdim #1>\z@
\unskip\@xargarraycr{#1}%
\else
\@yargarraycr{#1}%
\fi
\LT@echunk
\LT@start
\unvbox\z@
\LT@get@widths
\LT@bchunk}
\def\LT@echunk{%
\crcr\LT@save@row\cr\egroup
\global\setbox\@ne\lastbox
\unskip
\egroup}
\def\LT@entry#1#2{%
\ifhmode\@firstofone{&}\fi\omit
\ifnum#1=\c@LT@chunks
\else
\kern#2\relax
\fi}
\def\LT@entry@chop#1#2{%
\noexpand\LT@entry
{\ifnum#1>\c@LT@chunks
1}{0pt%
\else
#1}{#2%
\fi}}
\def\LT@entry@write{%
\noexpand\LT@entry^^J%
\@spaces}
\def\LT@kill{%
\LT@echunk
\LT@get@widths
\expandafter\LT@rebox\LT@bchunk}
\def\LT@rebox#1\bgroup{%
#1\bgroup
\unvbox\z@
\unskip
\setbox\z@\lastbox}
\def\LT@blank@row{%
\xdef\LT@save@row{\expandafter\LT@build@blank
\romannumeral\number\LT@cols 001 }}
\def\LT@build@blank#1{%
\if#1m%
\noexpand\LT@entry{1}{0pt}%
\expandafter\LT@build@blank
\fi}
\def\LT@make@row{%
\global\expandafter\let\expandafter\LT@save@row
\csname LT@\romannumeral\c@LT@tables\endcsname
\ifx\LT@save@row\relax
\LT@blank@row
\else
{\let\LT@entry\or
\if!%
\ifcase\expandafter\expandafter\expandafter\LT@cols
\expandafter\@gobble\LT@save@row
\or
\else
\relax
\fi
!%
\else
\aftergroup\LT@blank@row
\fi}%
\fi}
\let\setlongtables\relax
\def\LT@get@widths{%
\setbox\tw@\hbox{%
\unhbox\@ne
\let\LT@old@row\LT@save@row
\global\let\LT@save@row\@empty
\count@\LT@cols
\loop
\unskip
\setbox\tw@\lastbox
\ifhbox\tw@
\LT@def@row
\advance\count@\m@ne
\repeat}%
\ifx\LT@@save@row\@undefined
\let\LT@@save@row\LT@save@row
\fi}
\def\LT@def@row{%
\let\LT@entry\or
\edef\@tempa{%
\ifcase\expandafter\count@\LT@old@row
\else
{1}{0pt}%
\fi}%
\let\LT@entry\relax
\xdef\LT@save@row{%
\LT@entry
\expandafter\LT@max@sel\@tempa
\LT@save@row}}
\def\LT@max@sel#1#2{%
{\ifdim#2=\wd\tw@
#1%
\else
\number\c@LT@chunks
\fi}%
{\the\wd\tw@}}
\def\LT@hline{%
\noalign{\ifnum0=`}\fi
\penalty\@M
\futurelet\@let@token\LT@@hline}
\def\LT@@hline{%
\ifx\@let@token\hline
\global\let\@gtempa\@gobble
\gdef\LT@sep{\penalty-\@medpenalty\vskip\doublerulesep}%
\else
\global\let\@gtempa\@empty
\gdef\LT@sep{\penalty-\@lowpenalty\vskip-\arrayrulewidth}%
\fi
\ifnum0=`{\fi}%
\multispan\LT@cols
\unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
\noalign{\LT@sep}%
\multispan\LT@cols
\unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
\noalign{\penalty\@M}%
\@gtempa}
\def\LT@caption{%
\noalign\bgroup
\@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n}
\def\LT@c@ption#1[#2]#3{%
\LT@makecaption#1\fnum@table{#3}%
\def\@tempa{#2}%
\ifx\@tempa\@empty\else
{\let\\\space
\addcontentsline{lot}{table}{\protect\numberline{\thetable}{#2}}}%
\fi}
\def\LT@capti@n{%
\@ifstar
{\egroup\LT@c@ption\@gobble[]}%
{\egroup\@xdblarg{\LT@c@ption\@firstofone}}}
\def\LT@makecaption#1#2#3{%
\LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{%
\sbox\@tempboxa{#1{#2: }#3}%
\ifdim\wd\@tempboxa>\hsize
#1{#2: }#3%
\else
\hbox to\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\endgraf\vskip\baselineskip}%
\hss}}}
\def\LT@output{%
\ifnum\outputpenalty <-\@Mi
\ifnum\outputpenalty > -\LT@end@pen
\LT@err{floats and marginpars not allowed in a longtable}\@ehc
\else
\setbox\z@\vbox{\unvbox\@cclv}%
\ifdim \ht\LT@lastfoot>\ht\LT@foot
\dimen@\pagegoal
\advance\dimen@-\ht\LT@lastfoot
\ifdim\dimen@<\ht\z@
\setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}%
\@makecol
\@outputpage
\setbox\z@\vbox{\box\LT@head}%
\fi
\fi
\global\@colroom\@colht
\global\vsize\@colht
\vbox
{\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}%
\fi
\else
\setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}%
\@makecol
\@outputpage
\global\vsize\@colroom
\copy\LT@head\nobreak
\fi}
\def\LT@end@hd@ft#1{%
\LT@echunk
\ifx\LT@start\endgraf
\LT@err
{Longtable head or foot not at start of table}%
{Increase LTchunksize}%
\fi
\setbox#1\box\z@
\LT@get@widths
\LT@bchunk}
\def\endfirsthead{\LT@end@hd@ft\LT@firsthead}
\def\endhead{\LT@end@hd@ft\LT@head}
\def\endfoot{\LT@end@hd@ft\LT@foot}
\def\endlastfoot{\LT@end@hd@ft\LT@lastfoot}
\def\LT@startpbox#1{%
\bgroup
\let\@footnotetext\LT@p@ftntext
\setlength\hsize{#1}%
\@arrayparboxrestore
\vrule \@height \ht\@arstrutbox \@width \z@}
\def\LT@endpbox{%
\@finalstrut\@arstrutbox
\egroup
\the\LT@p@ftn
\global\LT@p@ftn{}%
\hfil}
\def\LT@p@ftntext#1{%
\edef\@tempa{\the\LT@p@ftn\noexpand\footnotetext[\the\c@footnote]}%
\global\LT@p@ftn\expandafter{\@tempa{#1}}}%
\@namedef{ver@longtable.sty}{2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen}
\endinput
%%
%% End of file `longtable.sty'.

87
docs/latex/main_8cpp.tex Normal file
View File

@@ -0,0 +1,87 @@
\hypertarget{main_8cpp}{}\doxysection{main.\+cpp File Reference}
\label{main_8cpp}\index{main.cpp@{main.cpp}}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
{\ttfamily \#include $<$iostream$>$}\newline
{\ttfamily \#include $<$iomanip$>$}\newline
{\ttfamily \#include $<$memory$>$}\newline
{\ttfamily \#include $<$vector$>$}\newline
{\ttfamily \#include $<$cstddef$>$}\newline
{\ttfamily \#include \char`\"{}dbc\+\_\+parser.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}dbc\+\_\+tree\+\_\+builder.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}dbc\+\_\+decode\+\_\+builder.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}dbc\+\_\+decoder.\+h\char`\"{}}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item
static void \mbox{\hyperlink{main_8cpp_a57aefef9cfd52a8190df002e12808e0a}{Print\+Tree}} (const \mbox{\hyperlink{classTreeNode}{Tree\+Node}} $\ast$node, int indent)
\item
static void \mbox{\hyperlink{main_8cpp_a26dbbea5b56e3fbc451b68f217d5063f}{Print\+Decoded\+Frame}} (const \mbox{\hyperlink{structDecodedFrameValue}{Decoded\+Frame\+Value}} \&decoded)
\item
int \mbox{\hyperlink{main_8cpp_a0ddf1224851353fc92bfbff6f499fa97}{main}} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
Licensed under the MIT License. See LICENSE file in the project root for full license text.
Definition in file \mbox{\hyperlink{main_8cpp_source}{main.\+cpp}}.
\doxysubsection{Function Documentation}
\mbox{\Hypertarget{main_8cpp_a0ddf1224851353fc92bfbff6f499fa97}\label{main_8cpp_a0ddf1224851353fc92bfbff6f499fa97}}
\index{main.cpp@{main.cpp}!main@{main}}
\index{main@{main}!main.cpp@{main.cpp}}
\doxysubsubsection{\texorpdfstring{main()}{main()}}
{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{argc, }\item[{char $\ast$}]{argv\mbox{[}$\,$\mbox{]} }\end{DoxyParamCaption})}
Definition at line \mbox{\hyperlink{main_8cpp_source_l00097}{97}} of file \mbox{\hyperlink{main_8cpp_source}{main.\+cpp}}.
References \mbox{\hyperlink{dbc__tree__builder_8cpp_source_l00014}{Dbc\+Tree\+Builder\+::\+Build()}}, \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, \mbox{\hyperlink{dbc__decoder_8h_source_l00024}{Raw\+Can\+Frame\+::can\+Id}}, \mbox{\hyperlink{dbc__decoder_8h_source_l00026}{Raw\+Can\+Frame\+::data}}, \mbox{\hyperlink{dbc__decoder_8cpp_source_l00031}{Dbc\+Decoder\+::\+Decode()}}, \mbox{\hyperlink{decode__database_8h_source_l00133}{Decode\+Database\+::frames}}, \mbox{\hyperlink{dbc__decoder_8h_source_l00025}{Raw\+Can\+Frame\+::is\+Extended}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00040}{Dbc\+Parser\+::\+Parse\+File()}}, \mbox{\hyperlink{main_8cpp_source_l00075}{Print\+Decoded\+Frame()}}, and \mbox{\hyperlink{main_8cpp_source_l00023}{Print\+Tree()}}.
\mbox{\Hypertarget{main_8cpp_a26dbbea5b56e3fbc451b68f217d5063f}\label{main_8cpp_a26dbbea5b56e3fbc451b68f217d5063f}}
\index{main.cpp@{main.cpp}!PrintDecodedFrame@{PrintDecodedFrame}}
\index{PrintDecodedFrame@{PrintDecodedFrame}!main.cpp@{main.cpp}}
\doxysubsubsection{\texorpdfstring{PrintDecodedFrame()}{PrintDecodedFrame()}}
{\footnotesize\ttfamily static void Print\+Decoded\+Frame (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structDecodedFrameValue}{Decoded\+Frame\+Value}} \&}]{decoded }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}
Definition at line \mbox{\hyperlink{main_8cpp_source_l00075}{75}} of file \mbox{\hyperlink{main_8cpp_source}{main.\+cpp}}.
References \mbox{\hyperlink{dbc__decoder_8h_source_l00039}{Decoded\+Signal\+Value\+::definition}}, \mbox{\hyperlink{dbc__decoder_8h_source_l00056}{Decoded\+Frame\+Value\+::definition}}, \mbox{\hyperlink{decode__database_8h_source_l00040}{Decode\+Signal\+::name}}, \mbox{\hyperlink{decode__database_8h_source_l00073}{Decode\+Frame\+::name}}, \mbox{\hyperlink{dbc__decoder_8h_source_l00041}{Decoded\+Signal\+Value\+::physical\+Value}}, \mbox{\hyperlink{dbc__decoder_8h_source_l00040}{Decoded\+Signal\+Value\+::raw\+Value}}, \mbox{\hyperlink{dbc__decoder_8h_source_l00057}{Decoded\+Frame\+Value\+::signals}}, \mbox{\hyperlink{decode__database_8h_source_l00049}{Decode\+Signal\+::unit}}, \mbox{\hyperlink{dbc__decoder_8h_source_l00042}{Decoded\+Signal\+Value\+::valid}}, and \mbox{\hyperlink{dbc__decoder_8h_source_l00058}{Decoded\+Frame\+Value\+::valid}}.
Referenced by \mbox{\hyperlink{main_8cpp_source_l00097}{main()}}.
\mbox{\Hypertarget{main_8cpp_a57aefef9cfd52a8190df002e12808e0a}\label{main_8cpp_a57aefef9cfd52a8190df002e12808e0a}}
\index{main.cpp@{main.cpp}!PrintTree@{PrintTree}}
\index{PrintTree@{PrintTree}!main.cpp@{main.cpp}}
\doxysubsubsection{\texorpdfstring{PrintTree()}{PrintTree()}}
{\footnotesize\ttfamily static void Print\+Tree (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classTreeNode}{Tree\+Node}} $\ast$}]{node, }\item[{int}]{indent }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}
Definition at line \mbox{\hyperlink{main_8cpp_source_l00023}{23}} of file \mbox{\hyperlink{main_8cpp_source}{main.\+cpp}}.
References \mbox{\hyperlink{frame__info_8h_source_l00026}{Frame\+Info\+::can\+Id}}, \mbox{\hyperlink{frame__info_8h_source_l00030}{Frame\+Info\+::dlc}}, \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16a3bb3e8c8a24891ba0f7608bcc96f8b0a}{Frame}}, \mbox{\hyperlink{tree__node_8cpp_source_l00047}{Tree\+Node\+::\+Get\+Child()}}, \mbox{\hyperlink{tree__node_8cpp_source_l00043}{Tree\+Node\+::\+Get\+Child\+Count()}}, \mbox{\hyperlink{tree__node_8cpp_source_l00069}{Tree\+Node\+::\+Get\+Frame()}}, \mbox{\hyperlink{tree__node_8cpp_source_l00065}{Tree\+Node\+::\+Get\+Name()}}, \mbox{\hyperlink{tree__node_8cpp_source_l00073}{Tree\+Node\+::\+Get\+Signal()}}, \mbox{\hyperlink{tree__node_8cpp_source_l00061}{Tree\+Node\+::\+Get\+Type()}}, \mbox{\hyperlink{frame__info_8h_source_l00029}{Frame\+Info\+::has\+Pgn}}, \mbox{\hyperlink{frame__info_8h_source_l00027}{Frame\+Info\+::is\+Extended}}, \mbox{\hyperlink{signal__info_8h_source_l00025}{Signal\+Info\+::length}}, \mbox{\hyperlink{frame__info_8h_source_l00028}{Frame\+Info\+::pgn}}, \mbox{\hyperlink{main_8cpp_source_l00023}{Print\+Tree()}}, \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16afa03eb688ad8aa1db593d33dabd89bad}{Root}}, \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16a085fea7abdc5d904fe69a3081efd7398}{Signal}}, \mbox{\hyperlink{signal__info_8h_source_l00024}{Signal\+Info\+::start\+Bit}}, and \mbox{\hyperlink{signal__info_8h_source_l00032}{Signal\+Info\+::unit}}.
Referenced by \mbox{\hyperlink{main_8cpp_source_l00097}{main()}}, and \mbox{\hyperlink{main_8cpp_source_l00023}{Print\+Tree()}}.

View File

@@ -0,0 +1,141 @@
\hypertarget{main_8cpp_source}{}\doxysection{main.\+cpp}
\mbox{\hyperlink{main_8cpp}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00001}00001 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00002}00002 \textcolor{comment}{ * @file main.cpp}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00003}00003 \textcolor{comment}{ * @brief}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00005}00005 \textcolor{comment}{ * Created: 2026-\/03-\/13}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00006}00006 \textcolor{comment}{ * Author: Deeaitch (Dim. Himro)}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00008}00008 \textcolor{comment}{ * Licensed under the MIT License.}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00009}00009 \textcolor{comment}{ * See LICENSE file in the project root for full license text.}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00010}00010 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00011}00011 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00012}00012 \textcolor{preprocessor}{\#include <iostream>}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00013}00013 \textcolor{preprocessor}{\#include <iomanip>}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00014}00014 \textcolor{preprocessor}{\#include <memory>}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00015}00015 \textcolor{preprocessor}{\#include <vector>}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00016}00016 \textcolor{preprocessor}{\#include <cstddef>}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00017}00017 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00018}00018 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{dbc__parser_8h}{dbc\_parser.h}}"{}}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00019}00019 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{dbc__tree__builder_8h}{dbc\_tree\_builder.h}}"{}}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00020}00020 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{dbc__decode__builder_8h}{dbc\_decode\_builder.h}}"{}}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00021}00021 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{dbc__decoder_8h}{dbc\_decoder.h}}"{}}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00022}00022 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00023}\mbox{\hyperlink{main_8cpp_a57aefef9cfd52a8190df002e12808e0a}{00023}} \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{main_8cpp_a57aefef9cfd52a8190df002e12808e0a}{PrintTree}} (\textcolor{keyword}{const} \mbox{\hyperlink{classTreeNode}{TreeNode}} *node, \textcolor{keywordtype}{int} indent) \{}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00024}00024 \textcolor{keywordflow}{if} (node == \textcolor{keyword}{nullptr})}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00025}00025 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00026}00026 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00027}00027 \textcolor{keywordflow}{for} (\textcolor{keywordtype}{int} i = 0; i < indent; ++i)}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00028}00028 std::cout << \textcolor{stringliteral}{"{} "{}};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00029}00029 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00030}00030 \textcolor{keywordflow}{switch} (node-\/>\mbox{\hyperlink{classTreeNode_afa2f4b0aafa12d3d41ed00df8e0250c9}{GetType}}()) \{}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00031}00031 \textcolor{keywordflow}{case} \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16afa03eb688ad8aa1db593d33dabd89bad}{NodeType::Root}}:}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00032}00032 std::cout << \textcolor{stringliteral}{"{}[root] "{}} << node-\/>\mbox{\hyperlink{classTreeNode_aaac5b8d9dc9e5ae1f367d1adbcf20e18}{GetName}}() << \textcolor{stringliteral}{"{}\(\backslash\)n"{}};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00033}00033 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00034}00034 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00035}00035 \textcolor{keywordflow}{case} \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16a3bb3e8c8a24891ba0f7608bcc96f8b0a}{NodeType::Frame}}: \{}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00036}00036 \textcolor{keyword}{const} \mbox{\hyperlink{structFrameInfo}{FrameInfo}} *frame = node-\/>\mbox{\hyperlink{classTreeNode_afc503b40004764163605d6dbdb4ef811}{GetFrame}}();}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00037}00037 std::cout << \textcolor{stringliteral}{"{}[frame] "{}} << node-\/>\mbox{\hyperlink{classTreeNode_aaac5b8d9dc9e5ae1f367d1adbcf20e18}{GetName}}();}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00038}00038 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00039}00039 \textcolor{keywordflow}{if} (frame != \textcolor{keyword}{nullptr}) \{}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00040}00040 std::cout << \textcolor{stringliteral}{"{} id=0x"{}} << std::hex << frame-\/>\mbox{\hyperlink{structFrameInfo_af470b0742c05bfbffc31c51a68f5c05e}{canId}} << std::dec}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00041}00041 << \textcolor{stringliteral}{"{} ext="{}} << (frame-\/>\mbox{\hyperlink{structFrameInfo_a34b726afaad2ac5c697fdb2ac070cdaf}{isExtended}} ? \textcolor{stringliteral}{"{}yes"{}} : \textcolor{stringliteral}{"{}no"{}})}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00042}00042 << \textcolor{stringliteral}{"{} dlc="{}} << \textcolor{keyword}{static\_cast<}\textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int}\textcolor{keyword}{>} (frame-\/>\mbox{\hyperlink{structFrameInfo_aa2b198ea0f55e560c123d35e7b3ecab9}{dlc}});}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00043}00043 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00044}00044 \textcolor{keywordflow}{if} (frame-\/>\mbox{\hyperlink{structFrameInfo_a4737a5420213ad4304724e39f3a4e55d}{hasPgn}})}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00045}00045 std::cout << \textcolor{stringliteral}{"{} pgn="{}} << frame-\/>\mbox{\hyperlink{structFrameInfo_aee518b33f1000bf0b7f6e4a87474c943}{pgn}};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00046}00046 \}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00047}00047 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00048}00048 std::cout << \textcolor{stringliteral}{"{}\(\backslash\)n"{}};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00049}00049 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00050}00050 \}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00051}00051 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00052}00052 \textcolor{keywordflow}{case} \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16a085fea7abdc5d904fe69a3081efd7398}{NodeType::Signal}}: \{}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00053}00053 \textcolor{keyword}{const} \mbox{\hyperlink{structSignalInfo}{SignalInfo}} *signal = node-\/>\mbox{\hyperlink{classTreeNode_a226518612d0d00b5988a2c44fc21d3f1}{GetSignal}}();}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00054}00054 std::cout << \textcolor{stringliteral}{"{}[signal] "{}} << node-\/>\mbox{\hyperlink{classTreeNode_aaac5b8d9dc9e5ae1f367d1adbcf20e18}{GetName}}();}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00055}00055 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00056}00056 \textcolor{keywordflow}{if} (signal != \textcolor{keyword}{nullptr}) \{}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00057}00057 std::cout << \textcolor{stringliteral}{"{} start="{}} << signal-\/>\mbox{\hyperlink{structSignalInfo_ace290724f9801521609aedaa946d61f1}{startBit}}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00058}00058 << \textcolor{stringliteral}{"{} len="{}} << signal-\/>\mbox{\hyperlink{structSignalInfo_a1008b5201f71848177217bd52fb84baa}{length}}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00059}00059 << \textcolor{stringliteral}{"{} unit="{}} << signal-\/>\mbox{\hyperlink{structSignalInfo_a1f214f03e94ef5794de2d3367bfcbd01}{unit}};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00060}00060 \}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00061}00061 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00062}00062 std::cout << \textcolor{stringliteral}{"{}\(\backslash\)n"{}};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00063}00063 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00064}00064 \}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00065}00065 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00066}00066 \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00067}00067 std::cout << \textcolor{stringliteral}{"{}[unknown]\(\backslash\)n"{}};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00068}00068 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00069}00069 \}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00070}00070 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00071}00071 \textcolor{keywordflow}{for} (std::size\_t i = 0U; i < node-\/>\mbox{\hyperlink{classTreeNode_abdd82460187dca8d3e5d66f5d5c529ea}{GetChildCount}}(); ++i)}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00072}00072 \mbox{\hyperlink{main_8cpp_a57aefef9cfd52a8190df002e12808e0a}{PrintTree}} (node-\/>\mbox{\hyperlink{classTreeNode_a4727ff801a2d1b9323c5ae50a35457a6}{GetChild}} (i), indent + 1);}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00073}00073 \}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00074}00074 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00075}\mbox{\hyperlink{main_8cpp_a26dbbea5b56e3fbc451b68f217d5063f}{00075}} \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{main_8cpp_a26dbbea5b56e3fbc451b68f217d5063f}{PrintDecodedFrame}} (\textcolor{keyword}{const} \mbox{\hyperlink{structDecodedFrameValue}{DecodedFrameValue}} \&decoded) \{}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00076}00076 \textcolor{keywordflow}{if} (!decoded.\mbox{\hyperlink{structDecodedFrameValue_a4f51c31110dba1f73a763c596372beb0}{valid}} || (decoded.\mbox{\hyperlink{structDecodedFrameValue_a60dda1cc352d2c8087f0bdbc81dd266c}{definition}} == \textcolor{keyword}{nullptr})) \{}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00077}00077 std::cout << \textcolor{stringliteral}{"{}No frame definition found.\(\backslash\)n"{}};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00078}00078 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00079}00079 \}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00080}00080 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00081}00081 std::cout << \textcolor{stringliteral}{"{}Decoded frame: "{}} << decoded.\mbox{\hyperlink{structDecodedFrameValue_a60dda1cc352d2c8087f0bdbc81dd266c}{definition}}-\/>\mbox{\hyperlink{structDecodeFrame_aa0a7f8fd5bfde2148dfd0d838328f579}{name}} << \textcolor{stringliteral}{"{}\(\backslash\)n"{}};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00082}00082 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00083}00083 \textcolor{keywordflow}{for} (std::size\_t index = 0U; index < decoded.\mbox{\hyperlink{structDecodedFrameValue_a8440e0e5d7953102095b029f522022d3}{signals}}.size(); ++index) \{}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00084}00084 \textcolor{keyword}{const} \mbox{\hyperlink{structDecodedSignalValue}{DecodedSignalValue}} \&signal = decoded.\mbox{\hyperlink{structDecodedFrameValue_a8440e0e5d7953102095b029f522022d3}{signals}}[index];}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00085}00085 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00086}00086 \textcolor{keywordflow}{if} ((signal.\mbox{\hyperlink{structDecodedSignalValue_acadc3b3bb21dd6b0412d342c7e6b20d7}{definition}} == \textcolor{keyword}{nullptr}) || !signal.\mbox{\hyperlink{structDecodedSignalValue_aac0ed361af545cde48d0e6f41a859686}{valid}})}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00087}00087 \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00088}00088 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00089}00089 std::cout << \textcolor{stringliteral}{"{} "{}} << signal.\mbox{\hyperlink{structDecodedSignalValue_acadc3b3bb21dd6b0412d342c7e6b20d7}{definition}}-\/>\mbox{\hyperlink{structDecodeSignal_a58cf5844f2272a23dcb9687d912e4780}{name}}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00090}00090 << \textcolor{stringliteral}{"{} raw="{}} << signal.\mbox{\hyperlink{structDecodedSignalValue_a5138b825940e34689f7b3891627ee9ec}{rawValue}}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00091}00091 << \textcolor{stringliteral}{"{} physical="{}} << signal.\mbox{\hyperlink{structDecodedSignalValue_a6847d05b3cb00d5e0f6c611968f57978}{physicalValue}}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00092}00092 << \textcolor{stringliteral}{"{} "{}} << signal.\mbox{\hyperlink{structDecodedSignalValue_acadc3b3bb21dd6b0412d342c7e6b20d7}{definition}}-\/>\mbox{\hyperlink{structDecodeSignal_a38eed9ca7581423fd8bfbedcffc12092}{unit}}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00093}00093 << \textcolor{stringliteral}{"{}\(\backslash\)n"{}};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00094}00094 \}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00095}00095 \}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00096}00096 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00097}\mbox{\hyperlink{main_8cpp_a0ddf1224851353fc92bfbff6f499fa97}{00097}} \textcolor{keywordtype}{int} \mbox{\hyperlink{main_8cpp_a0ddf1224851353fc92bfbff6f499fa97}{main}} (\textcolor{keywordtype}{int} argc, \textcolor{keywordtype}{char} *argv[]) \{}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00098}00098 \textcolor{keywordflow}{if} (argc < 2) \{}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00099}00099 std::cerr << \textcolor{stringliteral}{"{}Usage: dbc\_demo <file.dbc>\(\backslash\)n"{}};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00100}00100 \textcolor{keywordflow}{return} 1;}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00101}00101 \}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00102}00102 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00103}00103 \textcolor{keywordflow}{try} \{}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00104}00104 \mbox{\hyperlink{classDbcParser}{DbcParser}} parser;}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00105}00105 \mbox{\hyperlink{structDbcDatabase}{DbcDatabase}} database = parser.\mbox{\hyperlink{classDbcParser_aef72826942c9095d653fafa435855e56}{ParseFile}} (argv[1]);}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00106}00106 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00107}00107 \mbox{\hyperlink{classDbcTreeBuilder}{DbcTreeBuilder}} treeBuilder;}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00108}00108 std::unique\_ptr<TreeNode> root = treeBuilder.\mbox{\hyperlink{classDbcTreeBuilder_a7e57d067d831b14b383947fd125edd4b}{Build}} (database);}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00109}00109 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00110}00110 std::cout << \textcolor{stringliteral}{"{}=== Parsed tree ===\(\backslash\)n"{}};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00111}00111 \mbox{\hyperlink{main_8cpp_a57aefef9cfd52a8190df002e12808e0a}{PrintTree}} (root.get(), 0);}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00112}00112 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00113}00113 \mbox{\hyperlink{classDbcDecodeBuilder}{DbcDecodeBuilder}} decodeBuilder;}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00114}00114 \mbox{\hyperlink{structDecodeDatabase}{DecodeDatabase}} decodeDatabase = decodeBuilder.\mbox{\hyperlink{classDbcDecodeBuilder_a2bc6386dfb5e58976c42e22c19ec471b}{Build}} (database);}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00115}00115 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00116}00116 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00117}00117 \textcolor{comment}{ * Example raw frame.}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00118}00118 \textcolor{comment}{ * Replace with live CAN frame or trace record later.}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00119}00119 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00120}00120 \mbox{\hyperlink{structRawCanFrame}{RawCanFrame}} rawFrame;}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00121}00121 rawFrame.\mbox{\hyperlink{structRawCanFrame_a2d0e7fa0e3d5c20bbed55ed8f7888ff4}{canId}} = decodeDatabase.\mbox{\hyperlink{structDecodeDatabase_a2bd4ddfc2602c1de4e12a373bfc93072}{frames}}.empty() ? 0U : decodeDatabase.\mbox{\hyperlink{structDecodeDatabase_a2bd4ddfc2602c1de4e12a373bfc93072}{frames}}[0].canId;}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00122}00122 rawFrame.\mbox{\hyperlink{structRawCanFrame_a462193d275adc1dba8bd18ffa0e36bb7}{isExtended}} = decodeDatabase.\mbox{\hyperlink{structDecodeDatabase_a2bd4ddfc2602c1de4e12a373bfc93072}{frames}}.empty() ? false : decodeDatabase.\mbox{\hyperlink{structDecodeDatabase_a2bd4ddfc2602c1de4e12a373bfc93072}{frames}}[0].isExtended;}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00123}00123 rawFrame.\mbox{\hyperlink{structRawCanFrame_a0acb487612104c99c9907344c035df83}{data}}.resize (8U, 0U);}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00124}00124 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00125}00125 \mbox{\hyperlink{classDbcDecoder}{DbcDecoder}} decoder;}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00126}00126 \mbox{\hyperlink{structDecodedFrameValue}{DecodedFrameValue}} decoded = decoder.\mbox{\hyperlink{classDbcDecoder_a345951ffe5d943a70d3a1ea1f39e74f7}{Decode}} (decodeDatabase, rawFrame);}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00127}00127 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00128}00128 std::cout << \textcolor{stringliteral}{"{}\(\backslash\)n=== Decoded frame ===\(\backslash\)n"{}};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00129}00129 \mbox{\hyperlink{main_8cpp_a26dbbea5b56e3fbc451b68f217d5063f}{PrintDecodedFrame}} (decoded);}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00130}00130 \} \textcolor{keywordflow}{catch} (\textcolor{keyword}{const} std::exception \&ex) \{}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00131}00131 std::cerr << \textcolor{stringliteral}{"{}Error: "{}} << ex.what() << \textcolor{stringliteral}{"{}\(\backslash\)n"{}};}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00132}00132 \textcolor{keywordflow}{return} 2;}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00133}00133 \}}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00134}00134 }
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00135}00135 \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{\Hypertarget{main_8cpp_source_l00136}00136 \}}
\end{DoxyCode}

914
docs/latex/md_README.tex Normal file
View File

@@ -0,0 +1,914 @@
\hypertarget{md_README_autotoc_md1}{}\doxysection{Overview}\label{md_README_autotoc_md1}
This module provides a minimal but extensible DBC parser and runtime decode foundation for the {\bfseries{Frame\+Tap}} project.
Its purpose is to\+:
\begin{DoxyItemize}
\item parse DBC files
\item store parsed frame and signal metadata
\item build a tree for future UI integration
\item build a runtime-\/ready decode database
\item decode live CAN frames
\item decode CAN trace records using the same decoder
\end{DoxyItemize}
The implementation follows a simple and practical design\+:
\begin{DoxyItemize}
\item parser logic is separated from UI logic
\item runtime decode structures are separated from tree structures
\item Qt is not required at the parser or decoder level
\item the same decode engine can be reused for live traffic and trace replay
\end{DoxyItemize}
This is {\bfseries{not a full production-\/grade DBC implementation yet}}, but it is a strong architectural base.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md3}{}\doxysection{High-\/\+Level Architecture}\label{md_README_autotoc_md3}
The module is divided into two main paths.\hypertarget{md_README_autotoc_md4}{}\doxysubsection{1. Parse and UI path}\label{md_README_autotoc_md4}
Used for\+:
\begin{DoxyItemize}
\item browsing frames and signals
\item later integration with Qt {\ttfamily Model/\+View}
\item displaying metadata
\end{DoxyItemize}
Pipeline\+:
\begin{DoxyCode}{0}
\DoxyCodeLine{DBC file}
\DoxyCodeLine{}
\DoxyCodeLine{DbcParser}
\DoxyCodeLine{}
\DoxyCodeLine{DbcDatabase}
\DoxyCodeLine{}
\DoxyCodeLine{DbcTreeBuilder}
\DoxyCodeLine{}
\DoxyCodeLine{TreeNode hierarchy}
\DoxyCodeLine{}
\DoxyCodeLine{future Qt UI}
\end{DoxyCode}
\hypertarget{md_README_autotoc_md5}{}\doxysubsection{2. Runtime decode path}\label{md_README_autotoc_md5}
Used for\+:
\begin{DoxyItemize}
\item live CAN decoding
\item CAN trace decoding
\item fast lookup by CAN ID
\end{DoxyItemize}
Pipeline\+:
\begin{DoxyCode}{0}
\DoxyCodeLine{DBC file}
\DoxyCodeLine{}
\DoxyCodeLine{DbcParser}
\DoxyCodeLine{}
\DoxyCodeLine{DbcDatabase}
\DoxyCodeLine{}
\DoxyCodeLine{DbcDecodeBuilder}
\DoxyCodeLine{}
\DoxyCodeLine{DecodeDatabase}
\DoxyCodeLine{}
\DoxyCodeLine{DbcDecoder}
\DoxyCodeLine{}
\DoxyCodeLine{Decoded values}
\end{DoxyCode}
This separation is intentional.
The tree is useful for UI, but it is {\bfseries{not}} the main data structure for runtime decoding.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md7}{}\doxysection{Why the Runtime Decode Layer Exists}\label{md_README_autotoc_md7}
A tree structure is convenient for browsing, but a runtime decoder needs something different\+:
\begin{DoxyItemize}
\item fast lookup by CAN ID
\item direct access to signal decode definitions
\item minimal overhead during repeated decoding
\item the same logic for live frames and trace frames
\end{DoxyItemize}
Because of that, the design uses a dedicated runtime-\/ready structure\+:
\begin{DoxyItemize}
\item {\ttfamily \mbox{\hyperlink{structDecodeDatabase}{Decode\+Database}}}
\item {\ttfamily \mbox{\hyperlink{structDecodeFrame}{Decode\+Frame}}}
\item {\ttfamily \mbox{\hyperlink{structDecodeSignal}{Decode\+Signal}}}
\end{DoxyItemize}
This avoids forcing UI-\/oriented structures into a decode role they were not meant for.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md9}{}\doxysection{Module Layout}\label{md_README_autotoc_md9}
\hypertarget{md_README_autotoc_md10}{}\doxysubsection{Parsed DBC structures}\label{md_README_autotoc_md10}
Files\+:
\begin{DoxyItemize}
\item {\ttfamily \mbox{\hyperlink{signal__info_8h}{signal\+\_\+info.\+h}}}
\item {\ttfamily \mbox{\hyperlink{frame__info_8h}{frame\+\_\+info.\+h}}}
\item {\ttfamily \mbox{\hyperlink{dbc__database_8h}{dbc\+\_\+database.\+h}}}
\end{DoxyItemize}
These store a readable representation of the parsed DBC file.\hypertarget{md_README_autotoc_md11}{}\doxysubsection{UI tree structures}\label{md_README_autotoc_md11}
Files\+:
\begin{DoxyItemize}
\item {\ttfamily \mbox{\hyperlink{tree__node_8h}{tree\+\_\+node.\+h}}}
\item {\ttfamily \mbox{\hyperlink{tree__node_8cpp}{tree\+\_\+node.\+cpp}}}
\item {\ttfamily \mbox{\hyperlink{dbc__tree__builder_8h}{dbc\+\_\+tree\+\_\+builder.\+h}}}
\item {\ttfamily \mbox{\hyperlink{dbc__tree__builder_8cpp}{dbc\+\_\+tree\+\_\+builder.\+cpp}}}
\end{DoxyItemize}
These convert parsed DBC content into a tree hierarchy suitable for UI and model/view usage later.\hypertarget{md_README_autotoc_md12}{}\doxysubsection{Runtime decode structures}\label{md_README_autotoc_md12}
Files\+:
\begin{DoxyItemize}
\item {\ttfamily \mbox{\hyperlink{decode__database_8h}{decode\+\_\+database.\+h}}}
\item {\ttfamily \mbox{\hyperlink{dbc__decode__builder_8h}{dbc\+\_\+decode\+\_\+builder.\+h}}}
\item {\ttfamily \mbox{\hyperlink{dbc__decode__builder_8cpp}{dbc\+\_\+decode\+\_\+builder.\+cpp}}}
\end{DoxyItemize}
These convert parsed DBC content into a structure optimized for decoding.\hypertarget{md_README_autotoc_md13}{}\doxysubsection{Runtime decoder}\label{md_README_autotoc_md13}
Files\+:
\begin{DoxyItemize}
\item {\ttfamily \mbox{\hyperlink{dbc__decoder_8h}{dbc\+\_\+decoder.\+h}}}
\item {\ttfamily \mbox{\hyperlink{dbc__decoder_8cpp}{dbc\+\_\+decoder.\+cpp}}}
\end{DoxyItemize}
These perform actual decoding of raw CAN frames using {\ttfamily \mbox{\hyperlink{structDecodeDatabase}{Decode\+Database}}}.\hypertarget{md_README_autotoc_md14}{}\doxysubsection{Parser}\label{md_README_autotoc_md14}
Files\+:
\begin{DoxyItemize}
\item {\ttfamily \mbox{\hyperlink{dbc__parser_8h}{dbc\+\_\+parser.\+h}}}
\item {\ttfamily \mbox{\hyperlink{dbc__parser_8cpp}{dbc\+\_\+parser.\+cpp}}}
\end{DoxyItemize}
These parse the DBC file itself.\hypertarget{md_README_autotoc_md15}{}\doxysubsection{Demo}\label{md_README_autotoc_md15}
File\+:
\begin{DoxyItemize}
\item {\ttfamily \mbox{\hyperlink{main_8cpp}{main.\+cpp}}}
\end{DoxyItemize}
Used as a small integration example.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md17}{}\doxysection{Parsed Data Structures}\label{md_README_autotoc_md17}
\hypertarget{md_README_autotoc_md18}{}\doxysection{$<$tt$>$\+Signal\+Info$<$/tt$>$}\label{md_README_autotoc_md18}
Represents one signal as parsed from the DBC file.
Fields\+:
\begin{DoxyItemize}
\item {\ttfamily name}
\item {\ttfamily start\+Bit}
\item {\ttfamily length}
\item {\ttfamily is\+Little\+Endian}
\item {\ttfamily is\+Signed}
\item {\ttfamily factor}
\item {\ttfamily offset}
\item {\ttfamily minimum}
\item {\ttfamily maximum}
\item {\ttfamily unit}
\item {\ttfamily receivers}
\item {\ttfamily comment}
\end{DoxyItemize}
Notes\+:
\begin{DoxyItemize}
\item {\ttfamily receivers} is a list because a signal may have more than one receiver ECU
\item {\ttfamily factor} and {\ttfamily offset} define physical conversion
\item this structure is close to DBC content and easy to inspect
\end{DoxyItemize}
Physical value rule\+:
\begin{DoxyCode}{0}
\DoxyCodeLine{physical = raw * factor + offset}
\end{DoxyCode}
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md20}{}\doxysection{$<$tt$>$\+Frame\+Info$<$/tt$>$}\label{md_README_autotoc_md20}
Represents one frame as parsed from the DBC file.
Fields\+:
\begin{DoxyItemize}
\item {\ttfamily name}
\item {\ttfamily can\+Id}
\item {\ttfamily is\+Extended}
\item {\ttfamily pgn}
\item {\ttfamily has\+Pgn}
\item {\ttfamily dlc}
\item {\ttfamily transmitter}
\item {\ttfamily comment}
\item {\ttfamily signals}
\end{DoxyItemize}
Notes\+:
\begin{DoxyItemize}
\item {\ttfamily signals} is a list of {\ttfamily \mbox{\hyperlink{structSignalInfo}{Signal\+Info}}}
\item {\ttfamily is\+Extended} is determined during CAN ID normalization
\item {\ttfamily pgn} is derived using simplified J1939 logic when applicable
\end{DoxyItemize}
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md22}{}\doxysection{$<$tt$>$\+Dbc\+Database$<$/tt$>$}\label{md_README_autotoc_md22}
Top-\/level parsed DBC container.
Conceptually\+:
\begin{DoxyCode}{0}
\DoxyCodeLine{DbcDatabase}
\DoxyCodeLine{ └── vector<FrameInfo>}
\end{DoxyCode}
This is the central structure produced by {\ttfamily \mbox{\hyperlink{classDbcParser}{Dbc\+Parser}}}.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md24}{}\doxysection{UI Tree Layer}\label{md_README_autotoc_md24}
\hypertarget{md_README_autotoc_md25}{}\doxysection{$<$tt$>$\+Tree\+Node$<$/tt$>$}\label{md_README_autotoc_md25}
The UI tree contains three node types\+:
\begin{DoxyItemize}
\item {\ttfamily Root}
\item {\ttfamily Frame}
\item {\ttfamily Signal}
\end{DoxyItemize}
Example hierarchy\+:
\begin{DoxyCode}{0}
\DoxyCodeLine{dbc}
\DoxyCodeLine{ ├── EngineData}
\DoxyCodeLine{ │ ├── EngineSpeed}
\DoxyCodeLine{ │ ├── OilTemp}
\DoxyCodeLine{ │ └── CoolantTemp}
\DoxyCodeLine{ └── VehicleData}
\DoxyCodeLine{ ├── VehicleSpeed}
\DoxyCodeLine{ └── Odometer}
\end{DoxyCode}
Each node stores either\+:
\begin{DoxyItemize}
\item {\ttfamily \mbox{\hyperlink{structFrameInfo}{Frame\+Info}}}
\item {\ttfamily \mbox{\hyperlink{structSignalInfo}{Signal\+Info}}}
\end{DoxyItemize}
The tree is intended for browsing and later Qt model integration.
It is {\bfseries{not}} the primary runtime decode structure.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md27}{}\doxysection{Runtime Decode Layer}\label{md_README_autotoc_md27}
\hypertarget{md_README_autotoc_md28}{}\doxysection{Purpose}\label{md_README_autotoc_md28}
The decode layer exists so that decoding can be fast and independent from UI concerns.
Instead of searching a tree, the decoder uses a prepared database with direct lookup.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md30}{}\doxysection{$<$tt$>$\+Byte\+Order$<$/tt$>$}\label{md_README_autotoc_md30}
Runtime byte order enum\+:
\begin{DoxyItemize}
\item {\ttfamily Intel}
\item {\ttfamily Motorola}
\end{DoxyItemize}
This is better for decode code than passing around raw DBC characters.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md32}{}\doxysection{$<$tt$>$\+Value\+Type$<$/tt$>$}\label{md_README_autotoc_md32}
Numeric type enum\+:
\begin{DoxyItemize}
\item {\ttfamily Unsigned}
\item {\ttfamily Signed}
\end{DoxyItemize}
This is clearer than combining multiple boolean flags during runtime logic.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md34}{}\doxysection{$<$tt$>$\+Decode\+Signal$<$/tt$>$}\label{md_README_autotoc_md34}
Represents one runtime-\/ready signal definition.
Fields\+:
\begin{DoxyItemize}
\item {\ttfamily name}
\item {\ttfamily start\+Bit}
\item {\ttfamily length}
\item {\ttfamily byte\+Order}
\item {\ttfamily value\+Type}
\item {\ttfamily factor}
\item {\ttfamily offset}
\item {\ttfamily minimum}
\item {\ttfamily maximum}
\item {\ttfamily unit}
\item {\ttfamily receivers}
\item {\ttfamily comment}
\end{DoxyItemize}
This structure contains all information required for extracting and converting a signal value from raw frame data.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md36}{}\doxysection{$<$tt$>$\+Decode\+Frame$<$/tt$>$}\label{md_README_autotoc_md36}
Represents one runtime-\/ready frame definition.
Fields\+:
\begin{DoxyItemize}
\item {\ttfamily name}
\item {\ttfamily can\+Id}
\item {\ttfamily is\+Extended}
\item {\ttfamily dlc}
\item {\ttfamily pgn}
\item {\ttfamily has\+Pgn}
\item {\ttfamily transmitter}
\item {\ttfamily comment}
\item {\ttfamily signals}
\end{DoxyItemize}
This structure is used directly by the decoder.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md38}{}\doxysection{$<$tt$>$\+Frame\+Key$<$/tt$>$}\label{md_README_autotoc_md38}
Fast lookup key for runtime frame matching.
Fields\+:
\begin{DoxyItemize}
\item {\ttfamily can\+Id}
\item {\ttfamily is\+Extended}
\end{DoxyItemize}
This matters because the same numeric identifier must not be confused between standard and extended frames.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md40}{}\doxysection{$<$tt$>$\+Decode\+Database$<$/tt$>$}\label{md_README_autotoc_md40}
Top-\/level runtime decode container.
Fields\+:
\begin{DoxyItemize}
\item {\ttfamily frames}
\item {\ttfamily frame\+Index\+By\+Key}
\end{DoxyItemize}
Conceptually\+:
\begin{DoxyCode}{0}
\DoxyCodeLine{DecodeDatabase}
\DoxyCodeLine{ ├── vector<DecodeFrame>}
\DoxyCodeLine{ └── unordered\_map<FrameKey, index>}
\end{DoxyCode}
This gives the decoder fast access to a frame definition using CAN ID and frame type.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md42}{}\doxysection{Decoder Layer}\label{md_README_autotoc_md42}
\hypertarget{md_README_autotoc_md43}{}\doxysection{$<$tt$>$\+Raw\+Can\+Frame$<$/tt$>$}\label{md_README_autotoc_md43}
Represents a raw CAN frame to decode.
Fields\+:
\begin{DoxyItemize}
\item {\ttfamily can\+Id}
\item {\ttfamily is\+Extended}
\item {\ttfamily data}
\end{DoxyItemize}
This same structure can be used for\+:
\begin{DoxyItemize}
\item live CAN bus input
\item replayed trace records
\item unit tests
\end{DoxyItemize}
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md45}{}\doxysection{$<$tt$>$\+Decoded\+Signal\+Value$<$/tt$>$}\label{md_README_autotoc_md45}
Represents one decoded signal result.
Fields\+:
\begin{DoxyItemize}
\item {\ttfamily definition}
\item {\ttfamily raw\+Value}
\item {\ttfamily physical\+Value}
\item {\ttfamily valid}
\end{DoxyItemize}
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md47}{}\doxysection{$<$tt$>$\+Decoded\+Frame\+Value$<$/tt$>$}\label{md_README_autotoc_md47}
Represents one decoded frame result.
Fields\+:
\begin{DoxyItemize}
\item {\ttfamily definition}
\item {\ttfamily signals}
\item {\ttfamily valid}
\end{DoxyItemize}
This is the decoder output for one raw frame.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md49}{}\doxysection{$<$tt$>$\+Dbc\+Decoder$<$/tt$>$}\label{md_README_autotoc_md49}
Main runtime decoder class.
Responsibilities\+:
\begin{DoxyItemize}
\item find a frame definition by CAN ID
\item decode all signals in a frame
\item extract raw values
\item sign-\/extend signed values
\item convert raw values into physical values
\end{DoxyItemize}
Main methods\+:
\begin{DoxyItemize}
\item {\ttfamily Find\+Frame(...)}
\item {\ttfamily Decode(...)}
\end{DoxyItemize}
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md51}{}\doxysection{Parser Support}\label{md_README_autotoc_md51}
The current parser supports the following DBC elements\+:
\begin{DoxyItemize}
\item {\ttfamily BO\+\_\+}
\item {\ttfamily SG\+\_\+}
\item {\ttfamily CM\+\_\+ BO\+\_\+}
\item {\ttfamily CM\+\_\+ SG\+\_\+}
\end{DoxyItemize}
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md53}{}\doxysection{Supported DBC Syntax}\label{md_README_autotoc_md53}
\hypertarget{md_README_autotoc_md54}{}\doxysection{Frame definition}\label{md_README_autotoc_md54}
Example\+:
\begin{DoxyCode}{0}
\DoxyCodeLine{BO\_ 256 EngineData: 8 EEC1}
\end{DoxyCode}
Parsed fields\+:
\begin{DoxyItemize}
\item frame CAN ID
\item frame name
\item DLC
\item transmitter ECU
\end{DoxyItemize}
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md56}{}\doxysection{Signal definition}\label{md_README_autotoc_md56}
Example\+:
\begin{DoxyCode}{0}
\DoxyCodeLine{SG\_ EngineSpeed : 0|16@1+ (0.125,0) [0|8000] "{}rpm"{} ECU1,ECU2}
\end{DoxyCode}
Parsed fields\+:
\begin{DoxyItemize}
\item signal name
\item start bit
\item signal length
\item byte order
\item signedness
\item factor
\item offset
\item minimum
\item maximum
\item unit
\item receivers
\end{DoxyItemize}
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md58}{}\doxysection{Comments}\label{md_README_autotoc_md58}
Frame comment example\+:
\begin{DoxyCode}{0}
\DoxyCodeLine{CM\_ BO\_ 256 "{}Engine data frame"{};}
\end{DoxyCode}
Signal comment example\+:
\begin{DoxyCode}{0}
\DoxyCodeLine{CM\_ SG\_ 256 EngineSpeed "{}Actual engine speed"{};}
\end{DoxyCode}
Stored in\+:
\begin{DoxyItemize}
\item {\ttfamily \mbox{\hyperlink{structFrameInfo_ace75121294f9d89b762080ab5643293c}{Frame\+Info\+::comment}}}
\item {\ttfamily \mbox{\hyperlink{structSignalInfo_ac99ba7563a5dad01e39c4257216953f5}{Signal\+Info\+::comment}}}
\end{DoxyItemize}
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md60}{}\doxysection{CAN ID Normalization}\label{md_README_autotoc_md60}
The parser normalizes frame identifiers.
Common DBC behavior\+:
\begin{DoxyItemize}
\item extended identifiers may be stored with bit 31 set
\item the actual 29-\/bit identifier must be extracted from that value
\end{DoxyItemize}
The parser therefore stores\+:
\begin{DoxyItemize}
\item normalized {\ttfamily can\+Id}
\item separate {\ttfamily is\+Extended} flag
\end{DoxyItemize}
This is important both for correct lookup and for future interoperability with live CAN APIs.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md62}{}\doxysection{PGN Extraction}\label{md_README_autotoc_md62}
PGN is derived only when the frame is treated as extended.
The current logic is simplified J1939 extraction\+:
\begin{DoxyItemize}
\item {\ttfamily pf}
\item {\ttfamily ps}
\item {\ttfamily dp}
\end{DoxyItemize}
This is enough for a practical start but should not be treated as full J1939 validation.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md64}{}\doxysection{Decode Flow}\label{md_README_autotoc_md64}
Typical runtime decode flow\+:
\begin{DoxyCode}{0}
\DoxyCodeLine{RawCanFrame}
\DoxyCodeLine{}
\DoxyCodeLine{Find frame in DecodeDatabase}
\DoxyCodeLine{}
\DoxyCodeLine{For each signal:}
\DoxyCodeLine{ extract raw bits}
\DoxyCodeLine{ apply sign extension if needed}
\DoxyCodeLine{ convert to physical value}
\DoxyCodeLine{}
\DoxyCodeLine{DecodedFrameValue}
\end{DoxyCode}
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md66}{}\doxysection{Intel and Motorola Extraction}\label{md_README_autotoc_md66}
The decoder currently has separate extraction paths\+:
\begin{DoxyItemize}
\item {\ttfamily Extract\+Intel(...)}
\item {\ttfamily Extract\+Motorola(...)}
\end{DoxyItemize}
This is important because byte order is not just metadata once decoding starts.
Intel and Motorola require different bit extraction logic.
This is one of the main reasons why the runtime decode layer should be explicit and prepared in advance.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md68}{}\doxysection{Example Usage}\label{md_README_autotoc_md68}
\hypertarget{md_README_autotoc_md69}{}\doxysection{Parse DBC}\label{md_README_autotoc_md69}
\begin{DoxyCode}{0}
\DoxyCodeLine{\mbox{\hyperlink{classDbcParser}{DbcParser}} parser;}
\DoxyCodeLine{\mbox{\hyperlink{structDbcDatabase}{DbcDatabase}} database = parser.\mbox{\hyperlink{classDbcParser_aef72826942c9095d653fafa435855e56}{ParseFile}}(\textcolor{stringliteral}{"{}example.dbc"{}});}
\end{DoxyCode}
\hypertarget{md_README_autotoc_md70}{}\doxysection{Build UI tree}\label{md_README_autotoc_md70}
\begin{DoxyCode}{0}
\DoxyCodeLine{\mbox{\hyperlink{classDbcTreeBuilder}{DbcTreeBuilder}} treeBuilder;}
\DoxyCodeLine{std::unique\_ptr<TreeNode> root = treeBuilder.\mbox{\hyperlink{classDbcTreeBuilder_a7e57d067d831b14b383947fd125edd4b}{Build}}(database);}
\end{DoxyCode}
\hypertarget{md_README_autotoc_md71}{}\doxysection{Build runtime decode database}\label{md_README_autotoc_md71}
\begin{DoxyCode}{0}
\DoxyCodeLine{\mbox{\hyperlink{classDbcDecodeBuilder}{DbcDecodeBuilder}} decodeBuilder;}
\DoxyCodeLine{\mbox{\hyperlink{structDecodeDatabase}{DecodeDatabase}} decodeDatabase = decodeBuilder.\mbox{\hyperlink{classDbcDecodeBuilder_a2bc6386dfb5e58976c42e22c19ec471b}{Build}}(database);}
\end{DoxyCode}
\hypertarget{md_README_autotoc_md72}{}\doxysection{Decode a raw frame}\label{md_README_autotoc_md72}
\begin{DoxyCode}{0}
\DoxyCodeLine{\mbox{\hyperlink{structRawCanFrame}{RawCanFrame}} rawFrame;}
\DoxyCodeLine{rawFrame.\mbox{\hyperlink{structRawCanFrame_a2d0e7fa0e3d5c20bbed55ed8f7888ff4}{canId}} = 0x123;}
\DoxyCodeLine{rawFrame.\mbox{\hyperlink{structRawCanFrame_a462193d275adc1dba8bd18ffa0e36bb7}{isExtended}} = \textcolor{keyword}{false};}
\DoxyCodeLine{rawFrame.\mbox{\hyperlink{structRawCanFrame_a0acb487612104c99c9907344c035df83}{data}} = \{0x01, 0x02, 0x03, 0x04\};}
\DoxyCodeLine{}
\DoxyCodeLine{\mbox{\hyperlink{classDbcDecoder}{DbcDecoder}} decoder;}
\DoxyCodeLine{\mbox{\hyperlink{structDecodedFrameValue}{DecodedFrameValue}} decoded = decoder.\mbox{\hyperlink{classDbcDecoder_a345951ffe5d943a70d3a1ea1f39e74f7}{Decode}}(decodeDatabase, rawFrame);}
\end{DoxyCode}
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md74}{}\doxysection{Unified Decode Strategy}\label{md_README_autotoc_md74}
A key design goal is that the same decoder should work for both\+:
\begin{DoxyItemize}
\item live CAN frames
\item trace replay frames
\end{DoxyItemize}
That means this architecture supports\+:\hypertarget{md_README_autotoc_md75}{}\doxysubsection{live path}\label{md_README_autotoc_md75}
\begin{DoxyCode}{0}
\DoxyCodeLine{live CAN input}
\DoxyCodeLine{}
\DoxyCodeLine{RawCanFrame}
\DoxyCodeLine{}
\DoxyCodeLine{DbcDecoder}
\DoxyCodeLine{}
\DoxyCodeLine{decoded signal values}
\end{DoxyCode}
\hypertarget{md_README_autotoc_md76}{}\doxysubsection{trace path}\label{md_README_autotoc_md76}
\begin{DoxyCode}{0}
\DoxyCodeLine{trace reader}
\DoxyCodeLine{}
\DoxyCodeLine{RawCanFrame}
\DoxyCodeLine{}
\DoxyCodeLine{DbcDecoder}
\DoxyCodeLine{}
\DoxyCodeLine{decoded signal values}
\end{DoxyCode}
This avoids duplicating decode logic in two separate parts of the application.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md78}{}\doxysection{Intended Use in Frame\+Tap}\label{md_README_autotoc_md78}
This module is meant to support at least the following Frame\+Tap workflows\+:
\begin{DoxyItemize}
\item load a DBC file
\item browse frames and signals
\item search signals
\item drag a signal into a plot later
\item decode live CAN traffic
\item decode recorded traces
\item convert raw values into physical values
\item show metadata like units, comments, transmitter, receivers, and PGN
\end{DoxyItemize}
Example combined workflow\+:
\begin{DoxyCode}{0}
\DoxyCodeLine{Load DBC}
\DoxyCodeLine{}
\DoxyCodeLine{Parse into DbcDatabase}
\DoxyCodeLine{}
\DoxyCodeLine{Build UI tree}
\DoxyCodeLine{}
\DoxyCodeLine{Build DecodeDatabase}
\DoxyCodeLine{}
\DoxyCodeLine{Use same decode engine for:}
\DoxyCodeLine{ -\/ live frames}
\DoxyCodeLine{ -\/ trace replay}
\end{DoxyCode}
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md80}{}\doxysection{Why the Tree Is Not Enough}\label{md_README_autotoc_md80}
The tree exists for browsing.
However, runtime decode should not rely on tree traversal because that would introduce unnecessary coupling and inefficiency.
A runtime decoder needs\+:
\begin{DoxyItemize}
\item fast key-\/based access
\item minimal interpretation at decode time
\item direct signal definitions already prepared
\end{DoxyItemize}
That is why {\ttfamily \mbox{\hyperlink{structDecodeDatabase}{Decode\+Database}}} is a separate layer.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md82}{}\doxysection{Why No Abstract Factory Is Used}\label{md_README_autotoc_md82}
At the current stage, abstract factory is intentionally avoided.
The current design is already clean\+:
\begin{DoxyCode}{0}
\DoxyCodeLine{parser → parsed database → decode database}
\DoxyCodeLine{ ↘ tree builder → UI tree}
\end{DoxyCode}
Introducing factory layers now would increase complexity without solving an immediate problem.
If later the project requires multiple output representations or multiple build strategies, that can be added then.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md84}{}\doxysection{Current Limitations}\label{md_README_autotoc_md84}
This is still a minimal implementation.
Not supported yet\+:
\begin{DoxyItemize}
\item multiplexed signals
\item {\ttfamily VAL\+\_\+} tables
\item {\ttfamily BA\+\_\+} attributes
\item {\ttfamily BA\+\_\+\+DEF\+\_\+} definitions
\item advanced comment handling
\item full DBC grammar coverage
\item full J1939 validation
\item extensive edge-\/case handling for unusual DBC formatting
\end{DoxyItemize}
Motorola extraction is implemented, but it should still be verified carefully against real-\/world DBC files and expected values.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md86}{}\doxysection{Recommended Next Steps}\label{md_README_autotoc_md86}
A practical development order would be\+:\hypertarget{md_README_autotoc_md87}{}\doxysubsection{Stage 1 -\/ already implemented}\label{md_README_autotoc_md87}
\begin{DoxyItemize}
\item {\ttfamily BO\+\_\+}
\item {\ttfamily SG\+\_\+}
\item {\ttfamily CM\+\_\+}
\item normalized CAN ID
\item {\ttfamily is\+Extended}
\item transmitter
\item receivers
\item comments
\item tree representation
\item runtime decode database
\item runtime decoder
\end{DoxyItemize}\hypertarget{md_README_autotoc_md88}{}\doxysubsection{Stage 2}\label{md_README_autotoc_md88}
Recommended additions\+:
\begin{DoxyItemize}
\item parent pointer in {\ttfamily \mbox{\hyperlink{classTreeNode}{Tree\+Node}}}
\item Qt model adapter
\item {\ttfamily VAL\+\_\+} support for enum-\/style signals
\item better display strings for UI
\item selective decoding of only chosen signals
\end{DoxyItemize}\hypertarget{md_README_autotoc_md89}{}\doxysubsection{Stage 3}\label{md_README_autotoc_md89}
Recommended additions\+:
\begin{DoxyItemize}
\item multiplexing support
\item attribute parsing
\item richer J1939 support
\item CSV export of decoded traces
\item optimized filtering and signal selection
\end{DoxyItemize}\hypertarget{md_README_autotoc_md90}{}\doxysubsection{Stage 4}\label{md_README_autotoc_md90}
Advanced functionality\+:
\begin{DoxyItemize}
\item live plot integration
\item signal subscriptions
\item per-\/signal trace decode pipelines
\item decoder-\/assisted export formats
\end{DoxyItemize}
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md92}{}\doxysection{Build Integration}\label{md_README_autotoc_md92}
The module does not depend on any specific build system.
It can be integrated with\+:
\begin{DoxyItemize}
\item CMake
\item qmake
\item Makefile
\end{DoxyItemize}
Just add the source files to the project.
\DoxyHorRuler{0}
\hypertarget{md_README_autotoc_md94}{}\doxysection{Summary}\label{md_README_autotoc_md94}
This module is now split into two intentionally separate layers\+:\hypertarget{md_README_autotoc_md95}{}\doxysubsection{Parsed representation}\label{md_README_autotoc_md95}
Used for\+:
\begin{DoxyItemize}
\item storing parsed DBC content
\item browsing
\item UI tree generation
\end{DoxyItemize}\hypertarget{md_README_autotoc_md96}{}\doxysubsection{Runtime decode representation}\label{md_README_autotoc_md96}
Used for\+:
\begin{DoxyItemize}
\item fast frame lookup
\item live CAN decode
\item trace decode
\item physical value conversion
\end{DoxyItemize}
That separation is the main architectural improvement.
In short, the system now looks like this\+:
\begin{DoxyCode}{0}
\DoxyCodeLine{DBC parser → DbcDatabase → DecodeDatabase → DbcDecoder}
\DoxyCodeLine{ ↘ TreeNode → future UI}
\end{DoxyCode}
This gives Frame\+Tap a much better foundation for real use, because both browsing and decoding are supported without forcing one representation to do the other\textquotesingle{}s job.

View File

@@ -0,0 +1,36 @@
\hypertarget{namespaceanonymous__namespace_02dbc__parser_8cpp_03}{}\doxysection{anonymous\+\_\+namespace\{dbc\+\_\+parser.\+cpp\} Namespace Reference}
\label{namespaceanonymous__namespace_02dbc__parser_8cpp_03}\index{anonymous\_namespace\lcurly{}dbc\_parser.cpp\rcurly{}@{anonymous\_namespace\lcurly{}dbc\_parser.cpp\rcurly{}}}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item
std\+::string \mbox{\hyperlink{namespaceanonymous__namespace_02dbc__parser_8cpp_03_a5850f07ce5f4e5c4f3bf385ebcfcebbb}{Trim\+Text}} (const std\+::string \&text)
\begin{DoxyCompactList}\small\item\em Remove leading and trailing spaces. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection{Function Documentation}
\mbox{\Hypertarget{namespaceanonymous__namespace_02dbc__parser_8cpp_03_a5850f07ce5f4e5c4f3bf385ebcfcebbb}\label{namespaceanonymous__namespace_02dbc__parser_8cpp_03_a5850f07ce5f4e5c4f3bf385ebcfcebbb}}
\index{anonymous\_namespace\lcurly{}dbc\_parser.cpp\rcurly{}@{anonymous\_namespace\lcurly{}dbc\_parser.cpp\rcurly{}}!TrimText@{TrimText}}
\index{TrimText@{TrimText}!anonymous\_namespace\lcurly{}dbc\_parser.cpp\rcurly{}@{anonymous\_namespace\lcurly{}dbc\_parser.cpp\rcurly{}}}
\doxysubsubsection{\texorpdfstring{TrimText()}{TrimText()}}
{\footnotesize\ttfamily std\+::string anonymous\+\_\+namespace\{dbc\+\_\+parser.\+cpp\}\+::\+Trim\+Text (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{text }\end{DoxyParamCaption})}
Remove leading and trailing spaces.
\begin{DoxyParams}{Parameters}
{\em text} & Input text. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Trimmed text.
\end{DoxyReturn}
Definition at line \mbox{\hyperlink{dbc__parser_8cpp_source_l00025}{25}} of file \mbox{\hyperlink{dbc__parser_8cpp_source}{dbc\+\_\+parser.\+cpp}}.
Referenced by \mbox{\hyperlink{dbc__parser_8cpp_source_l00181}{Dbc\+Parser\+::\+Parse\+Signal\+Line()}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00087}{Dbc\+Parser\+::\+Split\+Receivers()}}, and \mbox{\hyperlink{dbc__parser_8cpp_source_l00083}{Dbc\+Parser\+::\+Trim()}}.

View File

@@ -0,0 +1,4 @@
\doxysection{Namespace List}
Here is a list of all namespaces with brief descriptions\+:\begin{DoxyCompactList}
\item\contentsline{section}{\mbox{\hyperlink{namespaceanonymous__namespace_02dbc__parser_8cpp_03}{anonymous\+\_\+namespace\{dbc\+\_\+parser.\+cpp\}}} }{\pageref{namespaceanonymous__namespace_02dbc__parser_8cpp_03}}{}
\end{DoxyCompactList}

248
docs/latex/refman.tex Normal file
View File

@@ -0,0 +1,248 @@
% Handle batch mode
% to overcome problems with too many open files
\let\mypdfximage\pdfximage\def\pdfximage{\immediate\mypdfximage}
% Set document class depending on configuration
\documentclass[twoside]{book}
%% moved from doxygen.sty due to workaround for LaTex 2019 version and unmaintained tabu package
\usepackage{ifthen}
\ifx\requestedLaTeXdate\undefined
\usepackage{array}
\else
\usepackage{array}[=2016-10-06]
\fi
%%
% Packages required by doxygen
\usepackage{fixltx2e} % for \textsubscript
\usepackage{doxygen}
\usepackage{graphicx}
\usepackage[utf8]{inputenc}
\usepackage{makeidx}
\PassOptionsToPackage{warn}{textcomp}
\usepackage{textcomp}
\usepackage[nointegrals]{wasysym}
\usepackage{ifxetex}
% NLS support packages
% Define default fonts
% Font selection
\usepackage[T1]{fontenc}
% set main and monospaced font
\usepackage[scaled=.90]{helvet}
\usepackage{courier}
\renewcommand{\familydefault}{\sfdefault}
\usepackage{sectsty}
\allsectionsfont{%
\fontseries{bc}\selectfont%
\color{darkgray}%
}
\renewcommand{\DoxyLabelFont}{%
\fontseries{bc}\selectfont%
\color{darkgray}%
}
\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}}
% Arguments of doxygenemoji:
% 1) ':<text>:' form of the emoji, already LaTeX-escaped
% 2) file with the name of the emoji without the .png extension
% in case image exist use this otherwise use the ':<text>:' form
\newcommand{\doxygenemoji}[2]{%
\IfFileExists{./#2.png}{\raisebox{-0.1em}{\includegraphics[height=0.9em]{./#2.png}}}{#1}%
}
% Page & text layout
\usepackage{geometry}
\geometry{%
letterpaper,%
top=2.5cm,%
bottom=2.5cm,%
left=2.5cm,%
right=2.5cm%
}
% Allow a bit of overflow to go unnoticed by other means
\tolerance=750
\hfuzz=15pt
\hbadness=750
\setlength{\emergencystretch}{15pt}
\setlength{\parindent}{0cm}
\newcommand{\doxynormalparskip}{\setlength{\parskip}{3ex plus 2ex minus 2ex}}
\newcommand{\doxytocparskip}{\setlength{\parskip}{1ex plus 0ex minus 0ex}}
\doxynormalparskip
% Redefine paragraph/subparagraph environments, using sectsty fonts
\makeatletter
\renewcommand{\paragraph}{%
\@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%
\normalfont\normalsize\bfseries\SS@parafont%
}%
}
\renewcommand{\subparagraph}{%
\@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%
\normalfont\normalsize\bfseries\SS@subparafont%
}%
}
\makeatother
\makeatletter
\newcommand\hrulefilll{\leavevmode\leaders\hrule\hskip 0pt plus 1filll\kern\z@}
\makeatother
% Headers & footers
\usepackage{fancyhdr}
\pagestyle{fancyplain}
\renewcommand{\footrulewidth}{0.4pt}
\fancypagestyle{fancyplain}{
\fancyhf{}
\fancyhead[LE, RO]{\bfseries\thepage}
\fancyhead[LO]{\bfseries\rightmark}
\fancyhead[RE]{\bfseries\leftmark}
\fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen }
}
\fancypagestyle{plain}{
\fancyhf{}
\fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen }
\renewcommand{\headrulewidth}{0pt}
}
\pagestyle{fancyplain}
\renewcommand{\chaptermark}[1]{%
\markboth{#1}{}%
}
\renewcommand{\sectionmark}[1]{%
\markright{\thesection\ #1}%
}
% ToC, LoF, LoT, bibliography, and index
% Indices & bibliography
\usepackage{natbib}
\usepackage[titles]{tocloft}
\setcounter{tocdepth}{3}
\setcounter{secnumdepth}{5}
% creating indexes
\makeindex
\usepackage{newunicodechar}
\newunicodechar{}{${}^{-}$}% Superscript minus
\newunicodechar{²}{${}^{2}$}% Superscript two
\newunicodechar{³}{${}^{3}$}% Superscript three
% Hyperlinks
% Hyperlinks (required, but should be loaded last)
\ifpdf
\usepackage[pdftex,pagebackref=true]{hyperref}
\else
\ifxetex
\usepackage[pagebackref=true]{hyperref}
\else
\usepackage[ps2pdf,pagebackref=true]{hyperref}
\fi
\fi
\hypersetup{%
colorlinks=true,%
linkcolor=blue,%
citecolor=blue,%
unicode,%
pdftitle={DBC framework},%
pdfsubject={}%
}
% Custom commands used by the header
% Custom commands
\newcommand{\clearemptydoublepage}{%
\newpage{\pagestyle{empty}\cleardoublepage}%
}
% caption style definition
\usepackage{caption}
\captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top}
% in page table of contents
\usepackage{etoc}
\etocsettocstyle{\doxytocparskip}{\doxynormalparskip}
% prevent numbers overlap the titles in toc
\renewcommand{\numberline}[1]{#1~}
% End of preamble, now comes the document contents
%===== C O N T E N T S =====
\begin{document}
\raggedbottom
% Titlepage & ToC
% To avoid duplicate page anchors due to reuse of same numbers for
% the index (be it as roman numbers)
\hypersetup{pageanchor=false,
bookmarksnumbered=true,
pdfencoding=unicode
}
\pagenumbering{alph}
\begin{titlepage}
\vspace*{7cm}
\begin{center}%
{\Large DBC framework}\\
\vspace*{1cm}
{\large Generated by Doxygen 1.9.4}\\
\end{center}
\end{titlepage}
\clearemptydoublepage
\pagenumbering{roman}
\tableofcontents
\clearemptydoublepage
\pagenumbering{arabic}
% re-enable anchors again
\hypersetup{pageanchor=true}
%--- Begin generated contents ---
\chapter{DBC Parser and Runtime Decode Module Documentation}
\label{md_README}
\Hypertarget{md_README}
\input{md_README}
\chapter{Namespace Index}
\input{namespaces}
\chapter{Class Index}
\input{annotated}
\chapter{File Index}
\input{files}
\chapter{Namespace Documentation}
\input{namespaceanonymous__namespace_02dbc__parser_8cpp_03}
\chapter{Class Documentation}
\input{structDbcDatabase}
\input{classDbcDecodeBuilder}
\input{classDbcDecoder}
\input{classDbcParser}
\input{classDbcTreeBuilder}
\input{structDecodeDatabase}
\input{structDecodedFrameValue}
\input{structDecodedSignalValue}
\input{structDecodeFrame}
\input{structDecodeSignal}
\input{structFrameInfo}
\input{structFrameKey}
\input{structFrameKeyHasher}
\input{structRawCanFrame}
\input{structSignalInfo}
\input{classTreeNode}
\chapter{File Documentation}
\input{dbc__database_8h}
\input{dbc__database_8h_source}
\input{dbc__decode__builder_8cpp}
\input{dbc__decode__builder_8cpp_source}
\input{dbc__decode__builder_8h}
\input{dbc__decode__builder_8h_source}
\input{dbc__decoder_8cpp}
\input{dbc__decoder_8cpp_source}
\input{dbc__decoder_8h}
\input{dbc__decoder_8h_source}
\input{dbc__parser_8cpp}
\input{dbc__parser_8cpp_source}
\input{dbc__parser_8h}
\input{dbc__parser_8h_source}
\input{dbc__tree__builder_8cpp}
\input{dbc__tree__builder_8cpp_source}
\input{dbc__tree__builder_8h}
\input{dbc__tree__builder_8h_source}
\input{decode__database_8h}
\input{decode__database_8h_source}
\input{frame__info_8h}
\input{frame__info_8h_source}
\input{main_8cpp}
\input{main_8cpp_source}
\input{README_8md}
\input{signal__info_8h}
\input{signal__info_8h_source}
\input{tree__node_8cpp}
\input{tree__node_8cpp_source}
\input{tree__node_8h}
\input{tree__node_8h_source}
%--- End generated contents ---
% Index
\backmatter
\newpage
\phantomsection
\clearemptydoublepage
\addcontentsline{toc}{chapter}{\indexname}
\printindex
% Required for some languages (in combination with latexdocumentpre from the header)
\end{document}

View File

@@ -0,0 +1,24 @@
\hypertarget{signal__info_8h}{}\doxysection{signal\+\_\+info.\+h File Reference}
\label{signal__info_8h}\index{signal\_info.h@{signal\_info.h}}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
{\ttfamily \#include $<$string$>$}\newline
{\ttfamily \#include $<$vector$>$}\newline
{\ttfamily \#include $<$cstdint$>$}\newline
\doxysubsection*{Classes}
\begin{DoxyCompactItemize}
\item
struct \mbox{\hyperlink{structSignalInfo}{Signal\+Info}}
\begin{DoxyCompactList}\small\item\em Describes one signal inside a DBC frame. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
Licensed under the MIT License. See LICENSE file in the project root for full license text.
Definition in file \mbox{\hyperlink{signal__info_8h_source}{signal\+\_\+info.\+h}}.

View File

@@ -0,0 +1,57 @@
\hypertarget{signal__info_8h_source}{}\doxysection{signal\+\_\+info.\+h}
\mbox{\hyperlink{signal__info_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00001}00001 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00002}00002 \textcolor{comment}{ * @file signal\_info.h}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00003}00003 \textcolor{comment}{ * @brief}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00005}00005 \textcolor{comment}{ * Created: 2026-\/03-\/13}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00006}00006 \textcolor{comment}{ * Author: Deeaitch (Dim. Himro)}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00008}00008 \textcolor{comment}{ * Licensed under the MIT License.}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00009}00009 \textcolor{comment}{ * See LICENSE file in the project root for full license text.}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00010}00010 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00011}00011 }
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00012}00012 \textcolor{preprocessor}{\#ifndef SIGNAL\_INFO\_H}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00013}00013 \textcolor{preprocessor}{\#define SIGNAL\_INFO\_H}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00014}00014 }
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00015}00015 \textcolor{preprocessor}{\#include <string>}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00016}00016 \textcolor{preprocessor}{\#include <vector>}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00017}00017 \textcolor{preprocessor}{\#include <cstdint>}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00018}00018 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00019}00019 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00020}00020 \textcolor{comment}{ * @brief Describes one signal inside a DBC frame.}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00021}00021 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00022}\mbox{\hyperlink{structSignalInfo}{00022}} \textcolor{keyword}{struct }\mbox{\hyperlink{structSignalInfo}{SignalInfo}} \{}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00023}\mbox{\hyperlink{structSignalInfo_a379e422a00cad56f896cacf60455b088}{00023}} std::string \mbox{\hyperlink{structSignalInfo_a379e422a00cad56f896cacf60455b088}{name}}; \textcolor{comment}{/**< Signal name. */}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00024}\mbox{\hyperlink{structSignalInfo_ace290724f9801521609aedaa946d61f1}{00024}} std::uint32\_t \mbox{\hyperlink{structSignalInfo_ace290724f9801521609aedaa946d61f1}{startBit}}; \textcolor{comment}{/**< Start bit in DBC notation. */}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00025}\mbox{\hyperlink{structSignalInfo_a1008b5201f71848177217bd52fb84baa}{00025}} std::uint32\_t \mbox{\hyperlink{structSignalInfo_a1008b5201f71848177217bd52fb84baa}{length}}; \textcolor{comment}{/**< Signal length in bits. */}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00026}\mbox{\hyperlink{structSignalInfo_af363b1563fb4c7cc8973f9a80c06846c}{00026}} \textcolor{keywordtype}{bool} \mbox{\hyperlink{structSignalInfo_af363b1563fb4c7cc8973f9a80c06846c}{isLittleEndian}}; \textcolor{comment}{/**< true for Intel, false for Motorola. */}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00027}\mbox{\hyperlink{structSignalInfo_a52a52b320eef92fbcb4626307f9a498f}{00027}} \textcolor{keywordtype}{bool} \mbox{\hyperlink{structSignalInfo_a52a52b320eef92fbcb4626307f9a498f}{isSigned}}; \textcolor{comment}{/**< true if signal is signed. */}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00028}\mbox{\hyperlink{structSignalInfo_ae4f78d99a2750aa564d7eba860171499}{00028}} \textcolor{keywordtype}{double} \mbox{\hyperlink{structSignalInfo_ae4f78d99a2750aa564d7eba860171499}{factor}}; \textcolor{comment}{/**< Scaling factor. */}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00029}\mbox{\hyperlink{structSignalInfo_ab7d0769f47aa540656b22e4e49db517e}{00029}} \textcolor{keywordtype}{double} \mbox{\hyperlink{structSignalInfo_ab7d0769f47aa540656b22e4e49db517e}{offset}}; \textcolor{comment}{/**< Physical offset. */}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00030}\mbox{\hyperlink{structSignalInfo_ada7bf94fbeaa26bd08c73982b5af255b}{00030}} \textcolor{keywordtype}{double} \mbox{\hyperlink{structSignalInfo_ada7bf94fbeaa26bd08c73982b5af255b}{minimum}}; \textcolor{comment}{/**< Minimum physical value. */}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00031}\mbox{\hyperlink{structSignalInfo_adf1c4331b9eabced0d7fdda40ff0eb52}{00031}} \textcolor{keywordtype}{double} \mbox{\hyperlink{structSignalInfo_adf1c4331b9eabced0d7fdda40ff0eb52}{maximum}}; \textcolor{comment}{/**< Maximum physical value. */}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00032}\mbox{\hyperlink{structSignalInfo_a1f214f03e94ef5794de2d3367bfcbd01}{00032}} std::string \mbox{\hyperlink{structSignalInfo_a1f214f03e94ef5794de2d3367bfcbd01}{unit}}; \textcolor{comment}{/**< Physical unit. */}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00033}\mbox{\hyperlink{structSignalInfo_a2c95562fd0b29327a7fd7b1e6feee7f3}{00033}} std::vector<std::string> \mbox{\hyperlink{structSignalInfo_a2c95562fd0b29327a7fd7b1e6feee7f3}{receivers}}; \textcolor{comment}{/**< Signal receivers. */}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00034}\mbox{\hyperlink{structSignalInfo_ac99ba7563a5dad01e39c4257216953f5}{00034}} std::string \mbox{\hyperlink{structSignalInfo_ac99ba7563a5dad01e39c4257216953f5}{comment}}; \textcolor{comment}{/**< Optional signal comment. */}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00035}00035 }
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00036}\mbox{\hyperlink{structSignalInfo_aa2d2cd238118015258e271dce92a971e}{00036}} \mbox{\hyperlink{structSignalInfo_aa2d2cd238118015258e271dce92a971e}{SignalInfo}}()}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00037}00037 : \mbox{\hyperlink{structSignalInfo_a379e422a00cad56f896cacf60455b088}{name}}()}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00038}00038 , \mbox{\hyperlink{structSignalInfo_ace290724f9801521609aedaa946d61f1}{startBit}} (0U)}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00039}00039 , \mbox{\hyperlink{structSignalInfo_a1008b5201f71848177217bd52fb84baa}{length}} (0U)}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00040}00040 , \mbox{\hyperlink{structSignalInfo_af363b1563fb4c7cc8973f9a80c06846c}{isLittleEndian}} (true)}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00041}00041 , \mbox{\hyperlink{structSignalInfo_a52a52b320eef92fbcb4626307f9a498f}{isSigned}} (false)}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00042}00042 , \mbox{\hyperlink{structSignalInfo_ae4f78d99a2750aa564d7eba860171499}{factor}} (1.0)}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00043}00043 , \mbox{\hyperlink{structSignalInfo_ab7d0769f47aa540656b22e4e49db517e}{offset}} (0.0)}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00044}00044 , \mbox{\hyperlink{structSignalInfo_ada7bf94fbeaa26bd08c73982b5af255b}{minimum}} (0.0)}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00045}00045 , \mbox{\hyperlink{structSignalInfo_adf1c4331b9eabced0d7fdda40ff0eb52}{maximum}} (0.0)}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00046}00046 , \mbox{\hyperlink{structSignalInfo_a1f214f03e94ef5794de2d3367bfcbd01}{unit}}()}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00047}00047 , \mbox{\hyperlink{structSignalInfo_a2c95562fd0b29327a7fd7b1e6feee7f3}{receivers}}()}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00048}00048 , \mbox{\hyperlink{structSignalInfo_ac99ba7563a5dad01e39c4257216953f5}{comment}}() \{}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00049}00049 \}}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00050}00050 \};}
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00051}00051 }
\DoxyCodeLine{\Hypertarget{signal__info_8h_source_l00052}00052 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* SIGNAL\_INFO\_H */}\textcolor{preprocessor}{}}
\end{DoxyCode}

View File

@@ -0,0 +1,45 @@
\hypertarget{structDbcDatabase}{}\doxysection{Dbc\+Database Struct Reference}
\label{structDbcDatabase}\index{DbcDatabase@{DbcDatabase}}
Parsed DBC content stored in a simple internal form.
{\ttfamily \#include $<$dbc\+\_\+database.\+h$>$}
\doxysubsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item
std\+::vector$<$ \mbox{\hyperlink{structFrameInfo}{Frame\+Info}} $>$ \mbox{\hyperlink{structDbcDatabase_a2cade5d0234ee816132127542f8c612b}{frames}}
\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Parsed DBC content stored in a simple internal form.
Definition at line \mbox{\hyperlink{dbc__database_8h_source_l00022}{22}} of file \mbox{\hyperlink{dbc__database_8h_source}{dbc\+\_\+database.\+h}}.
\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{structDbcDatabase_a2cade5d0234ee816132127542f8c612b}\label{structDbcDatabase_a2cade5d0234ee816132127542f8c612b}}
\index{DbcDatabase@{DbcDatabase}!frames@{frames}}
\index{frames@{frames}!DbcDatabase@{DbcDatabase}}
\doxysubsubsection{\texorpdfstring{frames}{frames}}
{\footnotesize\ttfamily std\+::vector$<$\mbox{\hyperlink{structFrameInfo}{Frame\+Info}}$>$ Dbc\+Database\+::frames}
All frames found in the DBC file.
Definition at line \mbox{\hyperlink{dbc__database_8h_source_l00023}{23}} of file \mbox{\hyperlink{dbc__database_8h_source}{dbc\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__tree__builder_8cpp_source_l00014}{Dbc\+Tree\+Builder\+::\+Build()}}, \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00337}{Dbc\+Parser\+::\+Find\+Frame\+By\+Id()}}, and \mbox{\hyperlink{dbc__parser_8cpp_source_l00040}{Dbc\+Parser\+::\+Parse\+File()}}.
The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{dbc__database_8h}{dbc\+\_\+database.\+h}}\end{DoxyCompactItemize}

View File

@@ -0,0 +1,61 @@
\hypertarget{structDecodeDatabase}{}\doxysection{Decode\+Database Struct Reference}
\label{structDecodeDatabase}\index{DecodeDatabase@{DecodeDatabase}}
Runtime decode database with fast lookup by CAN ID.
{\ttfamily \#include $<$decode\+\_\+database.\+h$>$}
\doxysubsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item
std\+::vector$<$ \mbox{\hyperlink{structDecodeFrame}{Decode\+Frame}} $>$ \mbox{\hyperlink{structDecodeDatabase_a2bd4ddfc2602c1de4e12a373bfc93072}{frames}}
\item
std\+::unordered\+\_\+map$<$ \mbox{\hyperlink{structFrameKey}{Frame\+Key}}, std\+::size\+\_\+t, \mbox{\hyperlink{structFrameKeyHasher}{Frame\+Key\+Hasher}} $>$ \mbox{\hyperlink{structDecodeDatabase_ae4fd1351008bb0dce337821a849100c5}{frame\+Index\+By\+Key}}
\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Runtime decode database with fast lookup by CAN ID.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00132}{132}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{structDecodeDatabase_ae4fd1351008bb0dce337821a849100c5}\label{structDecodeDatabase_ae4fd1351008bb0dce337821a849100c5}}
\index{DecodeDatabase@{DecodeDatabase}!frameIndexByKey@{frameIndexByKey}}
\index{frameIndexByKey@{frameIndexByKey}!DecodeDatabase@{DecodeDatabase}}
\doxysubsubsection{\texorpdfstring{frameIndexByKey}{frameIndexByKey}}
{\footnotesize\ttfamily std\+::unordered\+\_\+map$<$\mbox{\hyperlink{structFrameKey}{Frame\+Key}}, std\+::size\+\_\+t, \mbox{\hyperlink{structFrameKeyHasher}{Frame\+Key\+Hasher}}$>$ Decode\+Database\+::frame\+Index\+By\+Key}
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00134}{134}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{dbc__decoder_8cpp_source_l00014}{Dbc\+Decoder\+::\+Find\+Frame()}}.
\mbox{\Hypertarget{structDecodeDatabase_a2bd4ddfc2602c1de4e12a373bfc93072}\label{structDecodeDatabase_a2bd4ddfc2602c1de4e12a373bfc93072}}
\index{DecodeDatabase@{DecodeDatabase}!frames@{frames}}
\index{frames@{frames}!DecodeDatabase@{DecodeDatabase}}
\doxysubsubsection{\texorpdfstring{frames}{frames}}
{\footnotesize\ttfamily std\+::vector$<$\mbox{\hyperlink{structDecodeFrame}{Decode\+Frame}}$>$ Decode\+Database\+::frames}
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00133}{133}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, \mbox{\hyperlink{dbc__decoder_8cpp_source_l00014}{Dbc\+Decoder\+::\+Find\+Frame()}}, and \mbox{\hyperlink{main_8cpp_source_l00097}{main()}}.
The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{decode__database_8h}{decode\+\_\+database.\+h}}\end{DoxyCompactItemize}

View File

@@ -0,0 +1,191 @@
\hypertarget{structDecodeFrame}{}\doxysection{Decode\+Frame Struct Reference}
\label{structDecodeFrame}\index{DecodeFrame@{DecodeFrame}}
Runtime-\/ready frame definition.
{\ttfamily \#include $<$decode\+\_\+database.\+h$>$}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{structDecodeFrame_ae6ae88ee29bcaff936e7c7b2380f96b4}{Decode\+Frame}} ()
\end{DoxyCompactItemize}
\doxysubsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item
std\+::string \mbox{\hyperlink{structDecodeFrame_aa0a7f8fd5bfde2148dfd0d838328f579}{name}}
\item
std\+::uint32\+\_\+t \mbox{\hyperlink{structDecodeFrame_a52e10215388db7df8b541b9d9909edcf}{can\+Id}}
\item
bool \mbox{\hyperlink{structDecodeFrame_a3ee2348d781f8f15aaf87e8dcf57ec41}{is\+Extended}}
\item
std\+::uint8\+\_\+t \mbox{\hyperlink{structDecodeFrame_a51111ac13988be372d5673d12cf3e060}{dlc}}
\item
std\+::uint32\+\_\+t \mbox{\hyperlink{structDecodeFrame_a1d3c54055c0cbceb73adf551f7067f23}{pgn}}
\item
bool \mbox{\hyperlink{structDecodeFrame_a2551102670c4a540fced4c71da0b369d}{has\+Pgn}}
\item
std\+::string \mbox{\hyperlink{structDecodeFrame_ad78241dc40c793aabb8495b6989b81a9}{transmitter}}
\item
std\+::string \mbox{\hyperlink{structDecodeFrame_a25819ef907a32391af5c9f7cae9cdb22}{comment}}
\item
std\+::vector$<$ \mbox{\hyperlink{structDecodeSignal}{Decode\+Signal}} $>$ \mbox{\hyperlink{structDecodeFrame_a372afd9e74f1ae33f85cb4acfd3e2036}{signals}}
\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Runtime-\/ready frame definition.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00072}{72}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{structDecodeFrame_ae6ae88ee29bcaff936e7c7b2380f96b4}\label{structDecodeFrame_ae6ae88ee29bcaff936e7c7b2380f96b4}}
\index{DecodeFrame@{DecodeFrame}!DecodeFrame@{DecodeFrame}}
\index{DecodeFrame@{DecodeFrame}!DecodeFrame@{DecodeFrame}}
\doxysubsubsection{\texorpdfstring{DecodeFrame()}{DecodeFrame()}}
{\footnotesize\ttfamily Decode\+Frame\+::\+Decode\+Frame (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00083}{83}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{structDecodeFrame_a52e10215388db7df8b541b9d9909edcf}\label{structDecodeFrame_a52e10215388db7df8b541b9d9909edcf}}
\index{DecodeFrame@{DecodeFrame}!canId@{canId}}
\index{canId@{canId}!DecodeFrame@{DecodeFrame}}
\doxysubsubsection{\texorpdfstring{canId}{canId}}
{\footnotesize\ttfamily std\+::uint32\+\_\+t Decode\+Frame\+::can\+Id}
Normalized CAN ID.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00074}{74}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}.
\mbox{\Hypertarget{structDecodeFrame_a25819ef907a32391af5c9f7cae9cdb22}\label{structDecodeFrame_a25819ef907a32391af5c9f7cae9cdb22}}
\index{DecodeFrame@{DecodeFrame}!comment@{comment}}
\index{comment@{comment}!DecodeFrame@{DecodeFrame}}
\doxysubsubsection{\texorpdfstring{comment}{comment}}
{\footnotesize\ttfamily std\+::string Decode\+Frame\+::comment}
Frame comment.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00080}{80}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}.
\mbox{\Hypertarget{structDecodeFrame_a51111ac13988be372d5673d12cf3e060}\label{structDecodeFrame_a51111ac13988be372d5673d12cf3e060}}
\index{DecodeFrame@{DecodeFrame}!dlc@{dlc}}
\index{dlc@{dlc}!DecodeFrame@{DecodeFrame}}
\doxysubsubsection{\texorpdfstring{dlc}{dlc}}
{\footnotesize\ttfamily std\+::uint8\+\_\+t Decode\+Frame\+::dlc}
Payload length.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00076}{76}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}.
\mbox{\Hypertarget{structDecodeFrame_a2551102670c4a540fced4c71da0b369d}\label{structDecodeFrame_a2551102670c4a540fced4c71da0b369d}}
\index{DecodeFrame@{DecodeFrame}!hasPgn@{hasPgn}}
\index{hasPgn@{hasPgn}!DecodeFrame@{DecodeFrame}}
\doxysubsubsection{\texorpdfstring{hasPgn}{hasPgn}}
{\footnotesize\ttfamily bool Decode\+Frame\+::has\+Pgn}
true if PGN is valid.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00078}{78}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}.
\mbox{\Hypertarget{structDecodeFrame_a3ee2348d781f8f15aaf87e8dcf57ec41}\label{structDecodeFrame_a3ee2348d781f8f15aaf87e8dcf57ec41}}
\index{DecodeFrame@{DecodeFrame}!isExtended@{isExtended}}
\index{isExtended@{isExtended}!DecodeFrame@{DecodeFrame}}
\doxysubsubsection{\texorpdfstring{isExtended}{isExtended}}
{\footnotesize\ttfamily bool Decode\+Frame\+::is\+Extended}
true for extended frame.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00075}{75}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}.
\mbox{\Hypertarget{structDecodeFrame_aa0a7f8fd5bfde2148dfd0d838328f579}\label{structDecodeFrame_aa0a7f8fd5bfde2148dfd0d838328f579}}
\index{DecodeFrame@{DecodeFrame}!name@{name}}
\index{name@{name}!DecodeFrame@{DecodeFrame}}
\doxysubsubsection{\texorpdfstring{name}{name}}
{\footnotesize\ttfamily std\+::string Decode\+Frame\+::name}
Frame name.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00073}{73}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{main_8cpp_source_l00075}{Print\+Decoded\+Frame()}}.
\mbox{\Hypertarget{structDecodeFrame_a1d3c54055c0cbceb73adf551f7067f23}\label{structDecodeFrame_a1d3c54055c0cbceb73adf551f7067f23}}
\index{DecodeFrame@{DecodeFrame}!pgn@{pgn}}
\index{pgn@{pgn}!DecodeFrame@{DecodeFrame}}
\doxysubsubsection{\texorpdfstring{pgn}{pgn}}
{\footnotesize\ttfamily std\+::uint32\+\_\+t Decode\+Frame\+::pgn}
PGN if available.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00077}{77}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}.
\mbox{\Hypertarget{structDecodeFrame_a372afd9e74f1ae33f85cb4acfd3e2036}\label{structDecodeFrame_a372afd9e74f1ae33f85cb4acfd3e2036}}
\index{DecodeFrame@{DecodeFrame}!signals@{signals}}
\index{signals@{signals}!DecodeFrame@{DecodeFrame}}
\doxysubsubsection{\texorpdfstring{signals}{signals}}
{\footnotesize\ttfamily std\+::vector$<$\mbox{\hyperlink{structDecodeSignal}{Decode\+Signal}}$>$ Decode\+Frame\+::signals}
Signal definitions.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00081}{81}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{dbc__decoder_8cpp_source_l00031}{Dbc\+Decoder\+::\+Decode()}}.
\mbox{\Hypertarget{structDecodeFrame_ad78241dc40c793aabb8495b6989b81a9}\label{structDecodeFrame_ad78241dc40c793aabb8495b6989b81a9}}
\index{DecodeFrame@{DecodeFrame}!transmitter@{transmitter}}
\index{transmitter@{transmitter}!DecodeFrame@{DecodeFrame}}
\doxysubsubsection{\texorpdfstring{transmitter}{transmitter}}
{\footnotesize\ttfamily std\+::string Decode\+Frame\+::transmitter}
Transmitter ECU.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00079}{79}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}.
The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{decode__database_8h}{decode\+\_\+database.\+h}}\end{DoxyCompactItemize}

View File

@@ -0,0 +1,239 @@
\hypertarget{structDecodeSignal}{}\doxysection{Decode\+Signal Struct Reference}
\label{structDecodeSignal}\index{DecodeSignal@{DecodeSignal}}
Runtime-\/ready signal definition.
{\ttfamily \#include $<$decode\+\_\+database.\+h$>$}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{structDecodeSignal_a93fd97267e2614979440261628e493f5}{Decode\+Signal}} ()
\end{DoxyCompactItemize}
\doxysubsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item
std\+::string \mbox{\hyperlink{structDecodeSignal_a58cf5844f2272a23dcb9687d912e4780}{name}}
\item
std\+::uint32\+\_\+t \mbox{\hyperlink{structDecodeSignal_aaf5d7527ddf65b6355c2b4f3626df22d}{start\+Bit}}
\item
std\+::uint32\+\_\+t \mbox{\hyperlink{structDecodeSignal_acd4ef5ee30421d117b5756854302debb}{length}}
\item
\mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142b}{Byte\+Order}} \mbox{\hyperlink{structDecodeSignal_abdc4c4bb4a67a6d61d6ca81e8a52833d}{byte\+Order}}
\item
\mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1}{Value\+Type}} \mbox{\hyperlink{structDecodeSignal_a9d37638129263b8902ba5be59baf39a8}{value\+Type}}
\item
double \mbox{\hyperlink{structDecodeSignal_a428c39913a366a8476dd291061354391}{factor}}
\item
double \mbox{\hyperlink{structDecodeSignal_a92db637af4e224a0ae70173050dc3f74}{offset}}
\item
double \mbox{\hyperlink{structDecodeSignal_a0fb84e19a0ab3bd50b6f65c1075ebc25}{minimum}}
\item
double \mbox{\hyperlink{structDecodeSignal_a4a6ba87142a9badbf0ca830e9e709cb7}{maximum}}
\item
std\+::string \mbox{\hyperlink{structDecodeSignal_a38eed9ca7581423fd8bfbedcffc12092}{unit}}
\item
std\+::vector$<$ std\+::string $>$ \mbox{\hyperlink{structDecodeSignal_abdbae62a64d2df716bf60c6b67b30eaa}{receivers}}
\item
std\+::string \mbox{\hyperlink{structDecodeSignal_ae28c905d4a2bc86419c2a8361bfea473}{comment}}
\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Runtime-\/ready signal definition.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00039}{39}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{structDecodeSignal_a93fd97267e2614979440261628e493f5}\label{structDecodeSignal_a93fd97267e2614979440261628e493f5}}
\index{DecodeSignal@{DecodeSignal}!DecodeSignal@{DecodeSignal}}
\index{DecodeSignal@{DecodeSignal}!DecodeSignal@{DecodeSignal}}
\doxysubsubsection{\texorpdfstring{DecodeSignal()}{DecodeSignal()}}
{\footnotesize\ttfamily Decode\+Signal\+::\+Decode\+Signal (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00053}{53}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{structDecodeSignal_abdc4c4bb4a67a6d61d6ca81e8a52833d}\label{structDecodeSignal_abdc4c4bb4a67a6d61d6ca81e8a52833d}}
\index{DecodeSignal@{DecodeSignal}!byteOrder@{byteOrder}}
\index{byteOrder@{byteOrder}!DecodeSignal@{DecodeSignal}}
\doxysubsubsection{\texorpdfstring{byteOrder}{byteOrder}}
{\footnotesize\ttfamily \mbox{\hyperlink{decode__database_8h_aaeb92d42f5a6e27b8ba19f18d69d142b}{Byte\+Order}} Decode\+Signal\+::byte\+Order}
Intel or Motorola.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00043}{43}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{dbc__decoder_8cpp_source_l00070}{Dbc\+Decoder\+::\+Extract\+Unsigned()}}.
\mbox{\Hypertarget{structDecodeSignal_ae28c905d4a2bc86419c2a8361bfea473}\label{structDecodeSignal_ae28c905d4a2bc86419c2a8361bfea473}}
\index{DecodeSignal@{DecodeSignal}!comment@{comment}}
\index{comment@{comment}!DecodeSignal@{DecodeSignal}}
\doxysubsubsection{\texorpdfstring{comment}{comment}}
{\footnotesize\ttfamily std\+::string Decode\+Signal\+::comment}
Comment.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00051}{51}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}.
\mbox{\Hypertarget{structDecodeSignal_a428c39913a366a8476dd291061354391}\label{structDecodeSignal_a428c39913a366a8476dd291061354391}}
\index{DecodeSignal@{DecodeSignal}!factor@{factor}}
\index{factor@{factor}!DecodeSignal@{DecodeSignal}}
\doxysubsubsection{\texorpdfstring{factor}{factor}}
{\footnotesize\ttfamily double Decode\+Signal\+::factor}
Scaling factor.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00045}{45}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{dbc__decoder_8cpp_source_l00031}{Dbc\+Decoder\+::\+Decode()}}.
\mbox{\Hypertarget{structDecodeSignal_acd4ef5ee30421d117b5756854302debb}\label{structDecodeSignal_acd4ef5ee30421d117b5756854302debb}}
\index{DecodeSignal@{DecodeSignal}!length@{length}}
\index{length@{length}!DecodeSignal@{DecodeSignal}}
\doxysubsubsection{\texorpdfstring{length}{length}}
{\footnotesize\ttfamily std\+::uint32\+\_\+t Decode\+Signal\+::length}
Signal length in bits.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00042}{42}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, \mbox{\hyperlink{dbc__decoder_8cpp_source_l00031}{Dbc\+Decoder\+::\+Decode()}}, and \mbox{\hyperlink{dbc__decoder_8cpp_source_l00070}{Dbc\+Decoder\+::\+Extract\+Unsigned()}}.
\mbox{\Hypertarget{structDecodeSignal_a4a6ba87142a9badbf0ca830e9e709cb7}\label{structDecodeSignal_a4a6ba87142a9badbf0ca830e9e709cb7}}
\index{DecodeSignal@{DecodeSignal}!maximum@{maximum}}
\index{maximum@{maximum}!DecodeSignal@{DecodeSignal}}
\doxysubsubsection{\texorpdfstring{maximum}{maximum}}
{\footnotesize\ttfamily double Decode\+Signal\+::maximum}
Maximum physical value.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00048}{48}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}.
\mbox{\Hypertarget{structDecodeSignal_a0fb84e19a0ab3bd50b6f65c1075ebc25}\label{structDecodeSignal_a0fb84e19a0ab3bd50b6f65c1075ebc25}}
\index{DecodeSignal@{DecodeSignal}!minimum@{minimum}}
\index{minimum@{minimum}!DecodeSignal@{DecodeSignal}}
\doxysubsubsection{\texorpdfstring{minimum}{minimum}}
{\footnotesize\ttfamily double Decode\+Signal\+::minimum}
Minimum physical value.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00047}{47}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}.
\mbox{\Hypertarget{structDecodeSignal_a58cf5844f2272a23dcb9687d912e4780}\label{structDecodeSignal_a58cf5844f2272a23dcb9687d912e4780}}
\index{DecodeSignal@{DecodeSignal}!name@{name}}
\index{name@{name}!DecodeSignal@{DecodeSignal}}
\doxysubsubsection{\texorpdfstring{name}{name}}
{\footnotesize\ttfamily std\+::string Decode\+Signal\+::name}
Signal name.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00040}{40}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{main_8cpp_source_l00075}{Print\+Decoded\+Frame()}}.
\mbox{\Hypertarget{structDecodeSignal_a92db637af4e224a0ae70173050dc3f74}\label{structDecodeSignal_a92db637af4e224a0ae70173050dc3f74}}
\index{DecodeSignal@{DecodeSignal}!offset@{offset}}
\index{offset@{offset}!DecodeSignal@{DecodeSignal}}
\doxysubsubsection{\texorpdfstring{offset}{offset}}
{\footnotesize\ttfamily double Decode\+Signal\+::offset}
Physical offset.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00046}{46}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{dbc__decoder_8cpp_source_l00031}{Dbc\+Decoder\+::\+Decode()}}.
\mbox{\Hypertarget{structDecodeSignal_abdbae62a64d2df716bf60c6b67b30eaa}\label{structDecodeSignal_abdbae62a64d2df716bf60c6b67b30eaa}}
\index{DecodeSignal@{DecodeSignal}!receivers@{receivers}}
\index{receivers@{receivers}!DecodeSignal@{DecodeSignal}}
\doxysubsubsection{\texorpdfstring{receivers}{receivers}}
{\footnotesize\ttfamily std\+::vector$<$std\+::string$>$ Decode\+Signal\+::receivers}
Receivers.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00050}{50}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}.
\mbox{\Hypertarget{structDecodeSignal_aaf5d7527ddf65b6355c2b4f3626df22d}\label{structDecodeSignal_aaf5d7527ddf65b6355c2b4f3626df22d}}
\index{DecodeSignal@{DecodeSignal}!startBit@{startBit}}
\index{startBit@{startBit}!DecodeSignal@{DecodeSignal}}
\doxysubsubsection{\texorpdfstring{startBit}{startBit}}
{\footnotesize\ttfamily std\+::uint32\+\_\+t Decode\+Signal\+::start\+Bit}
DBC start bit.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00041}{41}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{dbc__decoder_8cpp_source_l00070}{Dbc\+Decoder\+::\+Extract\+Unsigned()}}.
\mbox{\Hypertarget{structDecodeSignal_a38eed9ca7581423fd8bfbedcffc12092}\label{structDecodeSignal_a38eed9ca7581423fd8bfbedcffc12092}}
\index{DecodeSignal@{DecodeSignal}!unit@{unit}}
\index{unit@{unit}!DecodeSignal@{DecodeSignal}}
\doxysubsubsection{\texorpdfstring{unit}{unit}}
{\footnotesize\ttfamily std\+::string Decode\+Signal\+::unit}
Physical unit.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00049}{49}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{main_8cpp_source_l00075}{Print\+Decoded\+Frame()}}.
\mbox{\Hypertarget{structDecodeSignal_a9d37638129263b8902ba5be59baf39a8}\label{structDecodeSignal_a9d37638129263b8902ba5be59baf39a8}}
\index{DecodeSignal@{DecodeSignal}!valueType@{valueType}}
\index{valueType@{valueType}!DecodeSignal@{DecodeSignal}}
\doxysubsubsection{\texorpdfstring{valueType}{valueType}}
{\footnotesize\ttfamily \mbox{\hyperlink{decode__database_8h_ad9971b6ef33e02ba2c75d19c1d2518a1}{Value\+Type}} Decode\+Signal\+::value\+Type}
Signed or unsigned.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00044}{44}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{dbc__decoder_8cpp_source_l00031}{Dbc\+Decoder\+::\+Decode()}}.
The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{decode__database_8h}{decode\+\_\+database.\+h}}\end{DoxyCompactItemize}

View File

@@ -0,0 +1,95 @@
\hypertarget{structDecodedFrameValue}{}\doxysection{Decoded\+Frame\+Value Struct Reference}
\label{structDecodedFrameValue}\index{DecodedFrameValue@{DecodedFrameValue}}
Fully decoded frame.
{\ttfamily \#include $<$dbc\+\_\+decoder.\+h$>$}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{structDecodedFrameValue_a19f754bb84e67e6ae71ea93b9ae6382b}{Decoded\+Frame\+Value}} ()
\end{DoxyCompactItemize}
\doxysubsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item
const \mbox{\hyperlink{structDecodeFrame}{Decode\+Frame}} $\ast$ \mbox{\hyperlink{structDecodedFrameValue_a60dda1cc352d2c8087f0bdbc81dd266c}{definition}}
\item
std\+::vector$<$ \mbox{\hyperlink{structDecodedSignalValue}{Decoded\+Signal\+Value}} $>$ \mbox{\hyperlink{structDecodedFrameValue_a8440e0e5d7953102095b029f522022d3}{signals}}
\item
bool \mbox{\hyperlink{structDecodedFrameValue_a4f51c31110dba1f73a763c596372beb0}{valid}}
\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Fully decoded frame.
Definition at line \mbox{\hyperlink{dbc__decoder_8h_source_l00055}{55}} of file \mbox{\hyperlink{dbc__decoder_8h_source}{dbc\+\_\+decoder.\+h}}.
\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{structDecodedFrameValue_a19f754bb84e67e6ae71ea93b9ae6382b}\label{structDecodedFrameValue_a19f754bb84e67e6ae71ea93b9ae6382b}}
\index{DecodedFrameValue@{DecodedFrameValue}!DecodedFrameValue@{DecodedFrameValue}}
\index{DecodedFrameValue@{DecodedFrameValue}!DecodedFrameValue@{DecodedFrameValue}}
\doxysubsubsection{\texorpdfstring{DecodedFrameValue()}{DecodedFrameValue()}}
{\footnotesize\ttfamily Decoded\+Frame\+Value\+::\+Decoded\+Frame\+Value (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Definition at line \mbox{\hyperlink{dbc__decoder_8h_source_l00060}{60}} of file \mbox{\hyperlink{dbc__decoder_8h_source}{dbc\+\_\+decoder.\+h}}.
\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{structDecodedFrameValue_a60dda1cc352d2c8087f0bdbc81dd266c}\label{structDecodedFrameValue_a60dda1cc352d2c8087f0bdbc81dd266c}}
\index{DecodedFrameValue@{DecodedFrameValue}!definition@{definition}}
\index{definition@{definition}!DecodedFrameValue@{DecodedFrameValue}}
\doxysubsubsection{\texorpdfstring{definition}{definition}}
{\footnotesize\ttfamily const \mbox{\hyperlink{structDecodeFrame}{Decode\+Frame}}$\ast$ Decoded\+Frame\+Value\+::definition}
Frame definition.
Definition at line \mbox{\hyperlink{dbc__decoder_8h_source_l00056}{56}} of file \mbox{\hyperlink{dbc__decoder_8h_source}{dbc\+\_\+decoder.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decoder_8cpp_source_l00031}{Dbc\+Decoder\+::\+Decode()}}, and \mbox{\hyperlink{main_8cpp_source_l00075}{Print\+Decoded\+Frame()}}.
\mbox{\Hypertarget{structDecodedFrameValue_a8440e0e5d7953102095b029f522022d3}\label{structDecodedFrameValue_a8440e0e5d7953102095b029f522022d3}}
\index{DecodedFrameValue@{DecodedFrameValue}!signals@{signals}}
\index{signals@{signals}!DecodedFrameValue@{DecodedFrameValue}}
\doxysubsubsection{\texorpdfstring{signals}{signals}}
{\footnotesize\ttfamily std\+::vector$<$\mbox{\hyperlink{structDecodedSignalValue}{Decoded\+Signal\+Value}}$>$ Decoded\+Frame\+Value\+::signals}
Decoded signal values.
Definition at line \mbox{\hyperlink{dbc__decoder_8h_source_l00057}{57}} of file \mbox{\hyperlink{dbc__decoder_8h_source}{dbc\+\_\+decoder.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decoder_8cpp_source_l00031}{Dbc\+Decoder\+::\+Decode()}}, and \mbox{\hyperlink{main_8cpp_source_l00075}{Print\+Decoded\+Frame()}}.
\mbox{\Hypertarget{structDecodedFrameValue_a4f51c31110dba1f73a763c596372beb0}\label{structDecodedFrameValue_a4f51c31110dba1f73a763c596372beb0}}
\index{DecodedFrameValue@{DecodedFrameValue}!valid@{valid}}
\index{valid@{valid}!DecodedFrameValue@{DecodedFrameValue}}
\doxysubsubsection{\texorpdfstring{valid}{valid}}
{\footnotesize\ttfamily bool Decoded\+Frame\+Value\+::valid}
true if frame was matched.
Definition at line \mbox{\hyperlink{dbc__decoder_8h_source_l00058}{58}} of file \mbox{\hyperlink{dbc__decoder_8h_source}{dbc\+\_\+decoder.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decoder_8cpp_source_l00031}{Dbc\+Decoder\+::\+Decode()}}, and \mbox{\hyperlink{main_8cpp_source_l00075}{Print\+Decoded\+Frame()}}.
The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{dbc__decoder_8h}{dbc\+\_\+decoder.\+h}}\end{DoxyCompactItemize}

View File

@@ -0,0 +1,111 @@
\hypertarget{structDecodedSignalValue}{}\doxysection{Decoded\+Signal\+Value Struct Reference}
\label{structDecodedSignalValue}\index{DecodedSignalValue@{DecodedSignalValue}}
One decoded signal value.
{\ttfamily \#include $<$dbc\+\_\+decoder.\+h$>$}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{structDecodedSignalValue_a1481b122a7ce5a618012b1133c6adedf}{Decoded\+Signal\+Value}} ()
\end{DoxyCompactItemize}
\doxysubsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item
const \mbox{\hyperlink{structDecodeSignal}{Decode\+Signal}} $\ast$ \mbox{\hyperlink{structDecodedSignalValue_acadc3b3bb21dd6b0412d342c7e6b20d7}{definition}}
\item
std\+::int64\+\_\+t \mbox{\hyperlink{structDecodedSignalValue_a5138b825940e34689f7b3891627ee9ec}{raw\+Value}}
\item
double \mbox{\hyperlink{structDecodedSignalValue_a6847d05b3cb00d5e0f6c611968f57978}{physical\+Value}}
\item
bool \mbox{\hyperlink{structDecodedSignalValue_aac0ed361af545cde48d0e6f41a859686}{valid}}
\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
One decoded signal value.
Definition at line \mbox{\hyperlink{dbc__decoder_8h_source_l00038}{38}} of file \mbox{\hyperlink{dbc__decoder_8h_source}{dbc\+\_\+decoder.\+h}}.
\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{structDecodedSignalValue_a1481b122a7ce5a618012b1133c6adedf}\label{structDecodedSignalValue_a1481b122a7ce5a618012b1133c6adedf}}
\index{DecodedSignalValue@{DecodedSignalValue}!DecodedSignalValue@{DecodedSignalValue}}
\index{DecodedSignalValue@{DecodedSignalValue}!DecodedSignalValue@{DecodedSignalValue}}
\doxysubsubsection{\texorpdfstring{DecodedSignalValue()}{DecodedSignalValue()}}
{\footnotesize\ttfamily Decoded\+Signal\+Value\+::\+Decoded\+Signal\+Value (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Definition at line \mbox{\hyperlink{dbc__decoder_8h_source_l00044}{44}} of file \mbox{\hyperlink{dbc__decoder_8h_source}{dbc\+\_\+decoder.\+h}}.
\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{structDecodedSignalValue_acadc3b3bb21dd6b0412d342c7e6b20d7}\label{structDecodedSignalValue_acadc3b3bb21dd6b0412d342c7e6b20d7}}
\index{DecodedSignalValue@{DecodedSignalValue}!definition@{definition}}
\index{definition@{definition}!DecodedSignalValue@{DecodedSignalValue}}
\doxysubsubsection{\texorpdfstring{definition}{definition}}
{\footnotesize\ttfamily const \mbox{\hyperlink{structDecodeSignal}{Decode\+Signal}}$\ast$ Decoded\+Signal\+Value\+::definition}
Signal definition.
Definition at line \mbox{\hyperlink{dbc__decoder_8h_source_l00039}{39}} of file \mbox{\hyperlink{dbc__decoder_8h_source}{dbc\+\_\+decoder.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decoder_8cpp_source_l00031}{Dbc\+Decoder\+::\+Decode()}}, and \mbox{\hyperlink{main_8cpp_source_l00075}{Print\+Decoded\+Frame()}}.
\mbox{\Hypertarget{structDecodedSignalValue_a6847d05b3cb00d5e0f6c611968f57978}\label{structDecodedSignalValue_a6847d05b3cb00d5e0f6c611968f57978}}
\index{DecodedSignalValue@{DecodedSignalValue}!physicalValue@{physicalValue}}
\index{physicalValue@{physicalValue}!DecodedSignalValue@{DecodedSignalValue}}
\doxysubsubsection{\texorpdfstring{physicalValue}{physicalValue}}
{\footnotesize\ttfamily double Decoded\+Signal\+Value\+::physical\+Value}
Converted physical value.
Definition at line \mbox{\hyperlink{dbc__decoder_8h_source_l00041}{41}} of file \mbox{\hyperlink{dbc__decoder_8h_source}{dbc\+\_\+decoder.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decoder_8cpp_source_l00031}{Dbc\+Decoder\+::\+Decode()}}, and \mbox{\hyperlink{main_8cpp_source_l00075}{Print\+Decoded\+Frame()}}.
\mbox{\Hypertarget{structDecodedSignalValue_a5138b825940e34689f7b3891627ee9ec}\label{structDecodedSignalValue_a5138b825940e34689f7b3891627ee9ec}}
\index{DecodedSignalValue@{DecodedSignalValue}!rawValue@{rawValue}}
\index{rawValue@{rawValue}!DecodedSignalValue@{DecodedSignalValue}}
\doxysubsubsection{\texorpdfstring{rawValue}{rawValue}}
{\footnotesize\ttfamily std\+::int64\+\_\+t Decoded\+Signal\+Value\+::raw\+Value}
Extracted raw integer value.
Definition at line \mbox{\hyperlink{dbc__decoder_8h_source_l00040}{40}} of file \mbox{\hyperlink{dbc__decoder_8h_source}{dbc\+\_\+decoder.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decoder_8cpp_source_l00031}{Dbc\+Decoder\+::\+Decode()}}, and \mbox{\hyperlink{main_8cpp_source_l00075}{Print\+Decoded\+Frame()}}.
\mbox{\Hypertarget{structDecodedSignalValue_aac0ed361af545cde48d0e6f41a859686}\label{structDecodedSignalValue_aac0ed361af545cde48d0e6f41a859686}}
\index{DecodedSignalValue@{DecodedSignalValue}!valid@{valid}}
\index{valid@{valid}!DecodedSignalValue@{DecodedSignalValue}}
\doxysubsubsection{\texorpdfstring{valid}{valid}}
{\footnotesize\ttfamily bool Decoded\+Signal\+Value\+::valid}
true if decoding succeeded.
Definition at line \mbox{\hyperlink{dbc__decoder_8h_source_l00042}{42}} of file \mbox{\hyperlink{dbc__decoder_8h_source}{dbc\+\_\+decoder.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decoder_8cpp_source_l00031}{Dbc\+Decoder\+::\+Decode()}}, and \mbox{\hyperlink{main_8cpp_source_l00075}{Print\+Decoded\+Frame()}}.
The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{dbc__decoder_8h}{dbc\+\_\+decoder.\+h}}\end{DoxyCompactItemize}

View File

@@ -0,0 +1,191 @@
\hypertarget{structFrameInfo}{}\doxysection{Frame\+Info Struct Reference}
\label{structFrameInfo}\index{FrameInfo@{FrameInfo}}
Describes one CAN frame from a DBC file.
{\ttfamily \#include $<$frame\+\_\+info.\+h$>$}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{structFrameInfo_a7f2d192b7969f7b60479a48e1f7eba61}{Frame\+Info}} ()
\end{DoxyCompactItemize}
\doxysubsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item
std\+::string \mbox{\hyperlink{structFrameInfo_abb53a7f93ed7abc0ea1ae4a8ccafcdcb}{name}}
\item
std\+::uint32\+\_\+t \mbox{\hyperlink{structFrameInfo_af470b0742c05bfbffc31c51a68f5c05e}{can\+Id}}
\item
bool \mbox{\hyperlink{structFrameInfo_a34b726afaad2ac5c697fdb2ac070cdaf}{is\+Extended}}
\item
std\+::uint32\+\_\+t \mbox{\hyperlink{structFrameInfo_aee518b33f1000bf0b7f6e4a87474c943}{pgn}}
\item
bool \mbox{\hyperlink{structFrameInfo_a4737a5420213ad4304724e39f3a4e55d}{has\+Pgn}}
\item
std\+::uint8\+\_\+t \mbox{\hyperlink{structFrameInfo_aa2b198ea0f55e560c123d35e7b3ecab9}{dlc}}
\item
std\+::string \mbox{\hyperlink{structFrameInfo_a92749ec3798d4211a505860fb389a9e8}{transmitter}}
\item
std\+::string \mbox{\hyperlink{structFrameInfo_ace75121294f9d89b762080ab5643293c}{comment}}
\item
std\+::vector$<$ \mbox{\hyperlink{structSignalInfo}{Signal\+Info}} $>$ \mbox{\hyperlink{structFrameInfo_a942937027f1af06536f98cc23b2bf6ce}{signals}}
\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Describes one CAN frame from a DBC file.
Definition at line \mbox{\hyperlink{frame__info_8h_source_l00024}{24}} of file \mbox{\hyperlink{frame__info_8h_source}{frame\+\_\+info.\+h}}.
\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{structFrameInfo_a7f2d192b7969f7b60479a48e1f7eba61}\label{structFrameInfo_a7f2d192b7969f7b60479a48e1f7eba61}}
\index{FrameInfo@{FrameInfo}!FrameInfo@{FrameInfo}}
\index{FrameInfo@{FrameInfo}!FrameInfo@{FrameInfo}}
\doxysubsubsection{\texorpdfstring{FrameInfo()}{FrameInfo()}}
{\footnotesize\ttfamily Frame\+Info\+::\+Frame\+Info (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Definition at line \mbox{\hyperlink{frame__info_8h_source_l00035}{35}} of file \mbox{\hyperlink{frame__info_8h_source}{frame\+\_\+info.\+h}}.
\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{structFrameInfo_af470b0742c05bfbffc31c51a68f5c05e}\label{structFrameInfo_af470b0742c05bfbffc31c51a68f5c05e}}
\index{FrameInfo@{FrameInfo}!canId@{canId}}
\index{canId@{canId}!FrameInfo@{FrameInfo}}
\doxysubsubsection{\texorpdfstring{canId}{canId}}
{\footnotesize\ttfamily std\+::uint32\+\_\+t Frame\+Info\+::can\+Id}
Normalized CAN identifier.
Definition at line \mbox{\hyperlink{frame__info_8h_source_l00026}{26}} of file \mbox{\hyperlink{frame__info_8h_source}{frame\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00142}{Dbc\+Parser\+::\+Parse\+Frame\+Line()}}, and \mbox{\hyperlink{main_8cpp_source_l00023}{Print\+Tree()}}.
\mbox{\Hypertarget{structFrameInfo_ace75121294f9d89b762080ab5643293c}\label{structFrameInfo_ace75121294f9d89b762080ab5643293c}}
\index{FrameInfo@{FrameInfo}!comment@{comment}}
\index{comment@{comment}!FrameInfo@{FrameInfo}}
\doxysubsubsection{\texorpdfstring{comment}{comment}}
{\footnotesize\ttfamily std\+::string Frame\+Info\+::comment}
Optional frame comment.
Definition at line \mbox{\hyperlink{frame__info_8h_source_l00032}{32}} of file \mbox{\hyperlink{frame__info_8h_source}{frame\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{dbc__parser_8cpp_source_l00274}{Dbc\+Parser\+::\+Parse\+Comment\+Line()}}.
\mbox{\Hypertarget{structFrameInfo_aa2b198ea0f55e560c123d35e7b3ecab9}\label{structFrameInfo_aa2b198ea0f55e560c123d35e7b3ecab9}}
\index{FrameInfo@{FrameInfo}!dlc@{dlc}}
\index{dlc@{dlc}!FrameInfo@{FrameInfo}}
\doxysubsubsection{\texorpdfstring{dlc}{dlc}}
{\footnotesize\ttfamily std\+::uint8\+\_\+t Frame\+Info\+::dlc}
Frame payload length.
Definition at line \mbox{\hyperlink{frame__info_8h_source_l00030}{30}} of file \mbox{\hyperlink{frame__info_8h_source}{frame\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00142}{Dbc\+Parser\+::\+Parse\+Frame\+Line()}}, and \mbox{\hyperlink{main_8cpp_source_l00023}{Print\+Tree()}}.
\mbox{\Hypertarget{structFrameInfo_a4737a5420213ad4304724e39f3a4e55d}\label{structFrameInfo_a4737a5420213ad4304724e39f3a4e55d}}
\index{FrameInfo@{FrameInfo}!hasPgn@{hasPgn}}
\index{hasPgn@{hasPgn}!FrameInfo@{FrameInfo}}
\doxysubsubsection{\texorpdfstring{hasPgn}{hasPgn}}
{\footnotesize\ttfamily bool Frame\+Info\+::has\+Pgn}
true if PGN was derived.
Definition at line \mbox{\hyperlink{frame__info_8h_source_l00029}{29}} of file \mbox{\hyperlink{frame__info_8h_source}{frame\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00142}{Dbc\+Parser\+::\+Parse\+Frame\+Line()}}, and \mbox{\hyperlink{main_8cpp_source_l00023}{Print\+Tree()}}.
\mbox{\Hypertarget{structFrameInfo_a34b726afaad2ac5c697fdb2ac070cdaf}\label{structFrameInfo_a34b726afaad2ac5c697fdb2ac070cdaf}}
\index{FrameInfo@{FrameInfo}!isExtended@{isExtended}}
\index{isExtended@{isExtended}!FrameInfo@{FrameInfo}}
\doxysubsubsection{\texorpdfstring{isExtended}{isExtended}}
{\footnotesize\ttfamily bool Frame\+Info\+::is\+Extended}
true for extended frame.
Definition at line \mbox{\hyperlink{frame__info_8h_source_l00027}{27}} of file \mbox{\hyperlink{frame__info_8h_source}{frame\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00142}{Dbc\+Parser\+::\+Parse\+Frame\+Line()}}, and \mbox{\hyperlink{main_8cpp_source_l00023}{Print\+Tree()}}.
\mbox{\Hypertarget{structFrameInfo_abb53a7f93ed7abc0ea1ae4a8ccafcdcb}\label{structFrameInfo_abb53a7f93ed7abc0ea1ae4a8ccafcdcb}}
\index{FrameInfo@{FrameInfo}!name@{name}}
\index{name@{name}!FrameInfo@{FrameInfo}}
\doxysubsubsection{\texorpdfstring{name}{name}}
{\footnotesize\ttfamily std\+::string Frame\+Info\+::name}
Frame name.
Definition at line \mbox{\hyperlink{frame__info_8h_source_l00025}{25}} of file \mbox{\hyperlink{frame__info_8h_source}{frame\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{dbc__parser_8cpp_source_l00142}{Dbc\+Parser\+::\+Parse\+Frame\+Line()}}.
\mbox{\Hypertarget{structFrameInfo_aee518b33f1000bf0b7f6e4a87474c943}\label{structFrameInfo_aee518b33f1000bf0b7f6e4a87474c943}}
\index{FrameInfo@{FrameInfo}!pgn@{pgn}}
\index{pgn@{pgn}!FrameInfo@{FrameInfo}}
\doxysubsubsection{\texorpdfstring{pgn}{pgn}}
{\footnotesize\ttfamily std\+::uint32\+\_\+t Frame\+Info\+::pgn}
J1939 PGN if applicable.
Definition at line \mbox{\hyperlink{frame__info_8h_source_l00028}{28}} of file \mbox{\hyperlink{frame__info_8h_source}{frame\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00142}{Dbc\+Parser\+::\+Parse\+Frame\+Line()}}, and \mbox{\hyperlink{main_8cpp_source_l00023}{Print\+Tree()}}.
\mbox{\Hypertarget{structFrameInfo_a942937027f1af06536f98cc23b2bf6ce}\label{structFrameInfo_a942937027f1af06536f98cc23b2bf6ce}}
\index{FrameInfo@{FrameInfo}!signals@{signals}}
\index{signals@{signals}!FrameInfo@{FrameInfo}}
\doxysubsubsection{\texorpdfstring{signals}{signals}}
{\footnotesize\ttfamily std\+::vector$<$\mbox{\hyperlink{structSignalInfo}{Signal\+Info}}$>$ Frame\+Info\+::signals}
Signals contained in the frame.
Definition at line \mbox{\hyperlink{frame__info_8h_source_l00033}{33}} of file \mbox{\hyperlink{frame__info_8h_source}{frame\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__tree__builder_8cpp_source_l00014}{Dbc\+Tree\+Builder\+::\+Build()}}, \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00349}{Dbc\+Parser\+::\+Find\+Signal\+By\+Name()}}, and \mbox{\hyperlink{dbc__parser_8cpp_source_l00040}{Dbc\+Parser\+::\+Parse\+File()}}.
\mbox{\Hypertarget{structFrameInfo_a92749ec3798d4211a505860fb389a9e8}\label{structFrameInfo_a92749ec3798d4211a505860fb389a9e8}}
\index{FrameInfo@{FrameInfo}!transmitter@{transmitter}}
\index{transmitter@{transmitter}!FrameInfo@{FrameInfo}}
\doxysubsubsection{\texorpdfstring{transmitter}{transmitter}}
{\footnotesize\ttfamily std\+::string Frame\+Info\+::transmitter}
Transmitter ECU name.
Definition at line \mbox{\hyperlink{frame__info_8h_source_l00031}{31}} of file \mbox{\hyperlink{frame__info_8h_source}{frame\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{dbc__parser_8cpp_source_l00142}{Dbc\+Parser\+::\+Parse\+Frame\+Line()}}.
The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{frame__info_8h}{frame\+\_\+info.\+h}}\end{DoxyCompactItemize}

View File

@@ -0,0 +1,110 @@
\hypertarget{structFrameKey}{}\doxysection{Frame\+Key Struct Reference}
\label{structFrameKey}\index{FrameKey@{FrameKey}}
Key for fast frame lookup.
{\ttfamily \#include $<$decode\+\_\+database.\+h$>$}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{structFrameKey_a0e9aad56b251cdf802d45a9c19050b14}{Frame\+Key}} ()
\item
\mbox{\hyperlink{structFrameKey_a33bde405c7ea53000d54b3dd6e058670}{Frame\+Key}} (std\+::uint32\+\_\+t id, bool extended)
\item
bool \mbox{\hyperlink{structFrameKey_aaaec9f914e127787247fcda5e183b01f}{operator==}} (const \mbox{\hyperlink{structFrameKey}{Frame\+Key}} \&other) const
\end{DoxyCompactItemize}
\doxysubsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item
std\+::uint32\+\_\+t \mbox{\hyperlink{structFrameKey_a022917652b4d3c2f2dfcc5a13ab7caa4}{can\+Id}}
\item
bool \mbox{\hyperlink{structFrameKey_aa3179b709d02ef70cf0e736f040a2145}{is\+Extended}}
\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Key for fast frame lookup.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00099}{99}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{structFrameKey_a0e9aad56b251cdf802d45a9c19050b14}\label{structFrameKey_a0e9aad56b251cdf802d45a9c19050b14}}
\index{FrameKey@{FrameKey}!FrameKey@{FrameKey}}
\index{FrameKey@{FrameKey}!FrameKey@{FrameKey}}
\doxysubsubsection{\texorpdfstring{FrameKey()}{FrameKey()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily Frame\+Key\+::\+Frame\+Key (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00103}{103}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
\mbox{\Hypertarget{structFrameKey_a33bde405c7ea53000d54b3dd6e058670}\label{structFrameKey_a33bde405c7ea53000d54b3dd6e058670}}
\index{FrameKey@{FrameKey}!FrameKey@{FrameKey}}
\index{FrameKey@{FrameKey}!FrameKey@{FrameKey}}
\doxysubsubsection{\texorpdfstring{FrameKey()}{FrameKey()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily Frame\+Key\+::\+Frame\+Key (\begin{DoxyParamCaption}\item[{std\+::uint32\+\_\+t}]{id, }\item[{bool}]{extended }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00108}{108}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{structFrameKey_aaaec9f914e127787247fcda5e183b01f}\label{structFrameKey_aaaec9f914e127787247fcda5e183b01f}}
\index{FrameKey@{FrameKey}!operator==@{operator==}}
\index{operator==@{operator==}!FrameKey@{FrameKey}}
\doxysubsubsection{\texorpdfstring{operator==()}{operator==()}}
{\footnotesize\ttfamily bool Frame\+Key\+::operator== (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structFrameKey}{Frame\+Key}} \&}]{other }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00113}{113}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
References \mbox{\hyperlink{decode__database_8h_source_l00100}{can\+Id}}, and \mbox{\hyperlink{decode__database_8h_source_l00101}{is\+Extended}}.
\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{structFrameKey_a022917652b4d3c2f2dfcc5a13ab7caa4}\label{structFrameKey_a022917652b4d3c2f2dfcc5a13ab7caa4}}
\index{FrameKey@{FrameKey}!canId@{canId}}
\index{canId@{canId}!FrameKey@{FrameKey}}
\doxysubsubsection{\texorpdfstring{canId}{canId}}
{\footnotesize\ttfamily std\+::uint32\+\_\+t Frame\+Key\+::can\+Id}
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00100}{100}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{decode__database_8h_source_l00122}{Frame\+Key\+Hasher\+::operator()()}}, and \mbox{\hyperlink{decode__database_8h_source_l00113}{operator==()}}.
\mbox{\Hypertarget{structFrameKey_aa3179b709d02ef70cf0e736f040a2145}\label{structFrameKey_aa3179b709d02ef70cf0e736f040a2145}}
\index{FrameKey@{FrameKey}!isExtended@{isExtended}}
\index{isExtended@{isExtended}!FrameKey@{FrameKey}}
\doxysubsubsection{\texorpdfstring{isExtended}{isExtended}}
{\footnotesize\ttfamily bool Frame\+Key\+::is\+Extended}
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00101}{101}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
Referenced by \mbox{\hyperlink{decode__database_8h_source_l00122}{Frame\+Key\+Hasher\+::operator()()}}, and \mbox{\hyperlink{decode__database_8h_source_l00113}{operator==()}}.
The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{decode__database_8h}{decode\+\_\+database.\+h}}\end{DoxyCompactItemize}

View File

@@ -0,0 +1,45 @@
\hypertarget{structFrameKeyHasher}{}\doxysection{Frame\+Key\+Hasher Struct Reference}
\label{structFrameKeyHasher}\index{FrameKeyHasher@{FrameKeyHasher}}
Hasher for frame key.
{\ttfamily \#include $<$decode\+\_\+database.\+h$>$}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
std\+::size\+\_\+t \mbox{\hyperlink{structFrameKeyHasher_a1612ce56b513790e3ed4c06ec7d28b9f}{operator()}} (const \mbox{\hyperlink{structFrameKey}{Frame\+Key}} \&key) const
\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Hasher for frame key.
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00121}{121}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{structFrameKeyHasher_a1612ce56b513790e3ed4c06ec7d28b9f}\label{structFrameKeyHasher_a1612ce56b513790e3ed4c06ec7d28b9f}}
\index{FrameKeyHasher@{FrameKeyHasher}!operator()@{operator()}}
\index{operator()@{operator()}!FrameKeyHasher@{FrameKeyHasher}}
\doxysubsubsection{\texorpdfstring{operator()()}{operator()()}}
{\footnotesize\ttfamily std\+::size\+\_\+t Frame\+Key\+Hasher\+::operator() (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structFrameKey}{Frame\+Key}} \&}]{key }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}
Definition at line \mbox{\hyperlink{decode__database_8h_source_l00122}{122}} of file \mbox{\hyperlink{decode__database_8h_source}{decode\+\_\+database.\+h}}.
References \mbox{\hyperlink{decode__database_8h_source_l00100}{Frame\+Key\+::can\+Id}}, and \mbox{\hyperlink{decode__database_8h_source_l00101}{Frame\+Key\+::is\+Extended}}.
The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{decode__database_8h}{decode\+\_\+database.\+h}}\end{DoxyCompactItemize}

View File

@@ -0,0 +1,95 @@
\hypertarget{structRawCanFrame}{}\doxysection{Raw\+Can\+Frame Struct Reference}
\label{structRawCanFrame}\index{RawCanFrame@{RawCanFrame}}
Raw CAN frame used for runtime or trace decoding.
{\ttfamily \#include $<$dbc\+\_\+decoder.\+h$>$}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{structRawCanFrame_a17d18b39bed45e69f4e17ae2838f07f7}{Raw\+Can\+Frame}} ()
\end{DoxyCompactItemize}
\doxysubsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item
std\+::uint32\+\_\+t \mbox{\hyperlink{structRawCanFrame_a2d0e7fa0e3d5c20bbed55ed8f7888ff4}{can\+Id}}
\item
bool \mbox{\hyperlink{structRawCanFrame_a462193d275adc1dba8bd18ffa0e36bb7}{is\+Extended}}
\item
std\+::vector$<$ std\+::uint8\+\_\+t $>$ \mbox{\hyperlink{structRawCanFrame_a0acb487612104c99c9907344c035df83}{data}}
\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Raw CAN frame used for runtime or trace decoding.
Definition at line \mbox{\hyperlink{dbc__decoder_8h_source_l00023}{23}} of file \mbox{\hyperlink{dbc__decoder_8h_source}{dbc\+\_\+decoder.\+h}}.
\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{structRawCanFrame_a17d18b39bed45e69f4e17ae2838f07f7}\label{structRawCanFrame_a17d18b39bed45e69f4e17ae2838f07f7}}
\index{RawCanFrame@{RawCanFrame}!RawCanFrame@{RawCanFrame}}
\index{RawCanFrame@{RawCanFrame}!RawCanFrame@{RawCanFrame}}
\doxysubsubsection{\texorpdfstring{RawCanFrame()}{RawCanFrame()}}
{\footnotesize\ttfamily Raw\+Can\+Frame\+::\+Raw\+Can\+Frame (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Definition at line \mbox{\hyperlink{dbc__decoder_8h_source_l00028}{28}} of file \mbox{\hyperlink{dbc__decoder_8h_source}{dbc\+\_\+decoder.\+h}}.
\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{structRawCanFrame_a2d0e7fa0e3d5c20bbed55ed8f7888ff4}\label{structRawCanFrame_a2d0e7fa0e3d5c20bbed55ed8f7888ff4}}
\index{RawCanFrame@{RawCanFrame}!canId@{canId}}
\index{canId@{canId}!RawCanFrame@{RawCanFrame}}
\doxysubsubsection{\texorpdfstring{canId}{canId}}
{\footnotesize\ttfamily std\+::uint32\+\_\+t Raw\+Can\+Frame\+::can\+Id}
Normalized CAN ID.
Definition at line \mbox{\hyperlink{dbc__decoder_8h_source_l00024}{24}} of file \mbox{\hyperlink{dbc__decoder_8h_source}{dbc\+\_\+decoder.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decoder_8cpp_source_l00031}{Dbc\+Decoder\+::\+Decode()}}, and \mbox{\hyperlink{main_8cpp_source_l00097}{main()}}.
\mbox{\Hypertarget{structRawCanFrame_a0acb487612104c99c9907344c035df83}\label{structRawCanFrame_a0acb487612104c99c9907344c035df83}}
\index{RawCanFrame@{RawCanFrame}!data@{data}}
\index{data@{data}!RawCanFrame@{RawCanFrame}}
\doxysubsubsection{\texorpdfstring{data}{data}}
{\footnotesize\ttfamily std\+::vector$<$std\+::uint8\+\_\+t$>$ Raw\+Can\+Frame\+::data}
Payload bytes.
Definition at line \mbox{\hyperlink{dbc__decoder_8h_source_l00026}{26}} of file \mbox{\hyperlink{dbc__decoder_8h_source}{dbc\+\_\+decoder.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decoder_8cpp_source_l00031}{Dbc\+Decoder\+::\+Decode()}}, and \mbox{\hyperlink{main_8cpp_source_l00097}{main()}}.
\mbox{\Hypertarget{structRawCanFrame_a462193d275adc1dba8bd18ffa0e36bb7}\label{structRawCanFrame_a462193d275adc1dba8bd18ffa0e36bb7}}
\index{RawCanFrame@{RawCanFrame}!isExtended@{isExtended}}
\index{isExtended@{isExtended}!RawCanFrame@{RawCanFrame}}
\doxysubsubsection{\texorpdfstring{isExtended}{isExtended}}
{\footnotesize\ttfamily bool Raw\+Can\+Frame\+::is\+Extended}
true for extended frame.
Definition at line \mbox{\hyperlink{dbc__decoder_8h_source_l00025}{25}} of file \mbox{\hyperlink{dbc__decoder_8h_source}{dbc\+\_\+decoder.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decoder_8cpp_source_l00031}{Dbc\+Decoder\+::\+Decode()}}, and \mbox{\hyperlink{main_8cpp_source_l00097}{main()}}.
The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{dbc__decoder_8h}{dbc\+\_\+decoder.\+h}}\end{DoxyCompactItemize}

View File

@@ -0,0 +1,239 @@
\hypertarget{structSignalInfo}{}\doxysection{Signal\+Info Struct Reference}
\label{structSignalInfo}\index{SignalInfo@{SignalInfo}}
Describes one signal inside a DBC frame.
{\ttfamily \#include $<$signal\+\_\+info.\+h$>$}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{structSignalInfo_aa2d2cd238118015258e271dce92a971e}{Signal\+Info}} ()
\end{DoxyCompactItemize}
\doxysubsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item
std\+::string \mbox{\hyperlink{structSignalInfo_a379e422a00cad56f896cacf60455b088}{name}}
\item
std\+::uint32\+\_\+t \mbox{\hyperlink{structSignalInfo_ace290724f9801521609aedaa946d61f1}{start\+Bit}}
\item
std\+::uint32\+\_\+t \mbox{\hyperlink{structSignalInfo_a1008b5201f71848177217bd52fb84baa}{length}}
\item
bool \mbox{\hyperlink{structSignalInfo_af363b1563fb4c7cc8973f9a80c06846c}{is\+Little\+Endian}}
\item
bool \mbox{\hyperlink{structSignalInfo_a52a52b320eef92fbcb4626307f9a498f}{is\+Signed}}
\item
double \mbox{\hyperlink{structSignalInfo_ae4f78d99a2750aa564d7eba860171499}{factor}}
\item
double \mbox{\hyperlink{structSignalInfo_ab7d0769f47aa540656b22e4e49db517e}{offset}}
\item
double \mbox{\hyperlink{structSignalInfo_ada7bf94fbeaa26bd08c73982b5af255b}{minimum}}
\item
double \mbox{\hyperlink{structSignalInfo_adf1c4331b9eabced0d7fdda40ff0eb52}{maximum}}
\item
std\+::string \mbox{\hyperlink{structSignalInfo_a1f214f03e94ef5794de2d3367bfcbd01}{unit}}
\item
std\+::vector$<$ std\+::string $>$ \mbox{\hyperlink{structSignalInfo_a2c95562fd0b29327a7fd7b1e6feee7f3}{receivers}}
\item
std\+::string \mbox{\hyperlink{structSignalInfo_ac99ba7563a5dad01e39c4257216953f5}{comment}}
\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Describes one signal inside a DBC frame.
Definition at line \mbox{\hyperlink{signal__info_8h_source_l00022}{22}} of file \mbox{\hyperlink{signal__info_8h_source}{signal\+\_\+info.\+h}}.
\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{structSignalInfo_aa2d2cd238118015258e271dce92a971e}\label{structSignalInfo_aa2d2cd238118015258e271dce92a971e}}
\index{SignalInfo@{SignalInfo}!SignalInfo@{SignalInfo}}
\index{SignalInfo@{SignalInfo}!SignalInfo@{SignalInfo}}
\doxysubsubsection{\texorpdfstring{SignalInfo()}{SignalInfo()}}
{\footnotesize\ttfamily Signal\+Info\+::\+Signal\+Info (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
Definition at line \mbox{\hyperlink{signal__info_8h_source_l00036}{36}} of file \mbox{\hyperlink{signal__info_8h_source}{signal\+\_\+info.\+h}}.
\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{structSignalInfo_ac99ba7563a5dad01e39c4257216953f5}\label{structSignalInfo_ac99ba7563a5dad01e39c4257216953f5}}
\index{SignalInfo@{SignalInfo}!comment@{comment}}
\index{comment@{comment}!SignalInfo@{SignalInfo}}
\doxysubsubsection{\texorpdfstring{comment}{comment}}
{\footnotesize\ttfamily std\+::string Signal\+Info\+::comment}
Optional signal comment.
Definition at line \mbox{\hyperlink{signal__info_8h_source_l00034}{34}} of file \mbox{\hyperlink{signal__info_8h_source}{signal\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{dbc__parser_8cpp_source_l00274}{Dbc\+Parser\+::\+Parse\+Comment\+Line()}}.
\mbox{\Hypertarget{structSignalInfo_ae4f78d99a2750aa564d7eba860171499}\label{structSignalInfo_ae4f78d99a2750aa564d7eba860171499}}
\index{SignalInfo@{SignalInfo}!factor@{factor}}
\index{factor@{factor}!SignalInfo@{SignalInfo}}
\doxysubsubsection{\texorpdfstring{factor}{factor}}
{\footnotesize\ttfamily double Signal\+Info\+::factor}
Scaling factor.
Definition at line \mbox{\hyperlink{signal__info_8h_source_l00028}{28}} of file \mbox{\hyperlink{signal__info_8h_source}{signal\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{dbc__parser_8cpp_source_l00181}{Dbc\+Parser\+::\+Parse\+Signal\+Line()}}.
\mbox{\Hypertarget{structSignalInfo_af363b1563fb4c7cc8973f9a80c06846c}\label{structSignalInfo_af363b1563fb4c7cc8973f9a80c06846c}}
\index{SignalInfo@{SignalInfo}!isLittleEndian@{isLittleEndian}}
\index{isLittleEndian@{isLittleEndian}!SignalInfo@{SignalInfo}}
\doxysubsubsection{\texorpdfstring{isLittleEndian}{isLittleEndian}}
{\footnotesize\ttfamily bool Signal\+Info\+::is\+Little\+Endian}
true for Intel, false for Motorola.
Definition at line \mbox{\hyperlink{signal__info_8h_source_l00026}{26}} of file \mbox{\hyperlink{signal__info_8h_source}{signal\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{dbc__parser_8cpp_source_l00181}{Dbc\+Parser\+::\+Parse\+Signal\+Line()}}.
\mbox{\Hypertarget{structSignalInfo_a52a52b320eef92fbcb4626307f9a498f}\label{structSignalInfo_a52a52b320eef92fbcb4626307f9a498f}}
\index{SignalInfo@{SignalInfo}!isSigned@{isSigned}}
\index{isSigned@{isSigned}!SignalInfo@{SignalInfo}}
\doxysubsubsection{\texorpdfstring{isSigned}{isSigned}}
{\footnotesize\ttfamily bool Signal\+Info\+::is\+Signed}
true if signal is signed.
Definition at line \mbox{\hyperlink{signal__info_8h_source_l00027}{27}} of file \mbox{\hyperlink{signal__info_8h_source}{signal\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{dbc__parser_8cpp_source_l00181}{Dbc\+Parser\+::\+Parse\+Signal\+Line()}}.
\mbox{\Hypertarget{structSignalInfo_a1008b5201f71848177217bd52fb84baa}\label{structSignalInfo_a1008b5201f71848177217bd52fb84baa}}
\index{SignalInfo@{SignalInfo}!length@{length}}
\index{length@{length}!SignalInfo@{SignalInfo}}
\doxysubsubsection{\texorpdfstring{length}{length}}
{\footnotesize\ttfamily std\+::uint32\+\_\+t Signal\+Info\+::length}
Signal length in bits.
Definition at line \mbox{\hyperlink{signal__info_8h_source_l00025}{25}} of file \mbox{\hyperlink{signal__info_8h_source}{signal\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00181}{Dbc\+Parser\+::\+Parse\+Signal\+Line()}}, and \mbox{\hyperlink{main_8cpp_source_l00023}{Print\+Tree()}}.
\mbox{\Hypertarget{structSignalInfo_adf1c4331b9eabced0d7fdda40ff0eb52}\label{structSignalInfo_adf1c4331b9eabced0d7fdda40ff0eb52}}
\index{SignalInfo@{SignalInfo}!maximum@{maximum}}
\index{maximum@{maximum}!SignalInfo@{SignalInfo}}
\doxysubsubsection{\texorpdfstring{maximum}{maximum}}
{\footnotesize\ttfamily double Signal\+Info\+::maximum}
Maximum physical value.
Definition at line \mbox{\hyperlink{signal__info_8h_source_l00031}{31}} of file \mbox{\hyperlink{signal__info_8h_source}{signal\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{dbc__parser_8cpp_source_l00181}{Dbc\+Parser\+::\+Parse\+Signal\+Line()}}.
\mbox{\Hypertarget{structSignalInfo_ada7bf94fbeaa26bd08c73982b5af255b}\label{structSignalInfo_ada7bf94fbeaa26bd08c73982b5af255b}}
\index{SignalInfo@{SignalInfo}!minimum@{minimum}}
\index{minimum@{minimum}!SignalInfo@{SignalInfo}}
\doxysubsubsection{\texorpdfstring{minimum}{minimum}}
{\footnotesize\ttfamily double Signal\+Info\+::minimum}
Minimum physical value.
Definition at line \mbox{\hyperlink{signal__info_8h_source_l00030}{30}} of file \mbox{\hyperlink{signal__info_8h_source}{signal\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{dbc__parser_8cpp_source_l00181}{Dbc\+Parser\+::\+Parse\+Signal\+Line()}}.
\mbox{\Hypertarget{structSignalInfo_a379e422a00cad56f896cacf60455b088}\label{structSignalInfo_a379e422a00cad56f896cacf60455b088}}
\index{SignalInfo@{SignalInfo}!name@{name}}
\index{name@{name}!SignalInfo@{SignalInfo}}
\doxysubsubsection{\texorpdfstring{name}{name}}
{\footnotesize\ttfamily std\+::string Signal\+Info\+::name}
Signal name.
Definition at line \mbox{\hyperlink{signal__info_8h_source_l00023}{23}} of file \mbox{\hyperlink{signal__info_8h_source}{signal\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{dbc__parser_8cpp_source_l00181}{Dbc\+Parser\+::\+Parse\+Signal\+Line()}}.
\mbox{\Hypertarget{structSignalInfo_ab7d0769f47aa540656b22e4e49db517e}\label{structSignalInfo_ab7d0769f47aa540656b22e4e49db517e}}
\index{SignalInfo@{SignalInfo}!offset@{offset}}
\index{offset@{offset}!SignalInfo@{SignalInfo}}
\doxysubsubsection{\texorpdfstring{offset}{offset}}
{\footnotesize\ttfamily double Signal\+Info\+::offset}
Physical offset.
Definition at line \mbox{\hyperlink{signal__info_8h_source_l00029}{29}} of file \mbox{\hyperlink{signal__info_8h_source}{signal\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{dbc__parser_8cpp_source_l00181}{Dbc\+Parser\+::\+Parse\+Signal\+Line()}}.
\mbox{\Hypertarget{structSignalInfo_a2c95562fd0b29327a7fd7b1e6feee7f3}\label{structSignalInfo_a2c95562fd0b29327a7fd7b1e6feee7f3}}
\index{SignalInfo@{SignalInfo}!receivers@{receivers}}
\index{receivers@{receivers}!SignalInfo@{SignalInfo}}
\doxysubsubsection{\texorpdfstring{receivers}{receivers}}
{\footnotesize\ttfamily std\+::vector$<$std\+::string$>$ Signal\+Info\+::receivers}
Signal receivers.
Definition at line \mbox{\hyperlink{signal__info_8h_source_l00033}{33}} of file \mbox{\hyperlink{signal__info_8h_source}{signal\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, and \mbox{\hyperlink{dbc__parser_8cpp_source_l00181}{Dbc\+Parser\+::\+Parse\+Signal\+Line()}}.
\mbox{\Hypertarget{structSignalInfo_ace290724f9801521609aedaa946d61f1}\label{structSignalInfo_ace290724f9801521609aedaa946d61f1}}
\index{SignalInfo@{SignalInfo}!startBit@{startBit}}
\index{startBit@{startBit}!SignalInfo@{SignalInfo}}
\doxysubsubsection{\texorpdfstring{startBit}{startBit}}
{\footnotesize\ttfamily std\+::uint32\+\_\+t Signal\+Info\+::start\+Bit}
Start bit in DBC notation.
Definition at line \mbox{\hyperlink{signal__info_8h_source_l00024}{24}} of file \mbox{\hyperlink{signal__info_8h_source}{signal\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00181}{Dbc\+Parser\+::\+Parse\+Signal\+Line()}}, and \mbox{\hyperlink{main_8cpp_source_l00023}{Print\+Tree()}}.
\mbox{\Hypertarget{structSignalInfo_a1f214f03e94ef5794de2d3367bfcbd01}\label{structSignalInfo_a1f214f03e94ef5794de2d3367bfcbd01}}
\index{SignalInfo@{SignalInfo}!unit@{unit}}
\index{unit@{unit}!SignalInfo@{SignalInfo}}
\doxysubsubsection{\texorpdfstring{unit}{unit}}
{\footnotesize\ttfamily std\+::string Signal\+Info\+::unit}
Physical unit.
Definition at line \mbox{\hyperlink{signal__info_8h_source_l00032}{32}} of file \mbox{\hyperlink{signal__info_8h_source}{signal\+\_\+info.\+h}}.
Referenced by \mbox{\hyperlink{dbc__decode__builder_8cpp_source_l00014}{Dbc\+Decode\+Builder\+::\+Build()}}, \mbox{\hyperlink{dbc__parser_8cpp_source_l00181}{Dbc\+Parser\+::\+Parse\+Signal\+Line()}}, and \mbox{\hyperlink{main_8cpp_source_l00023}{Print\+Tree()}}.
The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item
\mbox{\hyperlink{signal__info_8h}{signal\+\_\+info.\+h}}\end{DoxyCompactItemize}

2557
docs/latex/tabu_doxygen.sty Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,17 @@
\hypertarget{tree__node_8cpp}{}\doxysection{tree\+\_\+node.\+cpp File Reference}
\label{tree__node_8cpp}\index{tree\_node.cpp@{tree\_node.cpp}}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
{\ttfamily \#include \char`\"{}tree\+\_\+node.\+h\char`\"{}}\newline
\doxysubsection{Detailed Description}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
Licensed under the MIT License. See LICENSE file in the project root for full license text.
Definition in file \mbox{\hyperlink{tree__node_8cpp_source}{tree\+\_\+node.\+cpp}}.

View File

@@ -0,0 +1,80 @@
\hypertarget{tree__node_8cpp_source}{}\doxysection{tree\+\_\+node.\+cpp}
\mbox{\hyperlink{tree__node_8cpp}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00001}00001 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00002}00002 \textcolor{comment}{ * @file tree\_node.cpp}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00003}00003 \textcolor{comment}{ * @brief}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00005}00005 \textcolor{comment}{ * Created: 2026-\/03-\/13}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00006}00006 \textcolor{comment}{ * Author: Deeaitch (Dim. Himro)}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00008}00008 \textcolor{comment}{ * Licensed under the MIT License.}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00009}00009 \textcolor{comment}{ * See LICENSE file in the project root for full license text.}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00010}00010 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00011}00011 }
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00012}00012 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{tree__node_8h}{tree\_node.h}}"{}}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00013}00013 }
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00014}\mbox{\hyperlink{classTreeNode_a984a98d5ccf7ef1f5a18094c6821f35d}{00014}} \mbox{\hyperlink{classTreeNode_a984a98d5ccf7ef1f5a18094c6821f35d}{TreeNode::TreeNode}}()}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00015}00015 : m\_type (\mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16}{NodeType}}::\mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16afa03eb688ad8aa1db593d33dabd89bad}{Root}})}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00016}00016 , m\_name (\textcolor{stringliteral}{"{}dbc"{}})}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00017}00017 , m\_children()}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00018}00018 , m\_frame()}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00019}00019 , m\_signal() \{}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00020}00020 \}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00021}00021 }
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00022}\mbox{\hyperlink{classTreeNode_a8e38dd591d8801d7ee3a7dbad90c67fc}{00022}} \mbox{\hyperlink{classTreeNode_a984a98d5ccf7ef1f5a18094c6821f35d}{TreeNode::TreeNode}} (\textcolor{keyword}{const} \mbox{\hyperlink{structFrameInfo}{FrameInfo}} \&frame)}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00023}00023 : m\_type (\mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16}{NodeType}}::\mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16a3bb3e8c8a24891ba0f7608bcc96f8b0a}{Frame}})}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00024}00024 , m\_name (frame.name)}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00025}00025 , m\_children()}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00026}00026 , m\_frame (new \mbox{\hyperlink{structFrameInfo}{FrameInfo}} (frame))}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00027}00027 , m\_signal() \{}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00028}00028 \}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00029}00029 }
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00030}\mbox{\hyperlink{classTreeNode_ab9f00f5253d56461bb2d420fd639c5ae}{00030}} \mbox{\hyperlink{classTreeNode_a984a98d5ccf7ef1f5a18094c6821f35d}{TreeNode::TreeNode}} (\textcolor{keyword}{const} \mbox{\hyperlink{structSignalInfo}{SignalInfo}} \&signal)}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00031}00031 : m\_type (\mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16}{NodeType}}::\mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16a085fea7abdc5d904fe69a3081efd7398}{Signal}})}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00032}00032 , m\_name (signal.name)}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00033}00033 , m\_children()}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00034}00034 , m\_frame()}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00035}00035 , m\_signal (new \mbox{\hyperlink{structSignalInfo}{SignalInfo}} (signal)) \{}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00036}00036 \}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00037}00037 }
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00038}\mbox{\hyperlink{classTreeNode_a6161f2ebb92184eab4215d121870e788}{00038}} \textcolor{keywordtype}{void} \mbox{\hyperlink{classTreeNode_a6161f2ebb92184eab4215d121870e788}{TreeNode::AddChild}} (std::unique\_ptr<TreeNode> child) \{}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00039}00039 \textcolor{keywordflow}{if} (child)}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00040}00040 \mbox{\hyperlink{classTreeNode_a1bd61f40df6d36e61021063e3816a351}{m\_children}}.push\_back (std::move (child));}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00041}00041 \}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00042}00042 }
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00043}\mbox{\hyperlink{classTreeNode_abdd82460187dca8d3e5d66f5d5c529ea}{00043}} std::size\_t \mbox{\hyperlink{classTreeNode_abdd82460187dca8d3e5d66f5d5c529ea}{TreeNode::GetChildCount}}()\textcolor{keyword}{ const }\{}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00044}00044 \textcolor{keywordflow}{return} \mbox{\hyperlink{classTreeNode_a1bd61f40df6d36e61021063e3816a351}{m\_children}}.size();}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00045}00045 \}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00046}00046 }
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00047}\mbox{\hyperlink{classTreeNode_a4727ff801a2d1b9323c5ae50a35457a6}{00047}} \textcolor{keyword}{const} \mbox{\hyperlink{classTreeNode}{TreeNode}} *\mbox{\hyperlink{classTreeNode_a4727ff801a2d1b9323c5ae50a35457a6}{TreeNode::GetChild}} (std::size\_t index)\textcolor{keyword}{ const }\{}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00048}00048 \textcolor{keywordflow}{if} (index >= \mbox{\hyperlink{classTreeNode_a1bd61f40df6d36e61021063e3816a351}{m\_children}}.size())}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00049}00049 \textcolor{keywordflow}{return} \textcolor{keyword}{nullptr};}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00050}00050 }
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00051}00051 \textcolor{keywordflow}{return} \mbox{\hyperlink{classTreeNode_a1bd61f40df6d36e61021063e3816a351}{m\_children}}[index].get();}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00052}00052 \}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00053}00053 }
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00054}\mbox{\hyperlink{classTreeNode_a81047bd7d2a4cc96b9ef5e20d0d63b5f}{00054}} \mbox{\hyperlink{classTreeNode}{TreeNode}} *\mbox{\hyperlink{classTreeNode_a4727ff801a2d1b9323c5ae50a35457a6}{TreeNode::GetChild}} (std::size\_t index) \{}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00055}00055 \textcolor{keywordflow}{if} (index >= \mbox{\hyperlink{classTreeNode_a1bd61f40df6d36e61021063e3816a351}{m\_children}}.size())}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00056}00056 \textcolor{keywordflow}{return} \textcolor{keyword}{nullptr};}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00057}00057 }
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00058}00058 \textcolor{keywordflow}{return} \mbox{\hyperlink{classTreeNode_a1bd61f40df6d36e61021063e3816a351}{m\_children}}[index].get();}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00059}00059 \}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00060}00060 }
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00061}\mbox{\hyperlink{classTreeNode_afa2f4b0aafa12d3d41ed00df8e0250c9}{00061}} \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16}{NodeType}} \mbox{\hyperlink{classTreeNode_afa2f4b0aafa12d3d41ed00df8e0250c9}{TreeNode::GetType}}()\textcolor{keyword}{ const }\{}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00062}00062 \textcolor{keywordflow}{return} \mbox{\hyperlink{classTreeNode_a04bccab9e60a6a78777cd7dfec52d224}{m\_type}};}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00063}00063 \}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00064}00064 }
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00065}\mbox{\hyperlink{classTreeNode_aaac5b8d9dc9e5ae1f367d1adbcf20e18}{00065}} \textcolor{keyword}{const} std::string \&\mbox{\hyperlink{classTreeNode_aaac5b8d9dc9e5ae1f367d1adbcf20e18}{TreeNode::GetName}}()\textcolor{keyword}{ const }\{}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00066}00066 \textcolor{keywordflow}{return} \mbox{\hyperlink{classTreeNode_ac0ddcb8370e6b51e2d3de6b8211a47f8}{m\_name}};}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00067}00067 \}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00068}00068 }
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00069}\mbox{\hyperlink{classTreeNode_afc503b40004764163605d6dbdb4ef811}{00069}} \textcolor{keyword}{const} \mbox{\hyperlink{structFrameInfo}{FrameInfo}} *\mbox{\hyperlink{classTreeNode_afc503b40004764163605d6dbdb4ef811}{TreeNode::GetFrame}}()\textcolor{keyword}{ const }\{}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00070}00070 \textcolor{keywordflow}{return} \mbox{\hyperlink{classTreeNode_a77ee6aa80774d67ba442a66b45c798c2}{m\_frame}}.get();}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00071}00071 \}}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00072}00072 }
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00073}\mbox{\hyperlink{classTreeNode_a226518612d0d00b5988a2c44fc21d3f1}{00073}} \textcolor{keyword}{const} \mbox{\hyperlink{structSignalInfo}{SignalInfo}} *\mbox{\hyperlink{classTreeNode_a226518612d0d00b5988a2c44fc21d3f1}{TreeNode::GetSignal}}()\textcolor{keyword}{ const }\{}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00074}00074 \textcolor{keywordflow}{return} \mbox{\hyperlink{classTreeNode_ae658355007bc9303f7bfae3bb3ec8386}{m\_signal}}.get();}
\DoxyCodeLine{\Hypertarget{tree__node_8cpp_source_l00075}00075 \}}
\end{DoxyCode}

View File

@@ -0,0 +1,66 @@
\hypertarget{tree__node_8h}{}\doxysection{tree\+\_\+node.\+h File Reference}
\label{tree__node_8h}\index{tree\_node.h@{tree\_node.h}}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
{\ttfamily \#include $<$string$>$}\newline
{\ttfamily \#include $<$vector$>$}\newline
{\ttfamily \#include $<$memory$>$}\newline
{\ttfamily \#include $<$cstddef$>$}\newline
{\ttfamily \#include \char`\"{}frame\+\_\+info.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}signal\+\_\+info.\+h\char`\"{}}\newline
\doxysubsection*{Classes}
\begin{DoxyCompactItemize}
\item
class \mbox{\hyperlink{classTreeNode}{Tree\+Node}}
\begin{DoxyCompactList}\small\item\em Tree node for later use in model/view or other hierarchy consumers. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item
enum class \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16}{Node\+Type}} \{ \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16afa03eb688ad8aa1db593d33dabd89bad}{Root}}
, \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16a3bb3e8c8a24891ba0f7608bcc96f8b0a}{Frame}}
, \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16a085fea7abdc5d904fe69a3081efd7398}{Signal}}
\}
\begin{DoxyCompactList}\small\item\em Type of a tree node. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Created\+: 2026-\/03-\/13 Author\+: Deeaitch (Dim. Himro)
Licensed under the MIT License. See LICENSE file in the project root for full license text.
Definition in file \mbox{\hyperlink{tree__node_8h_source}{tree\+\_\+node.\+h}}.
\doxysubsection{Enumeration Type Documentation}
\mbox{\Hypertarget{tree__node_8h_acac9cbaeea226ed297804c012dc12b16}\label{tree__node_8h_acac9cbaeea226ed297804c012dc12b16}}
\index{tree\_node.h@{tree\_node.h}!NodeType@{NodeType}}
\index{NodeType@{NodeType}!tree\_node.h@{tree\_node.h}}
\doxysubsubsection{\texorpdfstring{NodeType}{NodeType}}
{\footnotesize\ttfamily enum class \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16}{Node\+Type}}\hspace{0.3cm}{\ttfamily [strong]}}
Type of a tree node.
\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{Root@{Root}!tree\_node.h@{tree\_node.h}}\index{tree\_node.h@{tree\_node.h}!Root@{Root}}}\mbox{\Hypertarget{tree__node_8h_acac9cbaeea226ed297804c012dc12b16afa03eb688ad8aa1db593d33dabd89bad}\label{tree__node_8h_acac9cbaeea226ed297804c012dc12b16afa03eb688ad8aa1db593d33dabd89bad}}
Root&\\
\hline
\raisebox{\heightof{T}}[0pt][0pt]{\index{Frame@{Frame}!tree\_node.h@{tree\_node.h}}\index{tree\_node.h@{tree\_node.h}!Frame@{Frame}}}\mbox{\Hypertarget{tree__node_8h_acac9cbaeea226ed297804c012dc12b16a3bb3e8c8a24891ba0f7608bcc96f8b0a}\label{tree__node_8h_acac9cbaeea226ed297804c012dc12b16a3bb3e8c8a24891ba0f7608bcc96f8b0a}}
Frame&\\
\hline
\raisebox{\heightof{T}}[0pt][0pt]{\index{Signal@{Signal}!tree\_node.h@{tree\_node.h}}\index{tree\_node.h@{tree\_node.h}!Signal@{Signal}}}\mbox{\Hypertarget{tree__node_8h_acac9cbaeea226ed297804c012dc12b16a085fea7abdc5d904fe69a3081efd7398}\label{tree__node_8h_acac9cbaeea226ed297804c012dc12b16a085fea7abdc5d904fe69a3081efd7398}}
Signal&\\
\hline
\end{DoxyEnumFields}
Definition at line \mbox{\hyperlink{tree__node_8h_source_l00026}{26}} of file \mbox{\hyperlink{tree__node_8h_source}{tree\+\_\+node.\+h}}.

View File

@@ -0,0 +1,125 @@
\hypertarget{tree__node_8h_source}{}\doxysection{tree\+\_\+node.\+h}
\mbox{\hyperlink{tree__node_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00001}00001 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00002}00002 \textcolor{comment}{ * @file tree\_node.h}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00003}00003 \textcolor{comment}{ * @brief}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00005}00005 \textcolor{comment}{ * Created: 2026-\/03-\/13}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00006}00006 \textcolor{comment}{ * Author: Deeaitch (Dim. Himro)}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00008}00008 \textcolor{comment}{ * Licensed under the MIT License.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00009}00009 \textcolor{comment}{ * See LICENSE file in the project root for full license text.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00010}00010 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00011}00011 }
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00012}00012 \textcolor{preprocessor}{\#ifndef TREE\_NODE\_H}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00013}00013 \textcolor{preprocessor}{\#define TREE\_NODE\_H}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00014}00014 }
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00015}00015 \textcolor{preprocessor}{\#include <string>}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00016}00016 \textcolor{preprocessor}{\#include <vector>}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00017}00017 \textcolor{preprocessor}{\#include <memory>}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00018}00018 \textcolor{preprocessor}{\#include <cstddef>}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00019}00019 }
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00020}00020 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{frame__info_8h}{frame\_info.h}}"{}}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00021}00021 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{signal__info_8h}{signal\_info.h}}"{}}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00022}00022 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00023}00023 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00024}00024 \textcolor{comment}{ * @brief Type of a tree node.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00025}00025 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00026}\mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16}{00026}} \textcolor{keyword}{enum class} \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16}{NodeType}} \{}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00027}00027 \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16afa03eb688ad8aa1db593d33dabd89bad}{Root}},}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00028}00028 \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16a3bb3e8c8a24891ba0f7608bcc96f8b0a}{Frame}},}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00029}00029 \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16a085fea7abdc5d904fe69a3081efd7398}{Signal}}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00030}00030 \};}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00031}00031 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00032}00032 \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00033}00033 \textcolor{comment}{ * @brief Tree node for later use in model/view or other hierarchy consumers.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00034}00034 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00035}\mbox{\hyperlink{classTreeNode}{00035}} \textcolor{keyword}{class }\mbox{\hyperlink{classTreeNode}{TreeNode}} \{}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00036}00036 \textcolor{keyword}{public}:\textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00037}00037 \textcolor{comment}{ /**}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00038}00038 \textcolor{comment}{ * @brief Create root node.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00039}00039 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00040}00040 \mbox{\hyperlink{classTreeNode_a984a98d5ccf7ef1f5a18094c6821f35d}{TreeNode}}();}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00041}00041 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00042}00042 \textcolor{comment}{ /**}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00043}00043 \textcolor{comment}{ * @brief Create frame node.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00044}00044 \textcolor{comment}{ * @param frame Frame payload.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00045}00045 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00046}00046 \textcolor{keyword}{explicit} \mbox{\hyperlink{classTreeNode_a984a98d5ccf7ef1f5a18094c6821f35d}{TreeNode}} (\textcolor{keyword}{const} \mbox{\hyperlink{structFrameInfo}{FrameInfo}} \&frame);}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00047}00047 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00048}00048 \textcolor{comment}{ /**}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00049}00049 \textcolor{comment}{ * @brief Create signal node.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00050}00050 \textcolor{comment}{ * @param signal Signal payload.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00051}00051 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00052}00052 \textcolor{keyword}{explicit} \mbox{\hyperlink{classTreeNode_a984a98d5ccf7ef1f5a18094c6821f35d}{TreeNode}} (\textcolor{keyword}{const} \mbox{\hyperlink{structSignalInfo}{SignalInfo}} \&signal);}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00053}00053 }
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00054}\mbox{\hyperlink{classTreeNode_a89eb1eb0e25fccaa83c780b85f95b570}{00054}} \mbox{\hyperlink{classTreeNode_a89eb1eb0e25fccaa83c780b85f95b570}{\string~TreeNode}}() = \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00055}00055 }
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00056}\mbox{\hyperlink{classTreeNode_a4d3054a033accf3e38ea132002fc35ff}{00056}} \mbox{\hyperlink{classTreeNode_a4d3054a033accf3e38ea132002fc35ff}{TreeNode}} (\textcolor{keyword}{const} \mbox{\hyperlink{classTreeNode}{TreeNode}} \&) = \textcolor{keyword}{delete};}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00057}\mbox{\hyperlink{classTreeNode_ad6ce97dcf532b452d520452b6d000daa}{00057}} \mbox{\hyperlink{classTreeNode}{TreeNode}} \&\mbox{\hyperlink{classTreeNode_ad6ce97dcf532b452d520452b6d000daa}{operator= }}(\textcolor{keyword}{const} \mbox{\hyperlink{classTreeNode}{TreeNode}} \&) = \textcolor{keyword}{delete};}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00058}00058 }
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00059}\mbox{\hyperlink{classTreeNode_a35724af755b5d0c43de40a723ef81ec1}{00059}} \mbox{\hyperlink{classTreeNode_a35724af755b5d0c43de40a723ef81ec1}{TreeNode}} (\mbox{\hyperlink{classTreeNode}{TreeNode}} \&\&) = \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00060}\mbox{\hyperlink{classTreeNode_a88fbcbec9c64d888b19c5edb95059a95}{00060}} \mbox{\hyperlink{classTreeNode}{TreeNode}} \&\mbox{\hyperlink{classTreeNode_ad6ce97dcf532b452d520452b6d000daa}{operator= }}(\mbox{\hyperlink{classTreeNode}{TreeNode}} \&\&) = \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00061}00061 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00062}00062 \textcolor{comment}{ /**}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00063}00063 \textcolor{comment}{ * @brief Add child node.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00064}00064 \textcolor{comment}{ * @param child Child node to add.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00065}00065 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00066}00066 \textcolor{keywordtype}{void} \mbox{\hyperlink{classTreeNode_a6161f2ebb92184eab4215d121870e788}{AddChild}} (std::unique\_ptr<TreeNode> child);}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00067}00067 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00068}00068 \textcolor{comment}{ /**}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00069}00069 \textcolor{comment}{ * @brief Get child count.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00070}00070 \textcolor{comment}{ * @return Number of children.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00071}00071 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00072}00072 std::size\_t \mbox{\hyperlink{classTreeNode_abdd82460187dca8d3e5d66f5d5c529ea}{GetChildCount}}() \textcolor{keyword}{const};}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00073}00073 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00074}00074 \textcolor{comment}{ /**}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00075}00075 \textcolor{comment}{ * @brief Get child by index.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00076}00076 \textcolor{comment}{ * @param index Child index.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00077}00077 \textcolor{comment}{ * @return Child pointer or nullptr if index is invalid.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00078}00078 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00079}00079 \textcolor{keyword}{const} \mbox{\hyperlink{classTreeNode}{TreeNode}} *\mbox{\hyperlink{classTreeNode_a4727ff801a2d1b9323c5ae50a35457a6}{GetChild}} (std::size\_t index) \textcolor{keyword}{const};}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00080}00080 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00081}00081 \textcolor{comment}{ /**}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00082}00082 \textcolor{comment}{ * @brief Get mutable child by index.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00083}00083 \textcolor{comment}{ * @param index Child index.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00084}00084 \textcolor{comment}{ * @return Child pointer or nullptr if index is invalid.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00085}00085 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00086}00086 \mbox{\hyperlink{classTreeNode}{TreeNode}} *\mbox{\hyperlink{classTreeNode_a4727ff801a2d1b9323c5ae50a35457a6}{GetChild}} (std::size\_t index);}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00087}00087 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00088}00088 \textcolor{comment}{ /**}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00089}00089 \textcolor{comment}{ * @brief Get node type.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00090}00090 \textcolor{comment}{ * @return Node type.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00091}00091 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00092}00092 \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16}{NodeType}} \mbox{\hyperlink{classTreeNode_afa2f4b0aafa12d3d41ed00df8e0250c9}{GetType}}() \textcolor{keyword}{const};}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00093}00093 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00094}00094 \textcolor{comment}{ /**}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00095}00095 \textcolor{comment}{ * @brief Get display name.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00096}00096 \textcolor{comment}{ * @return Node name.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00097}00097 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00098}00098 \textcolor{keyword}{const} std::string \&\mbox{\hyperlink{classTreeNode_aaac5b8d9dc9e5ae1f367d1adbcf20e18}{GetName}}() \textcolor{keyword}{const};}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00099}00099 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00100}00100 \textcolor{comment}{ /**}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00101}00101 \textcolor{comment}{ * @brief Get frame payload if node is frame.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00102}00102 \textcolor{comment}{ * @return Pointer to frame info or nullptr.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00103}00103 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00104}00104 \textcolor{keyword}{const} \mbox{\hyperlink{structFrameInfo}{FrameInfo}} *\mbox{\hyperlink{classTreeNode_afc503b40004764163605d6dbdb4ef811}{GetFrame}}() \textcolor{keyword}{const};}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00105}00105 \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00106}00106 \textcolor{comment}{ /**}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00107}00107 \textcolor{comment}{ * @brief Get signal payload if node is signal.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00108}00108 \textcolor{comment}{ * @return Pointer to signal info or nullptr.}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00109}00109 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00110}00110 \textcolor{keyword}{const} \mbox{\hyperlink{structSignalInfo}{SignalInfo}} *\mbox{\hyperlink{classTreeNode_a226518612d0d00b5988a2c44fc21d3f1}{GetSignal}}() \textcolor{keyword}{const};}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00111}00111 }
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00112}00112 \textcolor{keyword}{private}:}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00113}\mbox{\hyperlink{classTreeNode_a04bccab9e60a6a78777cd7dfec52d224}{00113}} \mbox{\hyperlink{tree__node_8h_acac9cbaeea226ed297804c012dc12b16}{NodeType}} \mbox{\hyperlink{classTreeNode_a04bccab9e60a6a78777cd7dfec52d224}{m\_type}};}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00114}\mbox{\hyperlink{classTreeNode_ac0ddcb8370e6b51e2d3de6b8211a47f8}{00114}} std::string \mbox{\hyperlink{classTreeNode_ac0ddcb8370e6b51e2d3de6b8211a47f8}{m\_name}};}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00115}\mbox{\hyperlink{classTreeNode_a1bd61f40df6d36e61021063e3816a351}{00115}} std::vector<std::unique\_ptr<TreeNode> > \mbox{\hyperlink{classTreeNode_a1bd61f40df6d36e61021063e3816a351}{m\_children}};}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00116}\mbox{\hyperlink{classTreeNode_a77ee6aa80774d67ba442a66b45c798c2}{00116}} std::unique\_ptr<FrameInfo> \mbox{\hyperlink{classTreeNode_a77ee6aa80774d67ba442a66b45c798c2}{m\_frame}};}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00117}\mbox{\hyperlink{classTreeNode_ae658355007bc9303f7bfae3bb3ec8386}{00117}} std::unique\_ptr<SignalInfo> \mbox{\hyperlink{classTreeNode_ae658355007bc9303f7bfae3bb3ec8386}{m\_signal}};}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00118}00118 \};}
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00119}00119 }
\DoxyCodeLine{\Hypertarget{tree__node_8h_source_l00120}00120 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* TREE\_NODE\_H */}\textcolor{preprocessor}{}}
\end{DoxyCode}