X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=methods.tex;h=2c8e198ec255c07a5d705f14cceb0e35a0f75472;hb=96c38eaced38e4a3cb8df44ec54b778a1dc11b24;hp=674a24fd145c35b8c4a17d4398399732f97fefd6;hpb=e22d3df9367912afcb12b638ad5ae8b66932d986;p=msc-thesis1617.git diff --git a/methods.tex b/methods.tex index 674a24f..2c8e198 100644 --- a/methods.tex +++ b/methods.tex @@ -1,56 +1,5 @@ -\section{\acrlong{TOP}} -\gls{TOP} is a recent new programming paradigm implemented as -\gls{iTasks}~\cite{achten_introduction_2015} in -the pure lazy functional language \gls{Clean} +\input{methods.top.tex} -\todo{Main terms} -The lazy functional programming language based on graph rewriting -\gls{Clean}~\cite{brus_cleanlanguage_1987} +\input{methods.dsl.tex} -\section{\acrlong{EDSL}s} -\glspl{mTask} are expressed in a class based shallowly embedded \gls{EDSL}. -There are two main types of \glspl{EDSL}. -\todo{Small shallow embedded dsl intro} -\todo{Small deep embedded dsl} -\todo{Show that class based has the best of both worlds} - -\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 -uses standard \gls{C} and no special libraries or tricks are used. Therefore -the code is compilable for almost any device or system. Note that it is not -needed to implement a full interface\todo{handshake}. The full interface, -listed in Appendix~\label{app:device-interface}\todo{update interface listing}, -also includes functions for accessing the peripherals that not every device -might have. Devices can choose what to implement by setting the correct macros -in the top of the file. - -\subsection{Specification} -Devices are stored in a record type and all devices in the system are stored in -a \gls{SDS} containing all devices. From the macro settings in the interface -file a profile is created for the device that describes the specification. When -a connection between the server and a client is established the server will -send a request for specification. The client will serialize his specs and send -it to the server so that the server knows what the client is capable of. The -exact specification is listed in Listing~\ref{lst:devicespec} - -\begin{lstlisting}[language=Clean,label={lst:devicespec}, - caption={Device specification for \glspl{mTask}}] -:: MTaskDeviceSpec = - {haveLed :: Bool - ,haveAio :: Bool - ,haveDio :: Bool - ,taskSpace :: Int // Bytes - ,sdsSpace :: Int // Bytes - } -\end{lstlisting} -\todo{Explain specification, combine task and share space} - -\subsection{Communication} - -\section{mTasks} -\subsection{\gls{EDSL}} - - -\subsection{Shares} +\input{methods.mtask.tex}