\documentclass[../thesis.tex]{subfiles}
-\include{subfilepreamble}
+\input{subfilepreamble}
\begin{document}
-\chapter{Auxiliary \texorpdfstring{\glsentrytext{MTASK}}{mTask} type classes}%
+\input{subfileprefix}
+\ifSubfilesClassLoaded{\appendix\setcounter{chapter}{1}}{}
+\chapter{Auxiliary mTask type classes}%
\label{chp:mtask_aux}
\lstset{basicstyle=\tt\footnotesize}
\section{Peripherals}\label{sec:aux_peripherals}
This section shows the peripherals not mentioned in \cref{chp:top4iot}.
All constructors use \gls{HOAS} to create a type safe sensor object from a connection specification that can be used to interact with the sensor.
-The measurement tasks all yield unstable values contaning the measured value.
+The measurement tasks all yield unstable values containing the measured value.
The auxiliary functions such as calibration yield stable values indicating the result.
Tasks suffixed with the backtick (\cleaninline{'}) indicate variants for which the timing interval can be specified (see \cref{chp:green_computing_mtask}).
\subsection{Gesture sensor}
The \gls{MTASK} language supports one type (\emph{PAJ7620} connected via \gls{I2C}) of gesture sensors.
-The \emph{PAJ7620} contains an optical CMOS array that measures the reflection of the on-board \gls{IR} \gls{LED} to detect up to several different gestures.
+The \emph{PAJ7620} contains an optical CMOS array that measures the reflection of the on-board \gls{IR} \gls{LED} to detect up to several gestures.
The complete interface containing the constructor and the measurement task is shown in \cref{lst:mtask_gesture}.
\begin{lstClean}[label={lst:mtask_gesture},caption={Gesture sensor interface in \gls{MTASK}.}]
\subsection{Motion detection sensor}
The \gls{MTASK} language supports motion sensing using a \gls{PIR} sensor through a type class that only contains macros.
-\gls{PIR} sensors detect motion by the \gls{IR} reflection through a number of fresnel lenses and communicates through a digital \gls{GPIO} pin.
+\gls{PIR} sensors detect motion by the \gls{IR} reflection through a number of Fresnel lenses and communicates through a digital \gls{GPIO} pin.
Therefore, a \gls{PIR} is nothing more than a \cleaninline{DPIN} according to \gls{MTASK} but for uniformity, a type class is available (see \cref{lst:mtask_pir}).
\begin{lstClean}[label={lst:mtask_pir},caption={\Gls{PIR} sensor interface in \gls{MTASK}.}]
\begin{lstClean}[label={lst:mtask_sound},caption={Sound detection sensor interface in \gls{MTASK}.}]
:: SoundDetector :== (DPin, APin)
-class SoundDetector v | tupl, expr, pinMode v & dio DPin v
-where
+class SoundDetector v | tupl, expr, pinMode v & dio DPin v where
soundDetector :: DPin APin ((v SoundDetector) -> Main (v b)) -> Main (v b)
soundPresence` :: (TimingInterval v) (v SoundDetector) -> MTask v Bool
soundLevel :: (v SoundDetector) -> MTask v Bool | tupl, aio v
\end{lstClean}
-\subsection{\texorpdfstring{\gls{I2C}}{I\textsuperscript{2}C} buttons}
-The \gls{MTASK} language supports one type of \gls{I2C} buttons (the \gls{I2C} buttons from the \gls{WEMOS} d1 mini \gls{OLED} shield).
+\subsection{\IIC{} buttons}
+The \gls{MTASK} language supports one type of \gls{I2C} buttons (the \gls{I2C} buttons from the \gls{WEMOS} D1 mini \gls{OLED} shield).
The buttons from this shield provide more information than just the status (see \cleaninline{ButtonStatus}).
The complete interface containing the constructor and the measurement tasks is shown in \cref{lst:mtask_i2cbutton}.
BButton :: (v I2CButton) -> MTask v ButtonStatus
\end{lstClean}
-\subsection{\texorpdfstring{\gls{LED}}{LED} matrix}
-The \gls{MTASK} language supports one type of \gls{LED} matrix (the $8\times8$ \gls{LED} matrix shield for the \gls{WEMOS} d1 mini).
+\subsection{LED matrix}
+The \gls{MTASK} language supports one type of \gls{LED} matrix (the $8\times8$ \gls{LED} matrix shield for the \gls{WEMOS} D1 mini).
Instead of containing a \gls{TOP}-like interface, the \gls{ARDUINO} interface is directly translated to \gls{MTASK}.
As a result, every task immediately returns a stable value indicating the result.
The complete interface containing the constructor and the interaction tasks is shown in \cref{lst:mtask_ledmatrix}.
LMDisplay :: (v LEDMatrix) -> MTask v ()
\end{lstClean}
+\subsection{Connection types}\label{lst:connection_types}
+\begin{lstClean}[caption={}]
+:: TCPSettings =
+ { host :: String
+ , port :: Int
+ , pingTimeout :: ?Int
+ }
+:: MQTTSettings =
+ { host :: String
+ , port :: Int
+ , mcuId :: String
+ , serverId :: String
+ , auth :: MQTTAuth
+ }
+:: TTYSettings =
+ { devicePath :: String
+ , baudrate :: BaudRate
+ , bytesize :: ByteSize
+ , parity :: Parity
+ , stop2bits :: Bool
+ , xonxoff :: Bool
+ , sleepTime :: Int
+ }
+\end{lstClean}
+
+
\lstset{basicstyle=\tt}
\input{subfilepostamble}
\end{document}