The server part of the system is written in \gls{iTasks}. Functions for
-managing devices, \glspl{Task} and \glspl{SDS} are available. Furthermore, an
+managing are added. This includes functionality for adding, removing and
+updating devices. Functions for sending \glspl{Task} and \glspl{SDS} to devices
+and functionality to remove them.
+Furthermore, an
interactive web application has been created that provides an interactive
-management console for the \gls{mTask} system. This interface provides
-functionality to list \glspl{SDS}, add and remove \glspl{Task}, administrate
-devices and view the state of the system.
+management console for these manageming tasks. This interface provides
+functionality to show \glspl{Task} and \glspl{SDS} and their according status.
+It also provides the user with a library of example \gls{mTask}-\glspl{Task}
+that can be sent interactively to the device.
\subsection{Device Storage}
Everything that a device encompasses is stored in the \CI{MTaskDevice} record
asynchronously. This implies that the programmer only needs to keep hold of
the reference to the device and not the actual device record.
-\begin{lstlisting}[caption={Device type},label={lst:mtaskdevice}]
+\begin{lstlisting}[language=Clean,caption={Device type},label={lst:mtaskdevice}]
:: Channels :== ([MTaskMSGRecv], [MTaskMSGSend], Bool)
-:: MTaskDeviceSpec = ... // Also explained in later sections
-:: MTaskMSGRecv = ... // Message format, explained in later sections
-:: MTaskMSGSend = ... // Also explained in later sections
+:: MTaskDeviceSpec = ... // Explained in a later section
+:: MTaskMSGRecv = ... // Message format, explained in a later section
+:: MTaskMSGSend = ... // Also explained in a later section
:: MTaskResource
= TCPDevice TCPSettings
| SerialDevice TTYSettings
notified. In practice, the reader only needs to be notified when the parameters
are exactly the same.
-\begin{lstlisting}[label={lst:actualdev},%
+\begin{lstlisting}[language=Clean,label={lst:actualdev},%
caption={Device \gls{SDS}}]
($<) :: a (f a) -> (f b)
($<) a fb = fmap (const a) fb
\gls{SDS} will only be notified if a device is added or removed. The actual
code is as follows:
-\begin{lstlisting}[caption={Global \gls{SDS}}]
+\begin{lstlisting}[language=Clean,caption={Global \gls{SDS}}]
deviceStoreNP :: Shared [MTaskDevice]
deviceStoreNP = sdsFocus Nothing deviceStore
\end{lstlisting}
be notified if the device itself changed. It will not be notified when only a
single \gls{SDS} on the device changes. The implementation is as follows:
-\begin{lstlisting}[caption={Local \gls{SDS}}]
+\begin{lstlisting}[language=Clean,caption={Local \gls{SDS}}]
deviceShare :: MTaskDevice -> Shared MTaskDevice
deviceShare d = mapReadWriteError
( \ds->case find ((==)d) ds of
a \gls{Task} writes to this \gls{SDS}, the global \gls{SDS} will know this
through the parameter and propagate the value to the device.
-\begin{lstlisting}[caption={Local \gls{SDS}}]
+\begin{lstlisting}[language=Clean,caption={Local \gls{SDS}}]
shareShare :: MTaskDevice MTaskShare -> Shared BCValue
shareShare dev share = sdsFocus ()
$ mapReadWriteError (read, write)