Finalize thesis report
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful

Signed-off-by: Severin Kaderli <severin@kaderli.dev>
This commit is contained in:
Severin Kaderli 2023-01-17 17:55:44 +01:00
parent 1862068f09
commit 8fef45b856
Signed by: severinkaderli
GPG key ID: F419F8835B72F0C4
10 changed files with 5991 additions and 55 deletions

View file

@ -27,17 +27,16 @@ The transmission works over magnetic induction. By putting a load on a CPU the r
To indicate the start of a message in the signal, a preamble is used. The preamble used in this protocol is 3 high signals, followed by 3 low signals, followed by 3 high signals. The duration of one signal in the preamble is 1 second. That means the entire preamble takes 9 seconds.
After the preambl, the contents of the manchester encoded packet is sent.
After the preamble, the contents of the manchester encoded packet is sent. The entire transmission is repeated until the user stops the process.
\begin{figure}[H]
\begin{bytefield}[bitwidth=.05\linewidth, bitheight=11mm]{4}
\bitbox[]{4}[]{9 Symbols} & \bitbox[]{2}[]{4 Bit} & \bitbox[]{10}[]{n Bytes} & \bitbox[]{4}[]{1 Byte} \\
\bitbox{4}[bgcolor=gray!30]{Preamble} & \bitbox{2}[bgcolor=red!30]{Payload Length} & \bitbox{10}[bgcolor=blue!30]{Payload} & \bitbox{4}[bgcolor=green!30]{CRC-8-AUTOSAR}
\bitbox[]{4}[]{Preamble} & \bitbox[]{2}[]{Payload Length} & \bitbox[]{10}[]{Payload} & \bitbox[]{4}[]{Checksum} \\
\bitbox{4}[bgcolor=gray!30]{9 Symbols} & \bitbox{2}[bgcolor=red!30]{\SI{4}{\bit}} & \bitbox{10}[bgcolor=blue!30]{\SI[number-math-rm = \mathnormal, parse-numbers = false]{n}{\byte}} & \bitbox{4}[bgcolor=green!30]{\SI{1}{\byte}}
\end{bytefield}
\caption{Packet Structure, with Preamble at the Start}
\end{figure}
The following pseudocode in \autoref{listing:sending_pseudo} explains step by
step how a message should get encoded and transmitted using MagSend.
@ -48,6 +47,28 @@ step how a message should get encoded and transmitted using MagSend.
label={listing:sending_pseudo}
]{thesis/listings/sending_pseudo.py}
\subsubsection*{Example}
As an example the message "Test" is shown in the MagSend packet structure in \autoref{figure:testPacket}.
\begin{figure}[H]
\begin{bytefield}[bitwidth=.05\linewidth, bitheight=11mm]{4}
\bitbox[]{2}[]{Payload Length} & \bitbox[]{10}[]{Payload} & \bitbox[]{4}[]{Checksum} \\
\bitbox{2}[bgcolor=red!30]{0x4} & \bitbox{10}[bgcolor=blue!30]{0x54657374} & \bitbox{4}[bgcolor=green!30]{0x2D}
\end{bytefield}
\caption{Packet Structure of the message "Test"}
\label{figure:testPacket}
\end{figure}
When that previous packet is transmitted, the CPU utilization should look similiar to the one
in \autoref{figure:testCpu} with the included preamble.
\begin{figure}[H]
\centering
\includegraphics[width=\textwidth]{cpu_test.png}
\caption{CPU Utilization while sending a Packet}
\label{figure:testCpu}
\end{figure}
\subsection{Receiving}
The receiver utilizes a magnetometer to measure the magnetic field and
interprets the received sensor values as a signal.
@ -62,6 +83,18 @@ step how the signal should get interpreted and decoded using MagSend.
label={listing:receiving_pseudo}
]{thesis/listings/receiving_pseudo.py}
\subsubsection*{Example}
In \autoref{figure:testPacketMagneticInduction} the same packet from the sending
example can be seen. This time it is the \gls{mi} signals that the smartphone is
receiving from the magnetometer.
\begin{figure}[H]
\centering
\includegraphics[width=\textwidth]{magnetic_induction_test_packet.png}
\caption{Magnetic Induction Signal while receiving a Packet}
\label{figure:testPacketMagneticInduction}
\end{figure}
\newpage
\section{Website}
The website provides the user with an interface to transmit text over the
@ -102,7 +135,7 @@ on the CPU to generate a signal. A message is displayed that indicates that a se
\newpage
\section{App}
The app allows the user to receive messages over the protocol.
The app allows the user to receive messages over the MagSend protocol.
On the homescreen you have two buttons. One button is for receiving messages and one is to start the calibration process. By clicking one of the buttons the user will be switched to the corresponding screen.

View file

@ -6,7 +6,7 @@ The following devices were used for the development and testing of MagSend. Whil
The laptop was used as the sending device for MagSend. The Website was run on the Firefox browser. The laptop was always plugged in to the power grid to ensure that the CPU throttles less often.
\begin{table}[H]
\begin{reqTblr}{l p{11.0cm}}
\begin{reqTblr}{l p{10.9cm}}
Device & Lenovo Thinkpad T470P \\
Operating System & Arch Linux \\
CPU & Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz \\
@ -21,7 +21,7 @@ The laptop was used as the sending device for MagSend. The Website was run on th
The smartphone was used as the receiving device for MagSend. The app was run normally as a native Android application.
\begin{table}[H]
\begin{reqTblr}{l p{11.0cm}}
\begin{reqTblr}{l p{10.9cm}}
Device & Samsung Galaxy S9+ \\
Operating System & Android 10 with One UI 2.5 \\
SoC & Samsung Exynos 9810 \\
@ -36,7 +36,7 @@ The smartphone was used as the receiving device for MagSend. The app was run nor
The following test cases are all structured in the same way. The table lists the related requirements from \autoref{chapter:requirements} and describes the test case briefly. Then the expected result row lists the steps and the result that should happen for the test case to be successful. The last row describes the actual result from testing.
\begin{table}[H]
\begin{reqTblr}{l p{10.5cm}}
\begin{reqTblr}{l p{10.3cm}}
ID & T01 \\
Related Requirement & F01 \\
Description & The user is provided with the option to start the calibration on the website. \\
@ -61,7 +61,7 @@ The following test cases are all structured in the same way. The table lists the
\begin{table}[H]
\begin{reqTblr}{l p{10.5cm}}
\begin{reqTblr}{l p{10.3cm}}
ID & T02 \\
Related Requirement & F01 \\
Description & The user can start the calibration process on the website.\\
@ -98,7 +98,7 @@ The following test cases are all structured in the same way. The table lists the
\begin{table}[H]
\begin{reqTblr}{l p{10.5cm}}
\begin{reqTblr}{l p{10.3cm}}
ID & T03 \\
Related Requirement & F01 \\
Description & The user can stop the calibration process on the website.\\
@ -127,7 +127,7 @@ The following test cases are all structured in the same way. The table lists the
\begin{table}[H]
\begin{reqTblr}{l p{10.5cm}}
\begin{reqTblr}{l p{10.3cm}}
ID & T04 \\
Related Requirement & F02 \\
Description & The user is provided with the option to start calibration in the app.\\
@ -152,7 +152,7 @@ The following test cases are all structured in the same way. The table lists the
\begin{table}[H]
\begin{reqTblr}{l p{10.5cm}}
\begin{reqTblr}{l p{10.3cm}}
ID & T05 \\
Related Requirement & F02 \\
Description & The user can start the calibration process in the app.\\
@ -177,7 +177,7 @@ The following test cases are all structured in the same way. The table lists the
\end{figure}
\begin{table}[H]
\begin{reqTblr}{l p{10.5cm}}
\begin{reqTblr}{l p{10.3cm}}
ID & T06 \\
Related Requirement & F02 \\
Description & The user can stop the calibration process in the app.\\
@ -196,7 +196,7 @@ The following test cases are all structured in the same way. The table lists the
\end{table}
\begin{table}[H]
\begin{reqTblr}{l p{10.5cm}}
\begin{reqTblr}{l p{10.3cm}}
ID & T07 \\
Related Requirement & F03 \\
Description & The user can enter text on the website.\\
@ -221,7 +221,7 @@ The following test cases are all structured in the same way. The table lists the
\end{figure}
\begin{table}[H]
\begin{reqTblr}{l p{10.5cm}}
\begin{reqTblr}{l p{10.3cm}}
ID & T08 \\
Related Requirement & F04 \\
Description & The entered text is validated on the website when sending.\\
@ -259,7 +259,7 @@ The following test cases are all structured in the same way. The table lists the
\end{figure}
\begin{table}[H]
\begin{reqTblr}{l p{10.5cm}}
\begin{reqTblr}{l p{10.3cm}}
ID & T09 \\
Related Requirement & F04 \\
Description & The user can send text using the website.\\
@ -294,7 +294,7 @@ The following test cases are all structured in the same way. The table lists the
\end{figure}
\begin{table}[H]
\begin{reqTblr}{l p{10.5cm}}
\begin{reqTblr}{l p{10.3cm}}
ID & T10 \\
Related Requirement & F04 \\
Description & The user can stop the sending process.\\
@ -322,7 +322,7 @@ The following test cases are all structured in the same way. The table lists the
\end{figure}
\begin{table}[H]
\begin{reqTblr}{l p{10.5cm}}
\begin{reqTblr}{l p{10.3cm}}
ID & T11 \\
Related Requirement & F05 \\
Description & The user can receive data using the app.\\
@ -360,7 +360,7 @@ The following test cases are all structured in the same way. The table lists the
\begin{table}[H]
\begin{reqTblr}{l p{10.5cm}}
\begin{reqTblr}{l p{10.3cm}}
ID & T12 \\
Related Requirement & F05 \\
Description & The user can restart the reception process.\\
@ -381,7 +381,7 @@ The following test cases are all structured in the same way. The table lists the
\end{table}
\begin{table}[H]
\begin{reqTblr}{l p{10.5cm}}
\begin{reqTblr}{l p{10.3cm}}
ID & T13 \\
Related Requirement & F05 \\
Description & The user can stop the reception process.\\
@ -402,7 +402,7 @@ The following test cases are all structured in the same way. The table lists the
\begin{table}[H]
\begin{reqTblr}{l p{10.5cm}}
\begin{reqTblr}{l p{10.3cm}}
ID & T14 \\
Related Requirement & N01 \\
Description & The app can receive data in airplane mode.\\
@ -429,7 +429,7 @@ The following test cases are all structured in the same way. The table lists the
\end{figure}
\begin{table}[H]
\begin{reqTblr}{l p{10.5cm}}
\begin{reqTblr}{l p{10.3cm}}
ID & T15 \\
Related Requirement & N02 \\
Description & The transfer speed between laptop and smartphone is \SI{1}{\bit\per\second}.\\

View file

@ -14,11 +14,11 @@ The following benchmarks were run during idle CPU Load, which was about 1-5\% ut
\begin{table}[H]
\begin{bfhTabular}{l l l l l}
Run & Preamble Detected & Payload Length & Is CRC Valid & Received Message \\
1 & Yes & 4 bytes & No & Vêÿ\\
2 & Yes & 4 bytes & Yes & Test \\
3 & Yes & 4 bytes & Yes & Test\\
4 & Yes & 4 bytes & Yes & Test \\
5 & Yes & 4 bytes & No & {\textunderscore}
1 & Yes & \SI{4}{\byte} & No & Vêÿ\\
2 & Yes & \SI{4}{\byte} & Yes & Test \\
3 & Yes & \SI{4}{\byte} & Yes & Test\\
4 & Yes & \SI{4}{\byte} & Yes & Test \\
5 & Yes & \SI{4}{\byte} & No & {\textunderscore}
\end{bfhTabular}
\caption{Benchmark - Idle CPU Load - \SI{0.5}{\bit\per\second}}
\end{table}
@ -27,11 +27,11 @@ The following benchmarks were run during idle CPU Load, which was about 1-5\% ut
\begin{table}[H]
\begin{bfhTabular}{l l l l l}
Run & Preamble Detected & Payload Length & Is CRC Valid & Received Message \\
1 & Yes & 4 bytes & Yes & Test\\
2 & Yes & 4 & No & Test\\
3 & Yes & 4 & Yes & Test\\
4 & Yes & 4 & Yes & Test\\
5 & Yes & 4 & No & TÊæé
1 & Yes & \SI{4}{\byte} & Yes & Test\\
2 & Yes & \SI{4}{\byte} & No & Test\\
3 & Yes & \SI{4}{\byte} & Yes & Test\\
4 & Yes & \SI{4}{\byte} & Yes & Test\\
5 & Yes & \SI{4}{\byte} & No & TÊæé
\end{bfhTabular}
\caption{Benchmark - Idle CPU Load - \SI{1}{\bit\per\second}}
\end{table}
@ -43,11 +43,11 @@ The following benchmarks were run with 25\% CPU utilization. The tool \texttt{st
\begin{table}[H]
\begin{bfhTabular}{l l l l l}
Run & Preamble Detected & Payload Length & Is CRC Valid & Received Message \\
1 & Yes & - & - & -\\
2 & Yes & \SI{4}{\byte} & - & -\\
3 & No & - & - & -\\
4 & No & - & - & -\\
5 & No & - & - & -\\
1 & Yes & N/A & No & N/A\\
2 & Yes & \SI{4}{\byte} & No & N/A\\
3 & No & N/A & No & N/A\\
4 & No & N/A & No & N/A\\
5 & No & N/A & No & N/A\\
\end{bfhTabular}
\caption{Benchmark - 25\% CPU Load - \SI{0.5}{\bit\per\second}}
\end{table}
@ -56,11 +56,11 @@ The following benchmarks were run with 25\% CPU utilization. The tool \texttt{st
\begin{table}[H]
\begin{bfhTabular}{l l l l l}
Run & Preamble Detected & Payload Length & Is CRC Valid & Received Message \\
1 & No & - & - & -\\
2 & Yes & - & - & -\\
3 & No & - & - & -\\
4 & No & - & - & -\\
5 & No & - & - & -
1 & No & N/A & No & N/A\\
2 & Yes & N/A & No & N/A\\
3 & No & N/A & No & N/A\\
4 & No & N/A & No & N/A\\
5 & No & N/A & No & N/A
\end{bfhTabular}
\caption{Benchmark - 25\% CPU Load - \SI{1}{\bit\per\second}}
\end{table}