\midrule
\multicolumn{2}{c}{Future thesis work}\\
\midrule
- 3-9 April & Dynamic task and share allocation, NodeMCU support\\
- 10-16 April & Functions, finish up dynamic allocation\\
+ 3{-}9 April & Dynamic task and share allocation, NodeMCU support\\
+ 10{-}16 April & Functions, finish up dynamic allocation\\
& come up with nice demo\\
- 17-23 April & Not much, my wedding\\
- 24-30 April & Start writing introduction and literatu embedding.\\
+ 17{-}23 April & Not much, my wedding\\
+ 24{-}30 April & Start writing introduction and literatu embedding.\\
& Use real shares and share shares between tasks\\
- 1-7 May & Have hardware for demo working\\
- 8-14 May & Introduction done\\
- 15-21 May & Method section done\\
- 22-28 May & Demo done\\
- 29 May - 4 June & Results and discussion done\\
- 5-11 June & Preliminary thesis version finished\\
- 12-18 June & Polish demo and thesis\\
- 19-25 June & Finished demo and thesis\\
+ 1{-}7 May & Have hardware for demo working\\
+ 8{-}14 May & Introduction done\\
+ 15{-}21 May & Method section done\\
+ 22{-}28 May & Demo done\\
+ 29 May {-} 4 June & Results and discussion done\\
+ 5{-}11 June & Preliminary thesis version finished\\
+ 12{-}18 June & Polish demo and thesis\\
+ 19{-}25 June & Finished demo and thesis\\
26 June & Finished\\
\bottomrule
\end{tabular}
Chapter~\ref{chp:introduction} contains the problem statement, motivation and
the structure of the document.
Chapter~\ref{chp:methods} describes the foundations on which the implementation
-is built together with the new techniques introduced.
-Chapter~\ref{chp:results} shows the results in the form of an example
+is built.
+Chapter~\ref{chp:results} shows the new techniques deviced and an example
application accompanied with implementation.
Chapter~\ref{chp:conclusion} concludes by answering the research questions
and discusses future research.
--- /dev/null
+\section{mTask}
+The \gls{mTask}-\gls{EDSL} is the basis on which the system is built. The
+\gls{mTask} 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 Arduino\cite{koopman_type-safe_nodate}%
+\cite{plasmeijer_shallow_2016}.
+
+The \gls{mTask}-\gls{EDSL} is a shallowly embedded class based \gls{EDSL} and
+therefore it is very suitable to have a new backend that partly implements the
+given classes. The following subsections show the details of the \gls{EDSL}
+that are used in the extension. The parts of the \gls{EDSL} that are not used
+will not be discussed and the details of those parts can be found in the cited
+literature.
+
+A view for the \gls{mTask}-\gls{EDSL} is a type of kind \CI{*->*->*} that
+implements some of the classes given. The types do not have to be present as
+fields in the higher kinded view and can, and will most often, solely be
+phantom types. A view is of the form \CI{v t r}. The first variable will be the
+type of the view, the second type variable will be the type of the
+\gls{EDSL}-expression and the third type variable represents the role of the
+expression. Currently the role of the expressions form a hierarchy. The three
+roles and their hierarchy are shown in Listing~\ref{lst:exprhier}. This implies
+that everything is a statement, only a \CI{Upd} and a \CI{Expr} are
+expressions. The \CI{Upd} restriction describes updatable expressions such as
+\gls{GPIO} pins and \gls{SDS}.
+
+\begin{lstlisting}[%
+ language=Clean,label={lst:exprhier},caption={Expression role hierarchy}]
+:: Upd = Upd
+:: Expr = Expr
+:: Stmt = Stmt
+
+class isExpr a :: a -> Int
+instance isExpr Upd
+instance isExpr Expr
+\end{lstlisting}
+
+\subsection{Expressions}
+Expressions in the \gls{mTask}-\gls{EDSL} are divided into two types, namely
+boolean expressions and arithmetic expressions. The class of arithmetic
+language constructs also contains the function \CI{lit} that lifts a
+host-language value in to the \gls{EDSL} domain. All standard arithmetic
+functions are included but are omitted for brevity. Moreover the class
+restrictions are only shown in the first functions and are later omitted. Both
+the boolean expression and arithmetic expression classes are shown in
+Listing~\ref{lst:arithbool}.
+
+\begin{lstlisting}[language=Clean,label={lst:arithbool},
+ caption={Basic classes for expressions}]
+class arith v where
+ lit :: t -> v t Expr
+ (+.) infixl 6 :: (v t p) (v t q) -> v t Expr | +, zero t & isExpr p & isExpr q
+ (-.) infixl 6 :: (v t p) (v t q) -> v t Expr | -, zero t & ...
+ ...
+class boolExpr v where
+ Not :: (v Bool p) -> v Bool Expr | ...
+ (&.) infixr 3 :: (v Bool p) (v Bool q) -> v Bool Expr | ...
+ ...
+ (==.) infix 4 :: (v a p) (v a q) -> v Bool Expr | ==, toCode a & ...
+\end{lstlisting}
+
+\subsection{Control flow}
+\todo{Write this}
+
+\subsection{Input/Output and class extensions}
+All expressions that have an \CI{Upd} role can be assigned to. Examples of such
+expressions are \glspl{SDS} and \gls{GPIO}. Moreover, class extensions can be
+created for specific peripherals such as user LEDs. The classes facilitating
+this are shown in Listing~\ref{lst:sdsio}. In this way the assignment is the
+same for every assignable entity.
+
+\begin{lstlisting}[%
+ language=Clean,label={lst:sdsio},caption={Input/Output classes}]
+:: DigitalPin = D0 | D1 | D2 | D3 | D4 | D5 |D6 | D7 | D8 | D9 | D10 | D11 | D12 | D13
+:: AnalogPin = A0 | A1 | A2 | A3 | A4 | A5
+:: UserLED = LED1 | LED2 | LED3
+
+class dIO v where dIO :: DigitalPin -> v Bool Upd
+class aIO v where aIO :: AnalogPin -> v Int Upd
+class analogRead v where
+ analogRead :: AnalogPin -> v Int Expr
+ analogWrite :: AnalogPin (v Int p) -> v Int Expr
+class digitalRead v where
+ digitalRead :: DigitalPin -> v Bin Expr
+ digitalWrite :: DigitalPin (v Bool p) -> v Int Expr
+
+:: UserLED = LED1 | LED2 | LED3
+class userLed v where
+ ledOn :: (v UserLED q) -> (v () Stmt)
+ ledOff :: (v UserLED q) -> (v () Stmt)
+
+class assign v where
+ (=.) infixr 2 :: (v t Upd) (v t p) -> v t Expr | ...
+\end{lstlisting}
+
+A way of storing data in \glspl{mTask} is using \glspl{SDS}. \glspl{SDS} serve
+as variables in the \gls{mTask} and will keep their value across executions.
+The classes associated with \glspl{SDS} are listed in
+Listing~\ref{lst:sdsclass}. The \CI{Main} class is introduced to box an
+\gls{mTask} and make it recognizable by the type system.
+
+\begin{lstlisting}[%
+ language=Clean,label={lst:sdsclass},caption={\glspl{SDS} in \gls{mTask}}]
+:: In a b = In infix 0 a b
+:: Main a = {main :: a}
+
+class sds v where
+ sds :: ((v t Upd)->In t (Main (v c s))) -> (Main (v c s)) | ...
+\end{lstlisting}
+
+\subsection{Example \gls{mTask}}
+\todo{Also explain semantics about running tasks}
+Some example \glspl{mTask} using almost all of the functionality are show in
+Listing~\ref{lst:exmtask}. The \glspl{mTask} shown in the example do not belong
+to a particular view and therefore are of the type \CI{View t r}. The
+\CI{blink} \gls{mTask} show the classic \emph{Arduino} \emph{Hello World!}
+application that blinks a certain LED every interval. The \CI{thermostat}
+\gls{mTask} 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 program but now using the assignment style \gls{GPIO}.
+
+\begin{lstlisting}[%
+ language=Clean,label={lst:exmtask},caption={Some example \glspl{mTask}}]
+blink :: Main (View Int Stmt)
+blink = sds \x=1 In sds \led=LED1 In {main =
+ IF (x ==. lit 1) (ledOn led) (ledOff led) :.
+ x =. lit 1 -. x
+ }
+
+thermostat :: Main (View () Stmt)
+thermostat = {main =
+ IF (analogRead A0 >. 50)
+ ( digitalWrite D0 (lit True) )
+ ( digitalWrite D0 (lit False) )
+ }
+
+thermostat` :: Main (View () Stmt)
+thermostat` = let
+ a0 = aIO A0
+ d0 = dIO D0 in {main = IF (a0 >. 50) (d0 =. lit True) (d0 =. lit False) }
+\end{lstlisting}
\input{methods.top.tex}
\input{methods.dsl.tex}
+
+\input{methods.mtask.tex}
-@article{da_xu_internet_2014,
- title = {Internet of things in industries: a survey},
- volume = {10},
- number = {4},
- journal = {Industrial Informatics, IEEE Transactions on},
- author = {Da Xu, Li and He, Wu and Li, Shancang},
- year = {2014},
- pages = {2233--2243},
- file = {IOT industrial survey.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/EJHG7M8I/IOT industrial survey.pdf:application/pdf}
+@incollection{achten_introduction_2015,
+ title = {An {Introduction} to {Task} {Oriented} {Programming}},
+ booktitle = {Central {European} {Functional} {Programming} {School}},
+ publisher = {Springer},
+ author = {Achten, Peter and Koopman, Pieter and Plasmeijer, Rinus},
+ year = {2015},
+ pages = {187--245},
+ file = {chp%3A10.1007%2F978-3-319-15940-9_5.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/ZSDSIIT7/chp%3A10.1007%2F978-3-319-15940-9_5.pdf:application/pdf}
}
-@inproceedings{svenningsson_combining_2012,
- title = {Combining deep and shallow embedding for {EDSL}},
- url = {http://link.springer.com/chapter/10.1007/978-3-642-40447-4_2},
- urldate = {2017-05-10},
- booktitle = {International {Symposium} on {Trends} in {Functional} {Programming}},
- publisher = {Springer},
- author = {Svenningsson, Josef and Axelsson, Emil},
- year = {2012},
- pages = {21--36},
- file = {svenningsson2013combining.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/NFBGZCZT/svenningsson2013combining.pdf:application/pdf}
+@incollection{plasmeijer_shallow_2016,
+ address = {Cham},
+ series = {Lecture {Notes} in {Computer} {Science}},
+ title = {A {Shallow} {Embedded} {Type} {Safe} {Extendable} {DSL} for the {Arduino}},
+ volume = {9547},
+ isbn = {978-3-319-39109-0 978-3-319-39110-6},
+ url = {http://link.springer.com/10.1007/978-3-319-39110-6},
+ urldate = {2017-02-22},
+ booktitle = {Trends in {Functional} {Programming}},
+ publisher = {Springer International Publishing},
+ author = {Plasmeijer, Rinus and Koopman, Pieter},
+ year = {2016},
+ note = {DOI: 10.1007/978-3-319-39110-6},
+ file = {chp%3A10.1007%2F978-3-319-39110-6_6.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/TJVP6FHF/chp%3A10.1007%2F978-3-319-39110-6_6.pdf:application/pdf}
}
@article{koopman_type-safe_nodate,
url = {https://tfp2016.org/papers/TFP_2016_paper_7.pdf},
urldate = {2017-02-22},
author = {Koopman, Pieter and Plasmeijer, Rinus},
- file = {TFP_2016_paper_7.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/WR3PZNTT/TFP_2016_paper_7.pdf:application/pdf}
+ file = {TFP_2016_paper_7.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/WR3PZNTT/TFP_2016_paper_7.pdf:application/pdf}
}
-@phdthesis{oortgiese_distributed_2017,
- address = {Nijmegen},
- type = {Master},
- title = {A {Distributed} {Server} {Architecture} for {Task} {Oriented} {Programming}},
- shorttitle = {A {Distributed} {Server} {Architecture} for {Task} {Oriented} {Programming}},
- url = {http://www.ru.nl/publish/pages/769526/arjan_oortgiese.pdf},
- language = {English},
- urldate = {2017-04-08},
- school = {Radboud University},
- author = {Oortgiese, Arjan},
- year = {2017},
- file = {arjan_oortgiese.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/J4WXQXU4/arjan_oortgiese.pdf:application/pdf}
+@inproceedings{brus_cleanlanguage_1987,
+ title = {Clean—a language for functional graph rewriting},
+ url = {http://link.springer.com/chapter/10.1007/3-540-18317-5_20},
+ urldate = {2017-02-24},
+ booktitle = {Conference on {Functional} {Programming} {Languages} and {Computer} {Architecture}},
+ publisher = {Springer},
+ author = {Brus, T. H. and van Eekelen, Marko CJD and Van Leer, M. O. and Plasmeijer, Marinus J.},
+ year = {1987},
+ pages = {364--384},
+ file = {Clean —\; A language for functional graph rewriting - chp%3A10.1007%2F3-540-18317-5_20.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/GCEPPRUJ/chp%3A10.1007%2F3-540-18317-5_20.pdf:application/pdf}
}
-@incollection{achten_introduction_2015,
- title = {An {Introduction} to {Task} {Oriented} {Programming}},
- booktitle = {Central {European} {Functional} {Programming} {School}},
- publisher = {Springer},
- author = {Achten, Peter and Koopman, Pieter and Plasmeijer, Rinus},
- year = {2015},
- pages = {187--245},
- file = {chp%3A10.1007%2F978-3-319-15940-9_5.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/ZSDSIIT7/chp%3A10.1007%2F978-3-319-15940-9_5.pdf:application/pdf}
+@article{da_xu_internet_2014,
+ title = {Internet of things in industries: a survey},
+ volume = {10},
+ number = {4},
+ journal = {Industrial Informatics, IEEE Transactions on},
+ author = {Da Xu, Li and He, Wu and Li, Shancang},
+ year = {2014},
+ pages = {2233--2243},
+ file = {IOT industrial survey.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/EJHG7M8I/IOT industrial survey.pdf:application/pdf}
}
@book{lijnse_top_2013,
author = {Lijnse, Bas},
year = {2013},
note = {OCLC: 833851220},
- file = {103931.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/9KZ9I6N9/103931.pdf:application/pdf}
-}
-
-@inproceedings{pike_programming_2014,
- title = {Programming languages for high-assurance autonomous vehicles: extended abstract},
- isbn = {978-1-4503-2567-7},
- shorttitle = {Programming languages for high-assurance autonomous vehicles},
- url = {http://dl.acm.org/citation.cfm?doid=2541568.2541570},
- doi = {10.1145/2541568.2541570},
- language = {en},
- urldate = {2017-05-10},
- publisher = {ACM Press},
- author = {Pike, Lee and Hickey, Patrick and Bielman, James and Elliott, Trevor and DuBuisson, Thomas and Launchbury, John},
- year = {2014},
- pages = {1--2},
- file = {pike-plpv14.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/MTUSHBNF/pike-plpv14.pdf:application/pdf}
+ file = {103931.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/9KZ9I6N9/103931.pdf:application/pdf}
}
-@inproceedings{brus_cleanlanguage_1987,
- title = {Clean—a language for functional graph rewriting},
- url = {http://link.springer.com/chapter/10.1007/3-540-18317-5_20},
- urldate = {2017-02-24},
- booktitle = {Conference on {Functional} {Programming} {Languages} and {Computer} {Architecture}},
- publisher = {Springer},
- author = {Brus, T. H. and van Eekelen, Marko CJD and Van Leer, M. O. and Plasmeijer, Marinus J.},
- year = {1987},
- pages = {364--384},
- file = {Clean —\; A language for functional graph rewriting - chp%3A10.1007%2F3-540-18317-5_20.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/GCEPPRUJ/chp%3A10.1007%2F3-540-18317-5_20.pdf:application/pdf}
+@phdthesis{oortgiese_distributed_2017,
+ address = {Nijmegen},
+ type = {Master},
+ title = {A {Distributed} {Server} {Architecture} for {Task} {Oriented} {Programming}},
+ shorttitle = {A {Distributed} {Server} {Architecture} for {Task} {Oriented} {Programming}},
+ url = {http://www.ru.nl/publish/pages/769526/arjan_oortgiese.pdf},
+ language = {English},
+ urldate = {2017-04-08},
+ school = {Radboud University},
+ author = {Oortgiese, Arjan},
+ year = {2017},
+ file = {arjan_oortgiese.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/J4WXQXU4/arjan_oortgiese.pdf:application/pdf}
}
@incollection{havelund_practical_2015,
editor = {Havelund, Klaus and Holzmann, Gerard and Joshi, Rajeev},
year = {2015},
note = {DOI: 10.1007/978-3-319-17524-9},
- file = {mart_paper.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/5SXR59GR/mart_paper.pdf:application/pdf}
+ file = {mart_paper.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/5SXR59GR/mart_paper.pdf:application/pdf}
}
-@incollection{serrano_shallow_2016,
- address = {Cham},
- series = {Lecture {Notes} in {Computer} {Science}},
- title = {A {Shallow} {Embedded} {Type} {Safe} {Extendable} {DSL} for the {Arduino}},
- volume = {9547},
- isbn = {978-3-319-39109-0 978-3-319-39110-6},
- url = {http://link.springer.com/10.1007/978-3-319-39110-6},
- urldate = {2017-02-22},
- booktitle = {Trends in {Functional} {Programming}},
- publisher = {Springer International Publishing},
- editor = {Serrano, Manuel and Hage, Jurriaan},
- year = {2016},
- note = {DOI: 10.1007/978-3-319-39110-6},
- file = {chp%3A10.1007%2F978-3-319-39110-6_6.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/TJVP6FHF/chp%3A10.1007%2F978-3-319-39110-6_6.pdf:application/pdf}
+@inproceedings{pike_programming_2014,
+ title = {Programming languages for high-assurance autonomous vehicles: extended abstract},
+ isbn = {978-1-4503-2567-7},
+ shorttitle = {Programming languages for high-assurance autonomous vehicles},
+ url = {http://dl.acm.org/citation.cfm?doid=2541568.2541570},
+ doi = {10.1145/2541568.2541570},
+ language = {en},
+ urldate = {2017-05-10},
+ publisher = {ACM Press},
+ author = {Pike, Lee and Hickey, Patrick and Bielman, James and Elliott, Trevor and DuBuisson, Thomas and Launchbury, John},
+ year = {2014},
+ pages = {1--2},
+ file = {pike-plpv14.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/MTUSHBNF/pike-plpv14.pdf:application/pdf}
+}
+
+@inproceedings{svenningsson_combining_2012,
+ title = {Combining deep and shallow embedding for {EDSL}},
+ url = {http://link.springer.com/chapter/10.1007/978-3-642-40447-4_2},
+ urldate = {2017-05-10},
+ booktitle = {International {Symposium} on {Trends} in {Functional} {Programming}},
+ publisher = {Springer},
+ author = {Svenningsson, Josef and Axelsson, Emil},
+ year = {2012},
+ pages = {21--36},
+ file = {svenningsson2013combining.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/NFBGZCZT/svenningsson2013combining.pdf:application/pdf}
}
@techreport{cheney_first-class_2003,
institution = {Cornell University},
author = {Cheney, James and Hinze, Ralf},
year = {2003},
- file = {https\://ecommons.cornell.edu/bitstream/handle/1813/5614/?sequence=1:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/R5IFMHTP/5614.pdf:application/pdf}
+ file = {https\://ecommons.cornell.edu/bitstream/handle/1813/5614/?sequence=1:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/R5IFMHTP/5614.pdf:application/pdf}
}
@inproceedings{cheney_lightweight_2002,
author = {Cheney, James and Hinze, Ralf},
year = {2002},
pages = {90--104},
- file = {HW02.pdf:/home/mrl/.mozilla/firefox/a614qfce.default/zotero/storage/A8Z49NK6/HW02.pdf:application/pdf}
+ file = {HW02.pdf:/home/mrl/.mozilla/firefox/7b4r727h.default-1470981082057/zotero/storage/A8Z49NK6/HW02.pdf:application/pdf}
}
\ No newline at end of file
\usepackage{lipsum} % dummy text
\usepackage{listings} % source code
\usepackage{float} % floating images
+\usepackage{lmodern} % Better teletype fonts
+\usepackage{textcomp} % Nice listings quotes
\graphicspath{{img/}}
\lstdefinelanguage{Clean}{%
alsoletter={ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_`1234567890},
alsoletter={~!@\#$\%^\&*-+=?<>:|\\.},
- morekeywords={generic,implementation,definition,dynamic,module,import,from,where,in,of,case,let,infix,infixr,infixl,class,instance,with,if,derive},
+ morekeywords={generic,implementation,definition,dynamic,module,import,from,where,in,of,case,let,infix,infixr,infixl,class,instance,with,if,derive,::},
sensitive=true,
morecomment=[l]{//},
morecomment=[n]{/*}{*/},
basewidth=0.45em,
columns=[c]fixed,
texcl=true,
+ upquote=true,
literate=%
% Basic Clean constructs
{\\}{{$\lambda\:$}}1
% {++}{{$+\!\!+$}}2
% {+++}{{$+\!\!\!\!+\!\!\!\!+$}}2
% {:==}{{$:==$}}3
- {\{|*|\}}{{$\{\!|\!\!\star\!\!|\!\}$}}3
+% {\{|*|\}}{{$\{\!|\!\!\star\!\!|\!\}$}}3
%
% Basic iTask constructs
- {>||>}{{$\triangleright\triangleright$}}2
- {>>=}{{\texttt{>>=}}}3
- {>>|}{{\texttt{>>|}}}3
- {?>>}{{\texttt{?>>}}}3
- {!>>}{{\texttt{!>>}}}3
- {-||-}{{\texttt{-||-}}}4
- {.||.}{{\texttt{.||.}}}4
- {.&&.}{{\texttt{.\&\&.}}}4
+% {>||>}{{$\triangleright\triangleright$}}2
+% {>>=}{{\texttt{>>=}}}3
+% {>>|}{{\texttt{>>|}}}3
+% {?>>}{{\texttt{?>>}}}3
+% {!>>}{{\texttt{!>>}}}3
+% {-||-}{{\texttt{-||-}}}4
+% {.||.}{{\texttt{.||.}}}4
+% {.&&.}{{\texttt{.\&\&.}}}4
}
-\newcommand{\CI}[1]{\lstinline[language=Clean]|#1|}
+\newcommand{\CI}[1]{\lstinline[language=Clean,basicstyle=\ttfamily\fontseries{l}\normalsize]|#1|}
\lstset{%
- breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
- breaklines=true, % sets automatic line breaking
- captionpos=b, % sets the caption-position to bottom
- keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
- basicstyle=\ttfamily\footnotesize, % the size of the fonts that are used for the code
- commentstyle=\itshape, % comment style
- keywordstyle=\bfseries, % keyword style
- stringstyle=\ttfamily, % string literal style
- showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
- showstringspaces=false, % underline spaces within strings only
- showtabs=false, % show tabs within strings adding particular underscores
- tabsize=4, % sets default tabsize to 2 spaces
+ breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
+ breaklines=true, % sets automatic line breaking
+ captionpos=b, % sets the caption-position to bottom
+ keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
+ basicstyle=\ttfamily\fontseries{l}\footnotesize,% the size of the fonts that are used for the code
+ commentstyle=\itshape\fontseries{m}, % comment style
+ keywordstyle=\bfseries\fontseries{b}, % keyword style
+ stringstyle=\ttfamily, % string literal style
+ showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
+ showstringspaces=false, % underline spaces within strings only
+ showtabs=false, % show tabs within strings adding particular underscores
+ tabsize=4, % sets default tabsize to 2 spaces
frame=L
}
\makeglossaries%
\newacronym{GADT}{GADT}{Generalized Algebraic Datatype}
+\newacronym{GPIO}{GPIO}{General-Purpose Input/Output}
\newacronym{ADT}{ADT}{Algebraic Datatype}
\newacronym{SDS}{SDS}{Shared Data Source}
\newacronym{IoT}{IoT}{Internet of Things}
\chapter{Results}\label{chp:results}
\input{results.tex}
-\chapter{Conclusion \& Discussion}
-\label{chp:conclusion}
+\chapter{Conclusion \& Discussion}\label{chp:conclusion}
\appendix\label{chp:appendix}
+
\chapter{Planning}\label{app:planning}
\input{appendix-planning.tex}