From bb50116cbee07af48d4deeb4b6a799aa430c05c3 Mon Sep 17 00:00:00 2001 From: Severin Kaderli Date: Wed, 11 Jan 2023 22:41:11 +0100 Subject: [PATCH] More work on thesis report Signed-off-by: Severin Kaderli --- .../assets/appendix/task_description.pdf | Bin 0 -> 93040 bytes .../thesis/assets/benchmarking/1bps_25.png | Bin 0 -> 21839 bytes .../assets/benchmarking/cpu_temperatures.png | Bin 0 -> 10065 bytes .../thesis/content/02_preliminaries.tex | 5 +- documentation/thesis/content/03_personas.tex | 1 - documentation/thesis/content/05_solution.tex | 10 +- documentation/thesis/content/06_testing.tex | 12 +- .../thesis/content/07_benchmarking.tex | 175 +++++++----------- .../thesis/content/08_materials_methods.tex | 9 +- .../thesis/content/09_future_work.tex | 5 +- .../thesis/content/10_project_management.tex | 52 ++++++ documentation/thesis/thesis.bib | 30 +++ documentation/thesis/thesis.tex | 11 +- 13 files changed, 179 insertions(+), 131 deletions(-) create mode 100644 documentation/thesis/assets/appendix/task_description.pdf create mode 100644 documentation/thesis/assets/benchmarking/1bps_25.png create mode 100644 documentation/thesis/assets/benchmarking/cpu_temperatures.png diff --git a/documentation/thesis/assets/appendix/task_description.pdf b/documentation/thesis/assets/appendix/task_description.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ab6e0b4eee2a7522510a477b84d00b0cf983daee GIT binary patch literal 93040 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ÝhxhVI?FcWR#10Yi8RQ+;&T`r(Immu0SJ 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 literal 0 HcmV?d00001 diff --git a/documentation/thesis/assets/benchmarking/1bps_25.png b/documentation/thesis/assets/benchmarking/1bps_25.png new file mode 100644 index 0000000000000000000000000000000000000000..7ffcfa6e94d07d31c44a8f6212115eaad10eb503 GIT binary patch literal 21839 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 literal 0 HcmV?d00001 diff --git a/documentation/thesis/assets/benchmarking/cpu_temperatures.png b/documentation/thesis/assets/benchmarking/cpu_temperatures.png new file mode 100644 index 0000000000000000000000000000000000000000..f1424ce7db071ed469e4db4248f241248d14cb4d GIT binary patch literal 10065 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 literal 0 HcmV?d00001 diff --git a/documentation/thesis/content/02_preliminaries.tex b/documentation/thesis/content/02_preliminaries.tex index f95a090..54eaa7c 100644 --- a/documentation/thesis/content/02_preliminaries.tex +++ b/documentation/thesis/content/02_preliminaries.tex @@ -1,5 +1,6 @@ \chapter{Preliminaries} \section{Web Worker} +\label{section:webworkers} Web Workers are a web API that allows running JavaScript code in background threads in the browser. This way you can run CPU intensive processes without stalling the main thread and locking up the UI. There's a few limitations with Web Workers. A Web Worker doesn't have access to the \gls{dom}, to the window object and to some web APIs. @@ -35,9 +36,7 @@ Manchester is a simple encoding code for the transmission of binary data. The da The advantages of manchester encoding is that there are no prolonged high or low signals and the original clock signal can be extracted from the signal, on the other side the bandwidth requirements are doubled as two bits in the signal are needed to encode one bit of the original data \cite{manchesterCode}. \section{Hall Effect Sensor} +\label{section:hallEffectSensor} A Hall Effect Sensor is a type of sensor to measure the strength of magnetic fields. This type of magnetometer is found in many smartphones today \cite{hallEffectSensor} and is generally used for compass capabilities and for positioning \cite{smartphoneSensors}. It utilizes the so-called hall effect to do so. The hall effect is the voltage between two sides of a current-carrying conductor inside a magnetic field \cite{hallEffect} \cite{hallEffect2}. - -\section{Magnetic Induction} -// TODO: Write this section diff --git a/documentation/thesis/content/03_personas.tex b/documentation/thesis/content/03_personas.tex index eb38e4f..bdfd5a7 100644 --- a/documentation/thesis/content/03_personas.tex +++ b/documentation/thesis/content/03_personas.tex @@ -7,4 +7,3 @@ Alice wants to be able to receive a small piece of data over a website, similar to a QR code, with her smartphone but without other people being able to see the code over her shoulders. She also wants to be able to receive data to her smartphone while it has connection available e.g. when it's in airplane mode. -// TODO: Document other potential personas diff --git a/documentation/thesis/content/05_solution.tex b/documentation/thesis/content/05_solution.tex index 1bdc9e7..2207429 100644 --- a/documentation/thesis/content/05_solution.tex +++ b/documentation/thesis/content/05_solution.tex @@ -51,6 +51,8 @@ The following describes the steps needed to send a message using our protocol: \item{Transmit the manchester encoded bitstream of the packet} \end{enumerate} +// TODO: Detailed description of sending process with pseudocode + \subsection{Receiving} The following describes the steps needed to receive a message using our protocol: @@ -64,18 +66,14 @@ The following describes the steps needed to receive a message using our protocol \item{Convert the payload ASCII bitstream to text} \end{enumerate} -// TODO: Detailed description of decoding process - -1. Get samples from sensor - Show graphic -2. Determine if sample is a high or low signal +// TODO: Detailed description of decoding process with pseudocode \newpage \section{Website} The website provides the user with an interface to transmit text over our protocol. -When the user opens the website he is greeted by a simple interface. It contains an input field for entering text and two buttons. The first button will send the entered text, and the second one will start the calibration process. +When the user opens the website they are greeted by a simple interface. It contains an input field for entering text and two buttons. The first button will send the entered text, and the second one will start the calibration process. \begin{figure}[H] \fbox{\includegraphics[width=1\textwidth]{mockups/website/home_v1.png}} diff --git a/documentation/thesis/content/06_testing.tex b/documentation/thesis/content/06_testing.tex index 2eb20b4..6aaefdd 100644 --- a/documentation/thesis/content/06_testing.tex +++ b/documentation/thesis/content/06_testing.tex @@ -2,8 +2,6 @@ \section{Devices} The following devices were used for the development and testing of MagSend. While theoretically MagSend should work on other Laptops and Smartphones I have only tested in on specified devices. For each device the most important specifications are listed. -// TOOD: Explain problem of testing over video calls - \subsection{Laptop} The laptop was used as the sending device for MagSend. The Website was run using the Firefox browser and the laptop was always plugged in to the power grid to ensure that CPU doesn't throttle. @@ -196,7 +194,7 @@ The following test cases are all structured in the same way. The table lists the \item{The user can enter any text between 0 and 16 characters} \end{enumerate} \\ Actual Result & - The user can enter any character in the input he wants but he is not able to enter more than 16 characters (see \autoref{figure:t07}). + The user can enter any character in the input they want but they are not able to enter more than 16 characters (see \autoref{figure:t07}). \\ \end{reqTblr} \caption{Test Case 07} @@ -223,9 +221,9 @@ The following test cases are all structured in the same way. The table lists the \item{When the user hasn't entered any text or the text contains non-ASCII characters a fitting message is displayed and the sending process is not started.} \end{enumerate} \\ Actual Result & - When the user attempts to start sending when he hasn't entered any text, a message is displayed (see \autoref{figure:t08}). + When the user attempts to start sending when they haven't entered any text, a message is displayed (see \autoref{figure:t08}). - When the user attempts to start sending when he has entered any non-ASCII characters, a message is diplayed. (see \autoref{figure:t08_2}). + When the user attempts to start sending when they have entered any non-ASCII characters, a message is diplayed. (see \autoref{figure:t08_2}). In both cases the sending process is not started. \\ @@ -319,7 +317,7 @@ The following test cases are all structured in the same way. The table lists the \item{The app will start the receive process and will indicate if the preamble was detected, the length of the received payload, and if the checksum is valid. The received text is also displayed.} \end{enumerate} \\ Actual Result & - When the users starts the receiving process he is informed about the current process of the receive status. He is informed whether the preamble was detected, the length of the payload and if the checksum is valid. He can also see the currently received text at all times (see \autoref{figure:t11}). + When the users starts the receiving process they are informed about the current process of the receive status. They are informed whether the preamble was detected, the length of the payload and if the checksum is valid. They can also see the currently received text at all times (see \autoref{figure:t11}). When the checksum is invalid the user is informed about it (see \autoref{figure:t11_2}). \\ @@ -427,4 +425,4 @@ The following test cases are all structured in the same way. The table lists the \caption{Test Case 15} \end{table} -// TODO: Fix up layout of images +// TODO: Fix up sizing of images diff --git a/documentation/thesis/content/07_benchmarking.tex b/documentation/thesis/content/07_benchmarking.tex index 901e247..8d050c1 100644 --- a/documentation/thesis/content/07_benchmarking.tex +++ b/documentation/thesis/content/07_benchmarking.tex @@ -7,126 +7,83 @@ The following benchmark test are structured in the same way. I run each test 5 t The message used in the test transmissions is "\textbf{Test}". -\section{25\% CPU Load} +\section{Idle CPU Load} +The following benchmarks were run during idle CPU Load, which was about 1-5\% utilization. + +\subsection{\SI{0.5}{\bit\per\second}} +\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}rÛ + \end{bfhTabular} + \caption{Benchmark - Idle CPU Load - \SI{0.5}{\bit\per\second}} +\end{table} + \subsection{\SI{1}{\bit\per\second}} \begin{table}[H] \begin{bfhTabular}{l l l l l} Run & Preamble Detected & Payload Length & Is CRC Valid & Received Message \\ - 1 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 2 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 3 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 4 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 5 & Preamble Detected & Payload Length & CRC Valid & Test + 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Êæé + \end{bfhTabular} + \caption{Benchmark - Idle CPU Load - \SI{1}{\bit\per\second}} +\end{table} + +\section{25\% CPU Load} +The following benchmarks were run with 25\% CPU utilization. The tool \texttt{stress} was used to put a load on the CPU \cite{stress}. + +\subsection{\SI{0.5}{\bit\per\second}} +\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 & - & - & -\\ + \end{bfhTabular} + \caption{Benchmark - 25\% CPU Load - \SI{0.5}{\bit\per\second}} +\end{table} + +\subsection{\SI{1}{\bit\per\second}} +\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 & - & - & - \end{bfhTabular} \caption{Benchmark - 25\% CPU Load - \SI{1}{\bit\per\second}} \end{table} -\subsection{\SI{2}{\bit\per\second}} -\begin{table}[H] - \begin{bfhTabular}{l l l l l} - Run & Preamble Detected & Payload Length & Is CRC Valid & Received Message \\ - 1 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 2 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 3 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 4 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 5 & Preamble Detected & Payload Length & CRC Valid & Test - \end{bfhTabular} - \caption{Benchmark - 25\% CPU Load - \SI{2}{\bit\per\second}} -\end{table} +\subsection{Results} +As one can see in the benchmarks, the most successful configuration was running MagSend with \SI{1}{\bit\per\second} at with an idle CPU followed by \SI{0.5}{\bit\per\second} at an idle CPU. -\subsection{\SI{4}{\bit\per\second}} -\begin{table}[H] - \begin{bfhTabular}{l l l l l} - Run & Preamble Detected & Payload Length & Is CRC Valid & Received Message \\ - 1 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 2 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 3 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 4 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 5 & Preamble Detected & Payload Length & CRC Valid & Test - \end{bfhTabular} - \caption{Benchmark - 25\% CPU Load - \SI{4}{\bit\per\second}} -\end{table} +The benchmarks with 25\% CPU load were mostly failing, with some few ones being able to detect the preamble and one even being able to receive the payload length from the message. There might be a few reasons why the results are like this. The first one is thermal throttling. CPUs produce a lot of heat when under load and thus they get hotter. When they get to hot, they throttle by reducing clock speeds. This process is designed to protect the CPU from overheating \cite{thermalThrottling}. -\section{50\% CPU Load} -\subsection{\SI{1}{\bit\per\second}} -\begin{table}[H] - \begin{bfhTabular}{l l l l l} - Run & Preamble Detected & Payload Length & Is CRC Valid & Received Message \\ - 1 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 2 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 3 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 4 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 5 & Preamble Detected & Payload Length & CRC Valid & Test - \end{bfhTabular} - \caption{Benchmark - 50\% CPU Load - \SI{1}{\bit\per\second}} -\end{table} +The laptop that was used for running the benchmarks, already reaches CPU temperatures of over \SI{90}{\celsius} when only running at around 25\% CPU load (see \autoref{figure:cpu_temperatures}). -\subsection{\SI{2}{\bit\per\second}} -\begin{table}[H] - \begin{bfhTabular}{l l l l l} - Run & Preamble Detected & Payload Length & Is CRC Valid & Received Message \\ - 1 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 2 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 3 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 4 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 5 & Preamble Detected & Payload Length & CRC Valid & Test - \end{bfhTabular} - \caption{Benchmark - 50\% CPU Load - \SI{2}{\bit\per\second}} -\end{table} +\begin{figure}[H] + \fbox{\includegraphics[width=1\textwidth]{benchmarking/cpu_temperatures.png}} + \caption{CPU temperatures under 25\% CPU load} + \label{figure:cpu_temperatures} +\end{figure} -\subsection{\SI{4}{\bit\per\second}} -\begin{table}[H] - \begin{bfhTabular}{l l l l l} - Run & Preamble Detected & Payload Length & Is CRC Valid & Received Message \\ - 1 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 2 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 3 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 4 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 5 & Preamble Detected & Payload Length & CRC Valid & Test - \end{bfhTabular} - \caption{Benchmark - 50\% CPU Load - \SI{4}{\bit\per\second}} -\end{table} +When MagSend then attempts to sent data by putting even more stress on the CPU, the CPU begins to throttle and the resulting CPU loads gets dampened (see \autoref{figure:throttle}). While longer spikes like the preamble at the start of the packet are still visible, the rest of the message is only noise and really be received. -\section{75\% CPU Load} -\subsection{\SI{1}{\bit\per\second}} -\begin{table}[H] - \begin{bfhTabular}{l l l l l} - Run & Preamble Detected & Payload Length & Is CRC Valid & Received Message \\ - 1 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 2 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 3 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 4 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 5 & Preamble Detected & Payload Length & CRC Valid & Test - \end{bfhTabular} - \caption{Benchmark - 75\% CPU Load - \SI{1}{\bit\per\second}} -\end{table} +\begin{figure}[H] + \fbox{\includegraphics[width=1\textwidth]{benchmarking/1bps_25.png}} + \caption{CPU temperatures under 25\% CPU load} + \label{figure:throttle} +\end{figure} -\subsection{\SI{2}{\bit\per\second}} -\begin{table}[H] - \begin{bfhTabular}{l l l l l} - Run & Preamble Detected & Payload Length & Is CRC Valid & Received Message \\ - 1 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 2 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 3 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 4 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 5 & Preamble Detected & Payload Length & CRC Valid & Test - \end{bfhTabular} - \caption{Benchmark - 75\% CPU Load - \SI{2}{\bit\per\second}} -\end{table} - -\subsection{\SI{4}{\bit\per\second}} -\begin{table}[H] - \begin{bfhTabular}{l l l l l} - Run & Preamble Detected & Payload Length & Is CRC Valid & Received Message \\ - 1 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 2 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 3 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 4 & Preamble Detected & Payload Length & CRC Valid & Test\\ - 5 & Preamble Detected & Payload Length & CRC Valid & Test - \end{bfhTabular} - \caption{Benchmark - 75\% CPU Load - \SI{4}{\bit\per\second}} -\end{table} - - -// TODO: Add graphs to each benchmark -// TODO: Power Supply +The other problem with the failing benchmarks is on the receiving side. The interval at which the sensor provides data to the application is not guaranteed and thus introduces some jitter \cite{androidSensorMonitor}. diff --git a/documentation/thesis/content/08_materials_methods.tex b/documentation/thesis/content/08_materials_methods.tex index 5609fc8..01cb9f1 100644 --- a/documentation/thesis/content/08_materials_methods.tex +++ b/documentation/thesis/content/08_materials_methods.tex @@ -1,5 +1,8 @@ \chapter{Materials \& Methods} -* Laptop with Web-Browser capable of Web Workers -* Smartphone with Magnetometer +To develop, test and benchmark MagSend the following devices and software are needed: -// CPU of Laptop and Magnetometer of Smartphone +A laptop, which acts as the sender. This laptop needs to be able to run a modern web browser which supports the Web Workers API (see \autoref{section:webworkers}). The operating system is irrelevant as MagSend is web based. + +An Android smartphone, which acts as the receiver. This phone should run at least Android version 10 to be able to run the MagSend client application. Furthermore it is required that the phone has a magnetometer. Most modern smartphones should have a hall effect sensor for that purpose (see \autoref{section:hallEffectSensor}). + +For developing, the official IDE for Android development, Android Studio \cite{androidStudio} was used. While this is not strictly required to run MagSend, it should be the most convenient way to do so. diff --git a/documentation/thesis/content/09_future_work.tex b/documentation/thesis/content/09_future_work.tex index d5884da..0d2c66b 100644 --- a/documentation/thesis/content/09_future_work.tex +++ b/documentation/thesis/content/09_future_work.tex @@ -1,3 +1,6 @@ \chapter{Future Work} +The goal of this thesis was to research and develop a communication method which uses magnetic induction, while using standard components and devices. -// TODO: Improve robustness, speed, ui and ux, what I'd like to change +The result was a working prototype that allows non-technical users to transmit a message from their laptop to their smartphone wirelessly over with the help of magnetic induction, called MagSend. + +For future improvements surrounding MagSend, the most important one is to enhance the robustness of the system. While the system generally works, there any many cases where the message doesn't get received, the preamble doesn't get detected or the received message is incorrect. Furthermore when the systems gets more robust it might also be possible to increase the transfer speed of MagSend. In the end the user experience and user interface applications can also be improved by giving more feedback and guidance to the user on how to use MagSend. diff --git a/documentation/thesis/content/10_project_management.tex b/documentation/thesis/content/10_project_management.tex index ef71b53..1c025c7 100644 --- a/documentation/thesis/content/10_project_management.tex +++ b/documentation/thesis/content/10_project_management.tex @@ -1,5 +1,57 @@ \chapter{Project Management} + + \section{Project Plan} +\subsection{Initial Plan} +\begin{sidewaysfigure} + \begin{ganttchart}[ + vgrid, + hgrid, + x unit=0.9cm, + y unit chart=0.6cm, + y unit title=0.6cm, % height of title line and gap + title height=1 % use full height for title, leaving no gap + ]{1}{18} + \gantttitle{Project Plan}{18} + \\ + + \gantttitlelist{1,...,18}{1} + \\ + + \gantttitle{September}{2} + \gantttitle{October}{4} + \gantttitle{November}{5} + \gantttitle{December}{4} + \gantttitle{January}{3} + \\ + + \ganttbar{Prepare Thesis Document}{1}{2} \\ + \ganttbar{Create Project Plan}{1}{2} \\ + \ganttbar{Research Other Solutions}{1}{2} \\ + \ganttbar{Experiment with Hardware}{1}{2} \\ + \ganttbar{Write Introduction}{2}{2} \\ + \ganttbar{Define Use Cases \& Personas}{3}{3} \\ + \ganttbar{Define Requirements}{3}{4} \\ + \ganttbar{Plan Solution}{5}{6} \\ + \ganttbar{Document Solution}{5}{6} \\ + \ganttbar{Define Test Cases}{6}{6} \\ + \ganttbar{Prepare Hardware for Prototype}{7}{7} \\ + \ganttbar{Create Prototype for Sender}{7}{9} \\ + \ganttbar{Create Prototype for Receiver}{8}{10} \\ + \ganttbar{Testing}{11}{12} \\ + \ganttbar{Benchmarking}{11}{12} \\ + \ganttbar{Document Materials \& Methods}{13}{13} \\ + \ganttbar{Document Future Work}{13}{13} \\ + \ganttbar{Create Abstract}{14}{14} \\ + \ganttbar{Create Poster}{14}{15} \\ + \ganttbar{Create Movie}{16}{16} \\ + \ganttbar{Finish Thesis Report}{16}{17} \\ + \ganttbar{Prepare Presentations}{17}{18} + \end{ganttchart} + \caption{Project Plan} +\end{sidewaysfigure} + +\subsection{Actual Plan} \begin{sidewaysfigure} \begin{ganttchart}[ vgrid, diff --git a/documentation/thesis/thesis.bib b/documentation/thesis/thesis.bib index 167009d..76ae4b3 100644 --- a/documentation/thesis/thesis.bib +++ b/documentation/thesis/thesis.bib @@ -101,6 +101,14 @@ urldate = "2022-01-04" } +@online {AndroidSensorMonitor, + author = {{Android Open Source Project}}, + title = {{Monitoring Sensor Events}}, + url = "https://developer.android.com/guide/topics/sensors/sensors_overview.html#sensors-monitor", + year = 2022, + urldate = "2022-01-11" +} + @online {crcGuide, author = "Ross N. Williams", title = {{A Painless Guide to CRC Error Detection Algorithms}}, @@ -172,3 +180,25 @@ year = 2020, urldate = "2022-01-10", } + +@online{stress, + author = "Amos Waterland", + title = {{stress(1)}}, + url = "https://man.archlinux.org/man/community/stress/stress.1.en", + year = 2021, + urldate = "2022-01-11", +} + +@online{thermalThrottling, + author = "Tim Brookes", + title = {{What Is Thermal Throttling?}}, + url = "https://www.howtogeek.com/739732/what-is-thermal-throttling/", + year = 2021, + urldate = "2022-01-11", +} + +@online{androidStudio, + title = {{Android Studio}}, + url = "https://developer.android.com/studio", + urldate = "2022-01-11", +} diff --git a/documentation/thesis/thesis.tex b/documentation/thesis/thesis.tex index 9057e47..46e4817 100644 --- a/documentation/thesis/thesis.tex +++ b/documentation/thesis/thesis.tex @@ -14,6 +14,8 @@ pdfusetitle, ]{hyperref} +\usepackage{pdfpages} + \usepackage{bytefield} \usepackage{tabularray} @@ -84,6 +86,8 @@ \input{09_future_work.tex} \input{10_project_management.tex} +\declarationOfAuthorship + \cleardoublepage \begingroup \raggedright @@ -99,5 +103,10 @@ \listoftables \appendix -\chapter{First appendix Chapter} +\chapter{Task Description} +\begin{figure} + \centering + \includepdf[pages=-, scale=.75, offset=-30 -50]{appendix/task_description.pdf} +\end{figure} + \end{document}