rssi__list_8h.tex 14.1 KB
\hypertarget{rssi__list_8h}{}\section{/home/junicode/\+Documents/\+L\+O53\+\_\+\+Project/\+L\+O53\+\_\+\+A\+P\+\_\+\+Development/rssi\+\_\+list.h File Reference}
\label{rssi__list_8h}\index{/home/junicode/\+Documents/\+L\+O53\+\_\+\+Project/\+L\+O53\+\_\+\+A\+P\+\_\+\+Development/rssi\+\_\+list.\+h@{/home/junicode/\+Documents/\+L\+O53\+\_\+\+Project/\+L\+O53\+\_\+\+A\+P\+\_\+\+Development/rssi\+\_\+list.\+h}}
{\ttfamily \#include $<$stdio.\+h$>$}\\*
{\ttfamily \#include $<$string.\+h$>$}\\*
{\ttfamily \#include $<$stdlib.\+h$>$}\\*
{\ttfamily \#include $<$math.\+h$>$}\\*
{\ttfamily \#include $<$arpa/inet.\+h$>$}\\*
{\ttfamily \#include $<$sys/time.\+h$>$}\\*
Include dependency graph for rssi\+\_\+list.\+h\+:
% FIG 0
This graph shows which files directly or indirectly include this file\+:
% FIG 1
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{struct___rssi__sample}{\+\_\+\+Rssi\+\_\+sample}
\item 
struct \hyperlink{struct___deque}{\+\_\+\+Deque}
\item 
struct \hyperlink{struct___element}{\+\_\+\+Element}
\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \hyperlink{rssi__list_8h_a35f1467bf87db9e9d057b19e73342bf1}{S\+A\+M\+P\+L\+E\+\_\+\+D\+E\+L\+A\+Y}~6
\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef struct \hyperlink{struct___rssi__sample}{\+\_\+\+Rssi\+\_\+sample} \hyperlink{rssi__list_8h_abc61de7957d5cdb893864e72aa753310}{Rssi\+\_\+sample}
\item 
typedef struct \hyperlink{struct___deque}{\+\_\+\+Deque} \hyperlink{rssi__list_8h_a9eed9490a3149e7896fd7c4fc27bcaa2}{Deque}
\item 
typedef struct \hyperlink{struct___element}{\+\_\+\+Element} \hyperlink{rssi__list_8h_a4f4b1330ac9fceee38f2a479e6e72f9e}{Element}
\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{rssi__list_8h_a535cd027bf00cf939326973eb2af2a37}{clear\+\_\+outdated\+\_\+values} (\hyperlink{struct_deque}{Deque} $\ast$list)
\begin{DoxyCompactList}\small\item\em clear\+\_\+outdated\+\_\+values removes all outdated R\+S\+S\+I in a R\+S\+S\+I deque. \end{DoxyCompactList}\item 
void \hyperlink{rssi__list_8h_ae44fbcd3fb8dd7a4a9015cf282b16406}{add\+\_\+value} (\hyperlink{struct_deque}{Deque} $\ast$list, double value)
\begin{DoxyCompactList}\small\item\em add\+\_\+value adds a new R\+S\+S\+I value at the end of the deque. \end{DoxyCompactList}\item 
void \hyperlink{rssi__list_8h_a12d58f846d9ea5a76d657991fc0bb6ab}{clear\+\_\+outdated\+\_\+\+Elements} (\hyperlink{struct_element}{Element} $\ast$$\ast$list)
\begin{DoxyCompactList}\small\item\em clear\+\_\+outdated\+\_\+\+Elements removes all outdated Elements in the linked-\/list. \end{DoxyCompactList}\item 
\hyperlink{struct_element}{Element} $\ast$ \hyperlink{rssi__list_8h_a6c7015cd077f7305b2733eb8b9817f97}{find\+\_\+mac} (\hyperlink{struct_element}{Element} $\ast$list, u\+\_\+char $\ast$mac\+\_\+value)
\begin{DoxyCompactList}\small\item\em find\+\_\+mac looks up for a M\+A\+C address in the list. \end{DoxyCompactList}\item 
\hyperlink{struct_element}{Element} $\ast$ \hyperlink{rssi__list_8h_a24453a17eaee3f01419138bd3350031e}{add\+\_\+element} (\hyperlink{struct_element}{Element} $\ast$$\ast$list, u\+\_\+char $\ast$mac\+\_\+value)
\begin{DoxyCompactList}\small\item\em add\+\_\+element adds an element (a new device node) to the list. Elements shall be ordered. \end{DoxyCompactList}\item 
void \hyperlink{rssi__list_8h_af2c0c85c2a2a3efefa7c5dc3c03c3e4a}{calculate\+\_\+avg} (\hyperlink{struct_element}{Element} $\ast$$\ast$list, u\+\_\+char $\ast$mac\+\_\+value, u\+\_\+char $\ast$nb\+\_\+samples, u\+\_\+char $\ast$avg\+\_\+value)
\begin{DoxyCompactList}\small\item\em Calculate avg ss values from a given string mac address. \end{DoxyCompactList}\item 
unsigned int \hyperlink{rssi__list_8h_a24da2773bae32fa61d7575b189c3cbed}{mac\+\_\+maching} (u\+\_\+char $\ast$mac1, u\+\_\+char $\ast$mac2)
\begin{DoxyCompactList}\small\item\em This function makes the comparison of two mac addresses to check if they are equals. \end{DoxyCompactList}\item 
\hyperlink{struct_element}{Element} $\ast$ \hyperlink{rssi__list_8h_a215f49fa181cccf9bac2400da4215bb2}{find\+\_\+deque} (\hyperlink{struct_element}{Element} $\ast$list, \hyperlink{struct_deque}{Deque} $\ast$deq)
\begin{DoxyCompactList}\small\item\em This function find a specific \hyperlink{struct_deque}{Deque} in the \hyperlink{struct_element}{Element} List. \end{DoxyCompactList}\item 
void \hyperlink{rssi__list_8h_a41893db8a4089cb1c64fe72069044637}{decrement\+\_\+all\+\_\+deadlines} (\hyperlink{struct_element}{Element} $\ast$list)
\begin{DoxyCompactList}\small\item\em This function decrement every second the deadline value of all the samples included in an element list. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Macro Definition Documentation}
\hypertarget{rssi__list_8h_a35f1467bf87db9e9d057b19e73342bf1}{}\index{rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}!S\+A\+M\+P\+L\+E\+\_\+\+D\+E\+L\+A\+Y@{S\+A\+M\+P\+L\+E\+\_\+\+D\+E\+L\+A\+Y}}
\index{S\+A\+M\+P\+L\+E\+\_\+\+D\+E\+L\+A\+Y@{S\+A\+M\+P\+L\+E\+\_\+\+D\+E\+L\+A\+Y}!rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}}
\subsubsection[{S\+A\+M\+P\+L\+E\+\_\+\+D\+E\+L\+A\+Y}]{\setlength{\rightskip}{0pt plus 5cm}\#define S\+A\+M\+P\+L\+E\+\_\+\+D\+E\+L\+A\+Y~6}\label{rssi__list_8h_a35f1467bf87db9e9d057b19e73342bf1}


\subsection{Typedef Documentation}
\hypertarget{rssi__list_8h_a9eed9490a3149e7896fd7c4fc27bcaa2}{}\index{rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}!Deque@{Deque}}
\index{Deque@{Deque}!rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}}
\subsubsection[{Deque}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf \+\_\+\+Deque}  {\bf Deque}}\label{rssi__list_8h_a9eed9490a3149e7896fd7c4fc27bcaa2}
\hypertarget{rssi__list_8h_a4f4b1330ac9fceee38f2a479e6e72f9e}{}\index{rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}!Element@{Element}}
\index{Element@{Element}!rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}}
\subsubsection[{Element}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf \+\_\+\+Element}  {\bf Element}}\label{rssi__list_8h_a4f4b1330ac9fceee38f2a479e6e72f9e}
\hypertarget{rssi__list_8h_abc61de7957d5cdb893864e72aa753310}{}\index{rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}!Rssi\+\_\+sample@{Rssi\+\_\+sample}}
\index{Rssi\+\_\+sample@{Rssi\+\_\+sample}!rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}}
\subsubsection[{Rssi\+\_\+sample}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf \+\_\+\+Rssi\+\_\+sample}  {\bf Rssi\+\_\+sample}}\label{rssi__list_8h_abc61de7957d5cdb893864e72aa753310}


\subsection{Function Documentation}
\hypertarget{rssi__list_8h_a24453a17eaee3f01419138bd3350031e}{}\index{rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}!add\+\_\+element@{add\+\_\+element}}
\index{add\+\_\+element@{add\+\_\+element}!rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}}
\subsubsection[{add\+\_\+element}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Element}$\ast$ add\+\_\+element (
\begin{DoxyParamCaption}
\item[{{\bf Element} $\ast$$\ast$}]{list, }
\item[{u\+\_\+char $\ast$}]{mac\+\_\+value}
\end{DoxyParamCaption}
)}\label{rssi__list_8h_a24453a17eaee3f01419138bd3350031e}


add\+\_\+element adds an element (a new device node) to the list. Elements shall be ordered. 

\begin{DoxyReturn}{Returns}
the added element pointer. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em list} & a pointer to the list head pointer. \\
\hline
{\em mac\+\_\+value} & the M\+A\+C address of the new node to be added. \\
\hline
\end{DoxyParams}
\hypertarget{rssi__list_8h_ae44fbcd3fb8dd7a4a9015cf282b16406}{}\index{rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}!add\+\_\+value@{add\+\_\+value}}
\index{add\+\_\+value@{add\+\_\+value}!rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}}
\subsubsection[{add\+\_\+value}]{\setlength{\rightskip}{0pt plus 5cm}void add\+\_\+value (
\begin{DoxyParamCaption}
\item[{{\bf Deque} $\ast$}]{list, }
\item[{double}]{value}
\end{DoxyParamCaption}
)}\label{rssi__list_8h_ae44fbcd3fb8dd7a4a9015cf282b16406}


add\+\_\+value adds a new R\+S\+S\+I value at the end of the deque. 


\begin{DoxyParams}{Parameters}
{\em the} & deque to append the element to. \\
\hline
{\em value} & the R\+S\+S\+I value (d\+Bm, do not forget to convert when inserting!) \\
\hline
\end{DoxyParams}
\hypertarget{rssi__list_8h_af2c0c85c2a2a3efefa7c5dc3c03c3e4a}{}\index{rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}!calculate\+\_\+avg@{calculate\+\_\+avg}}
\index{calculate\+\_\+avg@{calculate\+\_\+avg}!rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}}
\subsubsection[{calculate\+\_\+avg}]{\setlength{\rightskip}{0pt plus 5cm}void calculate\+\_\+avg (
\begin{DoxyParamCaption}
\item[{{\bf Element} $\ast$$\ast$}]{list, }
\item[{u\+\_\+char $\ast$}]{mac\+\_\+value, }
\item[{u\+\_\+char $\ast$}]{nb\+\_\+samples, }
\item[{u\+\_\+char $\ast$}]{avg\+\_\+value}
\end{DoxyParamCaption}
)}\label{rssi__list_8h_af2c0c85c2a2a3efefa7c5dc3c03c3e4a}


Calculate avg ss values from a given string mac address. 


\begin{DoxyParams}{Parameters}
{\em mac\+\_\+value} & the string M\+A\+C address necessary to identify the device to which calculation is needed. \\
\hline
{\em list} & a pointer to the list head pointer. \\
\hline
{\em nb\+\_\+samples} & is a pointer that will contain the number of sample we need to know. \\
\hline
{\em avg\+\_\+value} & is a pointer that will contain the average rssi\+\_\+value based on the captured samples. \\
\hline
\end{DoxyParams}
\hypertarget{rssi__list_8h_a12d58f846d9ea5a76d657991fc0bb6ab}{}\index{rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}!clear\+\_\+outdated\+\_\+\+Elements@{clear\+\_\+outdated\+\_\+\+Elements}}
\index{clear\+\_\+outdated\+\_\+\+Elements@{clear\+\_\+outdated\+\_\+\+Elements}!rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}}
\subsubsection[{clear\+\_\+outdated\+\_\+\+Elements}]{\setlength{\rightskip}{0pt plus 5cm}void clear\+\_\+outdated\+\_\+\+Elements (
\begin{DoxyParamCaption}
\item[{{\bf Element} $\ast$$\ast$}]{list}
\end{DoxyParamCaption}
)}\label{rssi__list_8h_a12d58f846d9ea5a76d657991fc0bb6ab}


clear\+\_\+outdated\+\_\+\+Elements removes all outdated Elements in the linked-\/list. 


\begin{DoxyParams}{Parameters}
{\em list} & the \hyperlink{struct_element}{Element} (devices) list in which the outdated devices need to be removed \\
\hline
\end{DoxyParams}
\hypertarget{rssi__list_8h_a535cd027bf00cf939326973eb2af2a37}{}\index{rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}!clear\+\_\+outdated\+\_\+values@{clear\+\_\+outdated\+\_\+values}}
\index{clear\+\_\+outdated\+\_\+values@{clear\+\_\+outdated\+\_\+values}!rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}}
\subsubsection[{clear\+\_\+outdated\+\_\+values}]{\setlength{\rightskip}{0pt plus 5cm}void clear\+\_\+outdated\+\_\+values (
\begin{DoxyParamCaption}
\item[{{\bf Deque} $\ast$}]{list}
\end{DoxyParamCaption}
)}\label{rssi__list_8h_a535cd027bf00cf939326973eb2af2a37}


clear\+\_\+outdated\+\_\+values removes all outdated R\+S\+S\+I in a R\+S\+S\+I deque. 


\begin{DoxyParams}{Parameters}
{\em list} & the deque from which to filter the outdated values. \\
\hline
\end{DoxyParams}
\hypertarget{rssi__list_8h_a41893db8a4089cb1c64fe72069044637}{}\index{rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}!decrement\+\_\+all\+\_\+deadlines@{decrement\+\_\+all\+\_\+deadlines}}
\index{decrement\+\_\+all\+\_\+deadlines@{decrement\+\_\+all\+\_\+deadlines}!rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}}
\subsubsection[{decrement\+\_\+all\+\_\+deadlines}]{\setlength{\rightskip}{0pt plus 5cm}void decrement\+\_\+all\+\_\+deadlines (
\begin{DoxyParamCaption}
\item[{{\bf Element} $\ast$}]{list}
\end{DoxyParamCaption}
)}\label{rssi__list_8h_a41893db8a4089cb1c64fe72069044637}


This function decrement every second the deadline value of all the samples included in an element list. 


\begin{DoxyParams}{Parameters}
{\em list} & The \hyperlink{struct_element}{Element} list head pointer \\
\hline
\end{DoxyParams}
\hypertarget{rssi__list_8h_a215f49fa181cccf9bac2400da4215bb2}{}\index{rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}!find\+\_\+deque@{find\+\_\+deque}}
\index{find\+\_\+deque@{find\+\_\+deque}!rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}}
\subsubsection[{find\+\_\+deque}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Element}$\ast$ find\+\_\+deque (
\begin{DoxyParamCaption}
\item[{{\bf Element} $\ast$}]{list, }
\item[{{\bf Deque} $\ast$}]{deq}
\end{DoxyParamCaption}
)}\label{rssi__list_8h_a215f49fa181cccf9bac2400da4215bb2}


This function find a specific \hyperlink{struct_deque}{Deque} in the \hyperlink{struct_element}{Element} List. 

\begin{DoxyReturn}{Returns}
it return a pointer to the \hyperlink{struct_element}{Element} in which the deque is located 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em list} & the \hyperlink{struct_element}{Element} list head pointer \\
\hline
{\em deq} & the address of the \hyperlink{struct_deque}{Deque} to find \\
\hline
\end{DoxyParams}
\hypertarget{rssi__list_8h_a6c7015cd077f7305b2733eb8b9817f97}{}\index{rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}!find\+\_\+mac@{find\+\_\+mac}}
\index{find\+\_\+mac@{find\+\_\+mac}!rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}}
\subsubsection[{find\+\_\+mac}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Element}$\ast$ find\+\_\+mac (
\begin{DoxyParamCaption}
\item[{{\bf Element} $\ast$}]{list, }
\item[{u\+\_\+char $\ast$}]{mac\+\_\+value}
\end{DoxyParamCaption}
)}\label{rssi__list_8h_a6c7015cd077f7305b2733eb8b9817f97}


find\+\_\+mac looks up for a M\+A\+C address in the list. 

\begin{DoxyReturn}{Returns}
a pointer to the corresponding element, N\+U\+L\+L if not found. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em list} & the list head pointer. \\
\hline
{\em mac\+\_\+value} & the M\+A\+C address to search. \\
\hline
\end{DoxyParams}
\hypertarget{rssi__list_8h_a24da2773bae32fa61d7575b189c3cbed}{}\index{rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}!mac\+\_\+maching@{mac\+\_\+maching}}
\index{mac\+\_\+maching@{mac\+\_\+maching}!rssi\+\_\+list.\+h@{rssi\+\_\+list.\+h}}
\subsubsection[{mac\+\_\+maching}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int mac\+\_\+maching (
\begin{DoxyParamCaption}
\item[{u\+\_\+char $\ast$}]{mac1, }
\item[{u\+\_\+char $\ast$}]{mac2}
\end{DoxyParamCaption}
)}\label{rssi__list_8h_a24da2773bae32fa61d7575b189c3cbed}


This function makes the comparison of two mac addresses to check if they are equals. 

\begin{DoxyReturn}{Returns}
it return 0 if they are not equal and 1 if they are equal 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em mac1} & the first string mac address \\
\hline
{\em mac2} & the second string mac address \\
\hline
\end{DoxyParams}