\section{Overview \& Terminology}
The goal of the architecture is to facilitate an ecosystem in which an
\gls{iTasks}-system can add, change and remove devices at runtime. Moreover,
-the \gls{iTasks}-system can send \glspl{mTask}, compiled at runtime to
-bytecode, to the device. The device runs an interpreter which can execute the
-\gls{Task}'s bytecode. Devices are persistent during reboots of the
+the \gls{iTasks}-system can send \glspl{mTask} --- compiled at runtime to
+bytecode --- to the device. The device runs an interpreter which can execute
+the \gls{Task}'s bytecode. Devices are persistent during reboots of the
\gls{iTasks}-system. The methods of interacting with \glspl{mTask} is analogous
to interacting with \gls{iTasks}-\glspl{Task} and programmers can access the
\glspl{SDS} made for a device in the same way as a regular \glspl{SDS}. The
with the server and interprets the \glspl{Task}.
\end{itemize}
-
\section{Devices}
The engine for the devices is compiled from one codebase. For a device to
be eligible for \glspl{mTask}, it must be able to compile the shared codebase
the device software.
\begin{itemize}
\item \texttt{POSIX} compatible systems
-
+
This includes systems running \emph{Linux} and \emph{MacOS}.
\item \texttt{STM32} family microcontrollers supported by \texttt{ChibiOS}.
This is tested in particular on the \texttt{STM32f7x} series \gls{ARM}
development board.
\item Microcontrollers programmable by the \gls{Arduino} \gls{IDE}.\\
-
+
This does not only include \gls{Arduino} compatible boards but also
other boards capable of running \gls{Arduino} code. The code
has been found working on the \texttt{ESP8266} powered \emph{NodeMCU}.
the server will send a request for specification. The client will serialize his
specification and send it to the server so that the server knows what the
client is capable of. The exact specification is shown in
-Listing~\ref{lst:devicespec}
+Listing~\ref{lst:devicespec} and stores the peripheral availability, the memory
+available for storing \glspl{Task} and \glspl{SDS} and the size of the stack.
\begin{lstlisting}[label={lst:devicespec},
caption={Device specification for \glspl{mTask}}]
, haveAio :: Bool
, haveDio :: Bool
, bytesMemory :: Int
+ , stackSize :: Int
+ , aPins :: Int
+ , dPins :: Int
}
\end{lstlisting}