Merge branch 'master' of git.martlubbers.net:msc-thesis1617
[msc-thesis1617.git] / system.edsl.tex
1 Not all \glspl{Task} are suitable to run on an \gls{IoT}-device and therefore
2 an \gls{EDSL} is used to offer a constrained language that expresses
3 \glspl{Task} for the new system. The \gls{mTask}-\gls{EDSL} shown in
4 Chapter~\ref{chp:mtask} provides the language to create imperative programs
5 that are suitable to run on microcontrollers. The \gls{EDSL}'s main view is a
6 \gls{C} code generator who's code compiles to \gls{Arduino} compatible
7 microcontrollers. The big downside of this approach is the stiffness of the
8 system. Once the code has been generated and the microcontroller has been
9 programmed, nothing can be changed to it anymore. \gls{IoT}-devices often have
10 a limited amount of write cycles on their program memory available and
11 therefore it is very expensive to keep recompiling and reprogramming the chips.
12 To solve this problem, a new view is proposed for the \gls{mTask}-\gls{EDSL}
13 which compiles the expressions not to \gls{C}-code, but to a bytecode format
14 which is interpetable and thus the need for reprogramming is removed. To
15 achieve this, several classes have been added to the \gls{mTask}-\gls{EDSL}.
16 Not all of the functionality of the \gls{mTask} language is needed or not
17 implemented.
18
19 The functionality and implementation added to the \gls{mTask}-\gls{EDSL} is
20 shown in Chapter~\ref{chp:mtaskcont}.