\documentclass[11pt,ngerman]{beamer}

%\usetheme{Antibes}
\usetheme{Bergen}
\usecolortheme{seagull}

\usepackage{listings}
\usepackage{color}
\lstset{
	language=c++,
	columns=flexible,
	basicstyle={\small\ttfamily},
	keepspaces=true,
	breaklines=true,
	breakatwhitespace=true,
}

\begin{document}
	
\begin{frame}
\title{Implement Updates \textit{Over the Air} for \textit{ESP8266} microcontrollers}
\author{Dustin Frisch\\ C/C++ for Embedded Systems and Physical Computing\\ Angewandte 	Informatik\\ University of Applied Sciences Fulda\\ \texttt{dustin.frisch@informatik.hs-fulda.de}}
\date{\today}
\titlepage
\end{frame}


\begin{frame}
\frametitle{About the Project}
\framesubtitle{ESPer}
\centering{\includegraphics[width=\columnwidth]{esp-01s.jpg}}
\end{frame}

\begin{frame}
\frametitle{About the Project}
\framesubtitle{Magrathea Laboratories e.V.}
\centering{\includegraphics[scale=0.04]{maglab.png}}
\end{frame}

\begin{frame}
\frametitle{Updates}
\begin{itemize}
	\item Changed requirement or environment
	\item Closing security issues
	\item Fixing bugs
	\item New Features
\end{itemize}

\centering{Often possible without hardware changes.}
\end{frame}

\begin{frame}
\frametitle{\textit{Over the Air (OTA)}}
\centering{Reduces maintenance cost.}
\end{frame}

\begin{frame}
\frametitle{Requirements}
\begin{itemize}
	\item Automatic updates \textit{OTA} without administrative interaction
	\item Insusceptible to errors of any kind
	\item Downloading side-by-side with payload traffic
	\item Maximal uptime and minimal network load
	\item Maintenance and monitoring
	\item Categorizing devices by task-specific hardware
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Implementation}
\framesubtitle{Update mechanism}
\begin{columns}
\begin{column}{0.6\textwidth}
\begin{enumerate}
	\item Download \texttt{.version} file and compare
	\item Download firmware binary for \emph{other} slot
	\item Reconfigure \textit{rBoot} bootloader
	\item Restart
\end{enumerate}
\end{column}
\begin{column}{0.4\textwidth}
	\centering{\includegraphics[height=0.75\textheight]{flash_layout.pdf}}
\end{column}
\end{columns}
\end{frame}

\begin{frame}[fragile]
\frametitle{Implementation}
\framesubtitle{Supporting multiple devices}
\begin{lstlisting}
#include "Device.h"
#include "features/Socket.h"

Device device:

constexpr const char SOCKET_NAME[] = "socket";
constexpr const uint16_t SOCKET_GPIO = 12;
OnOffFeature<SOCKET_NAME, SOCKET_GPIO, false, 1> socket(&device);

Device* getDevice() { return &device; }
\end{lstlisting}
\end{frame}

\begin{frame}
\frametitle{Implementation}
\framesubtitle{Supporting multiple devices}
\centering{\texttt{make socket/flash} \\ to build and flash.}
\end{frame}

\begin{frame}
\frametitle{Implementation}
\framesubtitle{Automatic deployment and roll-out}
\begin{itemize}
	\item \texttt{git commit}
	\item \textit{drone} builds it
	\item \texttt{scp *.version *.rom\{0,1\}} to deployment server
	\item Served by \textit{nginx}
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Conclusion}
\centering{It works!}
\end{frame}

\begin{frame}
\centering{\url{https://git.maglab.space/esper/esper}}

\vspace{20mm}

\centering{\large{Thank you for your attention.}}
\end{frame}

\end{document}}