The \iTasks{} server can send two types of messages. The first and most
important type is sending a new task to the server. Tasks are dynamically sent
to the microcontroller, this means that the engine in itself does not do
anything without it getting a task first from the server. When a task is sent
the microcontroller acknowledges the message by sending the associated task
identification number back to the for the server to use in the future.
The second task is sending SDS specifications to the engine to tell the engine
what type of SDS will be used in the tasks so that it can be allocated. The
message structure for sending a task is shown in Table~\ref{tbl:tasksend} and
the message of sending an SDS specification is shown in
Table~\ref{tbl:sdsspec}.
\begin{table}[ht]
	\centering
	\begin{tabular}{ll}
		\toprule
		Bytes & Description\\
		\midrule
		\multicolumn{2}{c}{\textbf{Request}}\\
		$1$ & Task send code \verb#'t'#\\
		$2-3$ & Frequency in number of milliseconds as a 16-bit integer\\
		$4-5$ & Length of the bytecode 16-bit integer\\
		$n$ & Bytecode for the task\\
		\midrule
		\multicolumn{2}{c}{\textbf{Response}}\\
		$1$ & Task numeric identification\\
		\bottomrule
	\end{tabular}
	\caption{Message format for sending a task}\label{tbl:tasksend}
\end{table}

\begin{table}[ht]
	\centering
	\begin{tabular}{ll}
		\toprule
		Bytes & Description\\
		\midrule
		\multicolumn{2}{c}{\textbf{Request}}\\
		$1$ & SDS send code \verb#'s'#\\
		$2-3$ & SDS length as a 16-bit integer\\
		$2-3$ & Value of the SDS identifier\\
		\midrule
		\multicolumn{2}{c}{\textbf{Response}}\\
		$1$ & SDS numeric identification\\
		\bottomrule
	\end{tabular}
	\caption{Message format for sending an SDS specification}\label{tbl:sdsspec}
\end{table}
