\section*{General Message Format}
Messages are delimited by newlines to make processing by line based devices
easier. Message exchanges have a \emph{Request} and \emph{Response} header.
The \emph{Request} header means that the server is sending to the client. The
\emph{Response} header means that the client is sending to the server. In some
cases either the \emph{Request} or \emph{Response} is empty. This means that
the message is not acknowledged or responded upon. Multibyte values are
interpreted as \gls{MSB} first integers.

\section*{Handshake}
\begin{table}[H]
	\centering
	\begin{tabular}{ll}
		\toprule
		\multicolumn{2}{c}{Request}\\
		byte & value\\
		\midrule
		1 & \texttt{'c'}\\
		\midrule\midrule
		\multicolumn{2}{c}{Response}\\
		byte & value\\
		\midrule
		1 & \texttt{'c'}\\
		2 & Peripheral bitmask\\
		3,4 & Bytes of memory\\
		5,6 & Size of the stack\\
		7 & Number of analog pins\\
		8 & Number of digital pins\\
		\bottomrule
	\end{tabular}
	\caption{Send a device specification}
\end{table}

\newpage
\section*{\gls{mTask}-\glspl{Task}}
\begin{table}[H]
	\centering
	\begin{subfigure}[b]{.48\textwidth}
		\centering
		\begin{tabular}{ll}
			\toprule
			\multicolumn{2}{c}{Request}\\
			byte & value\\
			\midrule
			1 & \texttt{'t'}\\
			2,3 & interval or interrupt\\
			4,5 & length ($n$)\\
			6 to $n$+6 & bytecode\\
			\midrule\midrule
			\multicolumn{2}{c}{Response}\\
			byte & value\\
			\midrule
			1 & \texttt{'t'}\\
			2,3 & \gls{Task} id\\
			\bottomrule
		\end{tabular}
		\caption{Send a \gls{Task}}
	\end{subfigure}
	\quad%
	\begin{subfigure}[b]{.48\textwidth}
		\centering
		\begin{tabular}{ll}
			\toprule
			\multicolumn{2}{c}{Request}\\
			byte & meaning\\
			\midrule
			1 & \texttt{'d'}\\
			2,3 & \gls{Task} id\\
			\midrule\midrule
			\multicolumn{2}{c}{Response}\\
			byte & value\\
			\midrule
			1 & \texttt{'d'}\\
			2,3 & \gls{Task} id\\
			\bottomrule
		\end{tabular}
		\caption{Delete a \gls{Task}}
	\end{subfigure}
	\caption{Message protocol for exchanging \glspl{Task}}
\end{table}

\section*{\glspl{SDS}}
\begin{table}[H]
	\centering
	\begin{subfigure}[b]{.23\textwidth}
		\centering
		\begin{tabular}{ll}
			\toprule
			\multicolumn{2}{c}{Request}\\
			byte & meaning\\
			\midrule
			1 & \texttt{'s'}\\
			2,3 & id\\
			4,5 & value\\
			\midrule\midrule
			\multicolumn{2}{c}{Response}\\
			byte & meaning\\
			\midrule
			1 & \texttt{'s'}\\
			2,3 & id\\
			\bottomrule
		\end{tabular}
		\caption{Send an \gls{SDS} specification}
	\end{subfigure}
	\quad%
	\begin{subfigure}[b]{.23\textwidth}
		\centering
		\begin{tabular}{ll}
			\toprule
			\multicolumn{2}{c}{Response}\\
			byte & value\\
			\midrule
			1 & \texttt{'a'}\\
			2,3 & SDS id\\
			\midrule\midrule
			\multicolumn{2}{c}{Request}\\
			byte & value\\
			\midrule
			1 & \texttt{'a'}\\
			2,3 & SDS id\\
			\bottomrule
		\end{tabular}
		\caption{Delete an \gls{SDS}\\~}
	\end{subfigure}
	\quad%
	\begin{subfigure}[b]{.23\textwidth}
		\centering
		\begin{tabular}{ll}
			\toprule
			\multicolumn{2}{c}{Request}\\
			byte & meaning\\
			\midrule
			1 & \texttt{'u'}\\
			2,3 & sdsid\\
			4,5 & value\\
			\midrule\midrule
			\multicolumn{2}{c}{Response}\\
			\bottomrule
		\end{tabular}
		\caption{\gls{SDS} update\\~}
	\end{subfigure}
	\quad%
	\begin{subfigure}[b]{.23\textwidth}
		\centering
		\begin{tabular}{ll}
			\toprule
			\multicolumn{2}{c}{Response}\\
			\midrule\midrule
			\multicolumn{2}{c}{Request}\\
			byte & value\\
			\midrule
			1 & \texttt{'p'}\\
			2,3 & SDS id\\
			4,5 & value\\
			\bottomrule
		\end{tabular}
		\caption{\gls{SDS} publish\\~}
	\end{subfigure}
	\caption{Message protocol for exchanging \glspl{SDS}}
\end{table}
