From: Mart Lubbers Date: Sun, 4 Jun 2017 10:34:58 +0000 (+0200) Subject: elaborate on device storage and prepare device communication X-Git-Tag: hand-in~100 X-Git-Url: https://git.martlubbers.net/?a=commitdiff_plain;h=e7aa975e1af0007783d9a100ca83ddd5c25d284b;p=msc-thesis1617.git elaborate on device storage and prepare device communication --- diff --git a/conclusion.tex b/conclusion.tex index de3da6c..bde2501 100644 --- a/conclusion.tex +++ b/conclusion.tex @@ -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 diff --git a/introduction.tex b/introduction.tex index 7ea1d08..1f4fc9a 100644 --- a/introduction.tex +++ b/introduction.tex @@ -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 diff --git a/methods.top.tex b/methods.top.tex index 6d47dfc..e29f16d 100644 --- a/methods.top.tex +++ b/methods.top.tex @@ -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 diff --git a/results.arch.tex b/results.arch.tex index e33dc47..626f0a4 100644 --- a/results.arch.tex +++ b/results.arch.tex @@ -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} diff --git a/thesis.tex b/thesis.tex index ceb2fb2..7a8e5fa 100644 --- a/thesis.tex +++ b/thesis.tex @@ -46,10 +46,10 @@ \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}