X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=top%2Ftop.tex;h=de58f8e1cc2b4f768f04a197f12f425bc64f0c24;hb=26745fe928b2c2d7bb4b6642107e0cd498f08ef7;hp=6c759fb168a7c95644764de6419e11550674a695;hpb=5aa57e0cb31d64685ad4c0624c1047a4b7e77399;p=phd-thesis.git diff --git a/top/top.tex b/top/top.tex index 6c759fb..de58f8e 100644 --- a/top/top.tex +++ b/top/top.tex @@ -2,91 +2,22 @@ \input{subfilepreamble} +%\let\ifSubfilesClassLoadedOld\ifSubfilesClassLoaded% +%\ifSubfilesClassLoadedOld{ +% \renewcommand{\ifSubfilesClassLoaded}[2]{#2} +%}{} \begin{document} \input{subfileprefix} +\part[Orchestrating the Internet of Things using Task-O\-rien\-ted Programming]{\\[2ex]\smaller{}Orchestrating the Internet of Things using Task-O\-rien\-ted Programming}% +\label{prt:top} -%\chapter{\texorpdfstring{\Glsxtrshort{TOP} for the \glsxtrshort{IOT}}{TOP for the IoT}}% -\subfile{4iot} - -%\chapter{The \texorpdfstring{\gls{MTASK}}{mTask} \texorpdfstring{\glsxtrshort{DSL}}{DSL}}% -\subfile{lang} - -\chapter{Integration with \texorpdfstring{\gls{ITASK}}{iTask}}% -\label{chp:integration_with_itask} -\begin{chapterabstract} - This chapter shows the integration of \gls{MTASK} with \gls{ITASK} by showing: - \begin{itemize} - \item an architectural overview of \gls{MTASK}; - \item on the interface for connecting devices; - \item the interface for lifting \gls{MTASK} tasks to \gls{ITASK} tasks; - \item and interface for lifting \gls{ITASK} \glspl{SDS} to \gls{MTASK} \glspl{SDS}. - \end{itemize} -\end{chapterabstract} - -The \gls{MTASK} language is a multi-view \gls{DSL}, i.e.\ there are multiple interpretations possible for a single \gls{MTASK} term. -Using the byte code compiler (\cleaninline{BCInterpret}) \gls{DSL} interpretation, \gls{MTASK} tasks can be fully integrated in \gls{ITASK}. -They are executed as if they are regular \gls{ITASK} tasks and they communicate may access \glspl{SDS} from \gls{ITASK} as well. -\Gls{MTASK} devices contain a domain-specific \gls{OS} (\gls{RTS}) and are little \gls{TOP} engines in their own respect, being able to execute tasks. -\Cref{fig:mtask_integration} shows the architectural layout of a typical \gls{IOT} system created with \gls{ITASK} and \gls{MTASK}. -The entire system is written as a single \gls{CLEAN} specification where multiple tasks are executed at the same time. -Tasks can access \glspl{SDS} according to many-to-many communication and multiple clients can work on the same task. -Devices are integrated into the system using the \cleaninline{withDevice} function (see \cref{sec:withdevice}). -Using \cleaninline{liftmTask}, \gls{MTASK} tasks are lifted to a device (see \cref{sec:liftmtask}). -\Gls{ITASK} \glspl{SDS} are lifted to the \gls{MTASK} device using \cleaninline{liftsds} (see \cref{sec:liftmtask}). - -\begin{figure}[ht] - \centering - \includestandalone{mtask_integration} - \caption{\Gls{MTASK}'s integration with \gls{ITASK}.}% - \label{fig:mtask_integration} -\end{figure} - -\section{Devices}\label{sec:withdevice} -When interpreted by the byte code compiler view, an \gls{MTASK} task produces a compiler. -This compiler is exceuted at run time so that the resulting byte code can be sent to an edge device. -All communication with this device happens through a so-called \emph{channels} \gls{SDS}. -The channels contain three fields, a queue of messages that are received, a queue of messages to send and a stop flag. -Every communication method that implements the \cleaninline{channelSync} class can provide the communication with an \gls{MTASK} device. -As of now, serial port communication, direct \gls{TCP} communication and \gls{MQTT} over \gls{TCP} are supported as communication providers. -The \cleaninline{withDevice} function transforms a communication provider and a task that does something with this device to an \gls{ITASK} task. -This task sets up the communication, exchanges specifications, handles errors and cleans up after closing. -\Cref{lst:mtask_device} shows the types and interface to connecting devices. - -\begin{lstClean}[label={lst:mtask_device},caption={Device communication interface in \gls{MTASK}.}] -:: MTDevice //abstract -:: Channels :== ([MTMessageFro], [MTMessageTo], Bool) - -class channelSync a :: a (Shared sds Channels) -> Task () | RWShared sds - -withDevice :: (a (MTDevice -> Task b) -> Task b) | iTask b & channelSync, iTask a -\end{lstClean} - -\section{Lifting tasks}\label{sec:liftmtask} -Once the connection with the device is established, \ldots -\begin{lstClean} -liftmTask :: (Main (BCInterpret (TaskValue u))) MTDevice -> Task u | iTask u -\end{lstClean} - -\section{Lifting \texorpdfstring{\glsxtrlongpl{SDS}}{shared data sources}}\label{sec:liftsds} -\begin{lstClean}[label={lst:mtask_itasksds},caption={Lifted \gls{ITASK} \glspl{SDS} in \gls{MTASK}.}] -class liftsds v where - liftsds :: ((v (Sds t)) -> In (Shared sds t) (Main (MTask v u))) - -> Main (MTask v u) | RWShared sds -\end{lstClean} - -\chapter{Implementation}% -\label{chp:implementation} -\begin{chapterabstract} - This chapter shows the implementation of the \gls{MTASK} system. - It is threefold: first it shows the implementation of the byte code compiler for \gls{MTASK}'s \gls{TOP} language, then is details of the implementation of \gls{MTASK}'s \gls{TOP} engine that executes the \gls{MTASK} tasks on the microcontroller, and finally it shows how the integration of \gls{MTASK} tasks and \glspl{SDS} is implemented both on the server and on the device. -\end{chapterabstract} -IFL19 paper, bytecode instructieset~\cref{chp:bytecode_instruction_set} - -\section{Integration with \texorpdfstring{\gls{ITASK}}{iTask}} -IFL18 paper stukken - -% Green computing -\subfile{green} +\subfile{4iot} % TOP for the IoT +\subfile{lang} % mTask DSL +\subfile{int} % Integration with iTask +\subfile{imp} % Implementation +\subfile{green} % Green computing +\subfile{finale} % Conclusion +%\let\ifSubfilesClassLoaded\ifSubfilesClassLoadedOld% \input{subfilepostamble} \end{document}