elaborate on device storage and prepare device communication
authorMart Lubbers <mart@martlubbers.net>
Sun, 4 Jun 2017 10:34:58 +0000 (12:34 +0200)
committerMart Lubbers <mart@martlubbers.net>
Sun, 4 Jun 2017 10:34:58 +0000 (12:34 +0200)
conclusion.tex
introduction.tex
methods.top.tex
results.arch.tex
thesis.tex

index de3da6c..bde2501 100644 (file)
@@ -56,6 +56,8 @@ of the client software. However, it could be implemented as a compile-time
 option and exchanged during the handshake so that the server knows the
 multithreading capabilities of the client.
 
+\todo{Parametric lenses on devices share?}
+
 \subsection{Resources}
 Resource analysis during compilation can be useful to determine if an
 \gls{mTask}-\gls{Task} is suitable for a specific device. If the device does
index 7ea1d08..1f4fc9a 100644 (file)
@@ -75,9 +75,8 @@ Chapter~\ref{chp:arch} shows the architecture used for \gls{IoT}-devices that
 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
index 6d47dfc..e29f16d 100644 (file)
@@ -118,7 +118,7 @@ Listing~\ref{lst:combinators}.
 (-&&-) infixr 4 :: (Task a) (Task b)              -> Task (a,b) | iTask a & iTask b
 \end{lstlisting}
 
-\section{\acrlongpl{SDS}}
+\section{Shared Data Sources}
 \Glspl{SDS} are an abstraction over resources that are available in the world
 or in the \gls{iTasks} system. The shared data can be a file on disk, it can be
 the time, a random integer or just some data stored in memory. The actual
index e33dc47..626f0a4 100644 (file)
@@ -50,18 +50,28 @@ of. The exact specification is listed in Listing~\ref{lst:devicespec}
        }
 \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)
@@ -79,6 +89,11 @@ connect it will set the \CI{deviceError} field to notify the user.
                , 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}
index ceb2fb2..7a8e5fa 100644 (file)
 \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}
@@ -61,7 +61,7 @@
 \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}