elaborate on communication
authorMart Lubbers <mart@martlubbers.net>
Sun, 11 Jun 2017 08:59:26 +0000 (10:59 +0200)
committerMart Lubbers <mart@martlubbers.net>
Sun, 11 Jun 2017 08:59:26 +0000 (10:59 +0200)
.gitignore
Makefile
results.arch.tex
thesis.pre
thesis.tex

index d6686a7..48787c6 100644 (file)
@@ -10,6 +10,9 @@ img/fig-*
 *.glg
 *.glo
 *.gls
 *.glg
 *.glo
 *.gls
+*.idx
+*.ilg
+*.ind
 *.ist
 *.loa
 *.lof
 *.ist
 *.loa
 *.lof
index 410cb11..257238f 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -5,6 +5,7 @@ BIBTEX?=bibtex
 BIBTEXFLAGS:=
 MAKEGL?=makeglossaries
 MAKEGLFLAGS?=
 BIBTEXFLAGS:=
 MAKEGL?=makeglossaries
 MAKEGLFLAGS?=
+MAKEINDEX?=makeindex
 LATEXFLAGS:=-file-line-error -halt-on-error #-no-shell-escape
 
 FIGURES:=$(patsubst fig/%.dot,img/%.png,$(wildcard fig/*.dot))
 LATEXFLAGS:=-file-line-error -halt-on-error #-no-shell-escape
 
 FIGURES:=$(patsubst fig/%.dot,img/%.png,$(wildcard fig/*.dot))
@@ -27,6 +28,7 @@ all: $(DOCS:%=%.pdf)
        $(LATEX) $(LATEXFLAGS) $<
        if $(GREP) -q '^\\bibdata{' $(basename $<).aux; then $(BIBTEX) $(BIBTEXFLAGS) $(basename $<); fi
        if $(GREP) -q '\@istfilename' $(basename $<).aux; then $(MAKEGL) $(MAKEGLFLAGS) $(basename $<); fi
        $(LATEX) $(LATEXFLAGS) $<
        if $(GREP) -q '^\\bibdata{' $(basename $<).aux; then $(BIBTEX) $(BIBTEXFLAGS) $(basename $<); fi
        if $(GREP) -q '\@istfilename' $(basename $<).aux; then $(MAKEGL) $(MAKEGLFLAGS) $(basename $<); fi
+       if [ -f $(basename $<).idx ]; then $(MAKEINDEX) $(basename $<); fi
        $(LATEX) $(LATEXFLAGS) $< | tee $@
 
 img/%.png: fig/%.dot
        $(LATEX) $(LATEXFLAGS) $< | tee $@
 
 img/%.png: fig/%.dot
index 24abb0f..c4c2b22 100644 (file)
@@ -1,4 +1,4 @@
-\section{Devices}
+/section{Devices}
 The client code 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
 and implement (part of) the device specific interface. The shared codebase only
 The client code 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
 and implement (part of) the device specific interface. The shared codebase only
@@ -152,6 +152,7 @@ the server with their device specification. This is detected by the processing
 function and the record is updated accordingly.
 
 \begin{figure}[H]
 function and the record is updated accordingly.
 
 \begin{figure}[H]
+       \centering
        \begin{sequencediagram}
                \newthread{s}{Server}
                \newinst[4]{c}{Client}
        \begin{sequencediagram}
                \newthread{s}{Server}
                \newinst[4]{c}{Client}
@@ -161,6 +162,63 @@ function and the record is updated accordingly.
        \caption{Connect a device}\label{fig:handshake}
 \end{figure}
 
        \caption{Connect a device}\label{fig:handshake}
 \end{figure}
 
-\subsection{\glspl{Task}}
-\subsection{\glspl{SDS}}
-\todo{Connectie, hoe gaat dat in zijn werk, andere berichtenuitwisselingen}
+\subsection{\glspl{Task} \& \glspl{SDS}}
+When a \gls{Task} is sent to the device it is added to the device record
+without an identifier. The actual identifier is added to the record when the
+acknowledgement of the task by the device is received. The connection diagram
+is shown in Figure~\ref{fig:tasksend}.
+
+\begin{figure}[H]
+       \centering
+       \begin{sequencediagram}
+               \newthread{s}{Server}
+               \newinst[4]{c}{Client}
+               \begin{call}{s}{MTSDS}{c}{MTSDSAck}
+               \end{call}
+               \begin{call}{s}{MTTask}{c}{MTTaskAck}
+               \end{call}
+       \end{sequencediagram}
+       \caption{Sending a \gls{Task} to a device}\label{fig:tasksend}
+\end{figure}
+
+The function for sending a task to the device is shown in
+Listing~\ref{lst:sendtask}. First the task is compiled into messages. The
+details of the compilation process are given in Section~\ref{sec:compiler}.
+The new shares that were made during compilation are added to the deviceshares
+that were made during the compilation are merged with the existing shares on
+the device. Furthermore the messages are placed in the channel share of the
+device. This will result in sending the actual \gls{SDS} and \gls{Task}
+specifications to the device. A \gls{Task} record is created with the
+identifier $-1$ to denote a \gls{Task} not yet acknowledged. Finally the device
+itself is updated with the new state and with the new \gls{Task}. When the
+device returns an acknowledgement the \gls{Task} is updated accordingly.
+
+\begin{lstlisting}[label={lst:sendtask},%
+       caption={Sending a \gls{Task} to a device}]
+makeTask :: String Int -> Task MTaskTask
+makeTask name ident = get currentDateTime @ \dt->{MTaskTask | name=name,ident=ident,dateAdded=dt}
+
+makeShare :: String Int BCValue -> MTaskShare
+makeShare withTask identifier value = {MTaskShare |withTask=[withTask], identifier=identifier,value=value}
+
+sendTaskToDevice :: String (Main (ByteCode a Stmt)) (MTaskDevice, MTaskInterval) -> Task [MTaskDevice]
+sendTaskToDevice wta mTask (device, timeout)
+# (msgs, newState) = toMessages timeout mTask device.deviceState
+# shares = [makeShare wta sdsi sdsval\\{sdsi,sdsval}<-newState.sdss, (MTSds sdsi` _)<-msgs | sdsi == sdsi`] 
+= updateShares device ((++) shares)
+       >>| sendMessages msgs device
+       >>| makeTask wta -1
+       >>= withDevices device o addTaskUpState newState
+       where
+               addTaskUpState :: BCState MTaskTask MTaskDevice -> MTaskDevice
+               addTaskUpState st task device = {MTaskDevice | device &
+                       deviceState=st, deviceTasks=[task:device.deviceTasks]}
+\end{lstlisting}
+
+\subsection{Miscellaneous Messages}
+There exists one special type of message that is sent to the device only when
+it needs to reboot. When the server wants to stop the bond with the device it
+sends the \CI{MTShutdown} message. The device will then clear his memory, thus
+losing all the \glspl{SDS} and \glspl{Task} that were stored and reset itself.
+Shortly after the shutdown message a new server can connect to the device
+because the device is back in listening mode.
index ffba314..5bce7f7 100644 (file)
@@ -2,6 +2,7 @@
 
 \usepackage[british]{babel}
 
 
 \usepackage[british]{babel}
 
+\usepackage{makeidx}                 % Index
 \usepackage{geometry}                % Papersize
 \usepackage[titletoc]{appendix}      % Appendices
 \usepackage{hyperref}                % Hyperlinks
 \usepackage{geometry}                % Papersize
 \usepackage[titletoc]{appendix}      % Appendices
 \usepackage{hyperref}                % Hyperlinks
@@ -20,6 +21,8 @@
 
 \usetikzlibrary{arrows,shadows}
 
 
 \usetikzlibrary{arrows,shadows}
 
+\makeindex%
+
 \graphicspath{{img/}}
 
 \urlstyle{tt}
 \graphicspath{{img/}}
 
 \urlstyle{tt}
index 9059d4c..d6d6e71 100644 (file)
 \addcontentsline{toc}{chapter}{Lists of \ldots}
 \begingroup
 \let\clearpage\relax
 \addcontentsline{toc}{chapter}{Lists of \ldots}
 \begingroup
 \let\clearpage\relax
+\let\cleardoublepage\relax
 \listoffigures%
 \listoftables%
 \lstlistoflistings%
 \listofalgorithms%
 \endgroup
 
 \listoffigures%
 \listoftables%
 \lstlistoflistings%
 \listofalgorithms%
 \endgroup
 
+\printindex
+
 \end{document}
 \end{document}