are a part of the new \gls{mTask}-system.
Chapter~\ref{chp:mtaskcont} shows the extension added to the
\gls{mTask}-\gls{EDSL} that were needed to make the system function.
-
-\todo{Vul aan}
-
+Chapter~\ref{chp:itasksint} shows the integration with \gls{iTasks} that was
+built to realise the system.
Chapter~\ref{chp:conclusion} concludes by answering the research questions
and discusses future research.
Appendix~\ref{app:communication-protocol} shows the concrete protocol used for
}
\end{lstlisting}
-\section{Communication}
-The communication to and fro a device runs via a single \gls{SDS}. Every
-device has a specific resource that is used to connect to the device. The
-current system supports connecting devices via a serial connection and via a
-\gls{TCP} connection. Every device has the type \CI{MTaskDevice} and which
-is listed in Listing~\ref{lst:mtaskdevice}. When a device is added, a background
-\gls{Task} is started that runs the \CI{synFun}. The \CI{synFun} is the task that
-synchronizes the channel \gls{SDS} with the actual device. For the \gls{TCP}
-device this is a simple \CI{tcpconnect}. The \CI{TaskId} of the background task
-is saved to be able to stop the task in the future. When the task is unable to
-connect it will set the \CI{deviceError} field to notify the user.
-\todo{netter maken}
+\section{Device Storage}
+All devices available in the system are stored in a big \gls{SDS} that contains
+a list of \CI{MTaskDevice}s. The exact specification is listed in
+Listing~\ref{lst:mtaskdevice} with the accompanying classes and types.
+
+The \CI{deviceResource} component of the record must implement the
+\CI{MTaskDuplex} interface that provides a function that launches a task used
+for synchronizing the channels. The \CI{deviceTask} stores the \gls{Task}-id
+for this \gls{Task} when active so that it can be checked upon. This top-level
+task has the duty to report set the \CI{deviceError} field whenever an error
+occurs. All communication goes via these channels. If the system wants to send
+a message to the device it just puts it in the channels. Messages sent from the
+client to the server are also placed in there. In the case of the \gls{TCP}
+device type the \gls{Task} is just a simple wrapper around the existing
+\CI{tcpconnect} function in \gls{iTasks}. In case of the serial device type
+it uses the newly developed serial port library of \gls{Clean}\footnote{\url{%
+https://gitlab.science.ru.nl/mlubbers/CleanSerial}}.
+
+Besides all the communication information the record also keeps track of the
+\glspl{Task} currently on the device and the according \glspl{SDS}. Finally it
+stores the specification of the device that is received when connecting.
+All of this is listed in Listing~\ref{lst:mtaskdevice}.
\begin{lstlisting}[language=Clean,caption={Device type},label={lst:mtaskdevice}]
:: Channels :== ([MTaskMSGRecv], [MTaskMSGSend], Bool)
, deviceShares :: [MTaskShare]
}
+channels :: MTaskDevice -> Shared Channels
+
class MTaskDuplex a where
synFun :: a (Shared Channels) -> Task ()
\end{lstlisting}
+
+\section{Communication}
+\todo{Connectie, hoe gaat dat in zijn werk}
\chapter{Introduction}\label{chp:introduction}
\input{introduction}
-\chapter{\acrlong{TOP}}\label{chp:top}
+\chapter{Task Oriented Programming}\label{chp:top}
\input{methods.top}
-\chapter{\acrlongpl{EDSL}}\label{chp:dsl}
+\chapter{Embedded Domain Specific Language}\label{chp:dsl}
\input{methods.dsl}
\chapter{mTask}\label{chp:mtask}
\chapter{mTask continued}\label{chp:mtaskcont}
\input{results.mtask}
-\chapter{iTasks integration}\label{chp:mtaskcont}
+\chapter{iTasks integration}\label{chp:itasksint}
\input{results.itasks}
\chapter{Conclusion \& Discussion}\label{chp:conclusion}