X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=methods.mtask.tex;h=72e66d121a4a7d2e2dc02f12d619effd6a024563;hb=b855f7f75705291002f50f99eab11d4f450cef48;hp=d6fcbb329f6a4bfd82cbb416f104c914209a53b6;hpb=76254fbf2941fa0b5a02ab3a98104cad56959218;p=msc-thesis1617.git diff --git a/methods.mtask.tex b/methods.mtask.tex index d6fcbb3..72e66d1 100644 --- a/methods.mtask.tex +++ b/methods.mtask.tex @@ -1,8 +1,8 @@ -The \gls{mTask}-\gls{EDSL} is the basis on which the system is built. The -\gls{mTask}-\gls{EDSL} was created by Koopman et al.\ to support several views -such as an \gls{iTasks} simulation and a \gls{C}-code generator. The \gls{EDSL} -was designed to generate a ready-to-compile \gls{TOP}-like system for -microcontrollers such as the \gls{Arduino}~\cite{koopman_type-safe_nodate}% +The \gls{mTask}-\gls{EDSL} is the language used in the system. The +\gls{mTask}-\gls{EDSL} was created by Koopman et al.\ and supported several +views such as an \gls{iTasks} simulation and a \gls{C}-code generator. The +\gls{EDSL} was designed to generate a ready-to-compile \gls{TOP}-like program +for microcontrollers such as the \gls{Arduino}~\cite{koopman_type-safe_nodate}% \cite{plasmeijer_shallow_2016}. The \gls{mTask}-\gls{EDSL} is a shallowly embedded class based \gls{EDSL} and @@ -43,7 +43,7 @@ language constructs also contains the function \CI{lit} that lifts a host-language value into the \gls{EDSL} domain. All standard arithmetic functions are included in the \gls{EDSL} but are omitted in the example for brevity. Moreover, the class restrictions are only shown in the first functions -and omitted in subsequent funcitons. Both the boolean expression and arithmetic +and omitted in subsequent functions. Both the boolean expression and arithmetic expression classes are shown in Listing~\ref{lst:arithbool}. \begin{lstlisting}[label={lst:arithbool}, @@ -93,7 +93,7 @@ class seq v where Values can be assigned to all expressions that have an \CI{Upd} role. Examples of such expressions are \glspl{SDS} and \gls{GPIO} pins. Moreover, class extensions can be created for specific peripherals such as built-in -\glspl{LED}. The classes facilitating this are shown in +\glspl{LED}. The classes facilitating this are shown in Listing~\ref{lst:sdsio}. In this way the assignment is the same for every assignable entity. @@ -122,10 +122,12 @@ class assign v where \end{lstlisting} A way of storing data in \glspl{mTask} is using \glspl{SDS}. \glspl{SDS} serve -as variables in the \gls{mTask} and maintain their value across executions. +as variables in \gls{mTask} and maintain their value across executions. +\glspl{SDS} can be used by multiple \glspl{Task} and can be used to share data. The classes associated with \glspl{SDS} are listed in Listing~\ref{lst:sdsclass}. The \CI{Main} type is introduced to box an -\gls{mTask} and make it recognizable by the type system. +\gls{mTask} and make it recognizable by the type system by separating programs +and decorations such as \glspl{SDS}. \begin{lstlisting}[% label={lst:sdsclass},caption={\glspl{SDS} in \gls{mTask}}] @@ -201,7 +203,10 @@ to a particular view and therefore are of the type \CI{View t r}. The application that blinks a certain \gls{LED} every second. The \CI{thermostat} expression will enable a digital pin powering a cooling fan when the analog pin representing a temperature sensor is too high. \CI{thermostat`} shows the same -expression but now using the assignment style \gls{GPIO} technique. +expression but now using the assignment style \gls{GPIO} technique. The +\CI{thermostat} example also show that it is not necessary to run everything as +a \CI{task}. The main program code can also just consist of the contents of the +root \CI{main} itself. \begin{lstlisting}[% label={lst:exmtask},caption={Some example \glspl{mTask}}]