\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}
