elaborate on comm
[msc-thesis1617.git] / arch.communication.tex
index 4585a06..1e9b4b6 100644 (file)
@@ -2,8 +2,8 @@ The communication from the server to the client and vice versa is just a
 character stream containing encoded \gls{mTask} messages. The \CI{synFun}
 belonging to the device is responsible for sending the content in the left
 channel and putting received messages in the right channel. Moreover, the
-boolean value should be set to \CI{True} when the connection is terminated. The
-specific encoding of the messages is visible in
+boolean flag in the channel type should be set to \CI{True} when the connection
+is terminated. The specific encoding of the messages is visible in
 Appendix~\ref{app:communication-protocol}. The type holding the messages is
 shown in Listing~\ref{lst:avmsg}. Detailed explanation about the message types
 and according actions will be given in the following subsections.
@@ -26,6 +26,31 @@ and according actions will be given in the following subsections.
 :: MTaskInterval = OneShot | OnInterval Int | OnInterrupt Int
 \end{lstlisting}
 
+\subsection{Device Specification}
+The server stores a description for every device available in a record type.
+From the macro settings in the client --- in the interface file---  a profile
+is created that describes the specification of the device. When the connection
+between the server and a client is established, the server will send a request
+for specification. The client serializes its specification and send it to the
+server so that the server knows what the client is capable of. The exact
+specification is shown in Listing~\ref{lst:devicespec} and stores the
+peripheral availability, the memory available for storing \glspl{Task} and
+\glspl{SDS} and the size of the stack. Not all peripheral flags are shown for
+brevity.
+
+\begin{lstlisting}[label={lst:devicespec},
+       caption={Device specification for \gls{mTask}-\glspl{Task}}]
+:: MTaskDeviceSpec =
+       { haveLed     :: Bool
+       , haveLCD     :: Bool
+       , have...
+       , bytesMemory :: Int
+       , stackSize   :: Int
+       , aPins       :: Int
+       , dPins       :: Int
+       }
+\end{lstlisting}
+
 \subsection{Add a device}
 A device can be added by filling in the \CI{MTaskDevice} record as much as
 possible and running the \CI{connectDevice} function. This function grabs the
@@ -95,7 +120,7 @@ channel \gls{SDS} of the device. This will result in sending the actual
 \gls{SDS} specification 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}.  After waiting for the acknowledgement the device
+and with the new \gls{Task}. After waiting for the acknowledgement the device
 is updated again and the \gls{Task} returns.
 
 \begin{lstlisting}[label={lst:sendtask},%