@ -1,12 +1,24 @@
\documentclass [11pt,ngerman] { beamer}
\usetheme { AnnArbor}
% \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 ESP8266 microcontrollers}
\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
@ -15,41 +27,108 @@
\begin { frame}
\frametitle { About the Project}
\framesubtitle { ESPer}
\centering { \includegraphics [width=\columnwidth] { esp-01s.jpg} }
\end { frame}
\begin { frame}
\frametitle { Why Updates?}
\frametitle { About the Project}
\framesubtitle { Magrathea Laboratories e.V.}
\centering { \includegraphics [scale=0.04] { maglab.png} }
\end { frame}
\begin { frame}
\frametitle { Why \textit { Over the Air} ?}
\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 { Implementation - Update mechanism}
\frametitle { \textit { Over the Air (OTA)} }
\centering { Reduces maintenance cost.}
\end { frame}
\begin { frame}
\frametitle { Implementation - Supporting multiple devices}
\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 - Automatic deployment and roll-out}
\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}
\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} }