and send it to the server so that the server knows what the client is capable
of. The exact specification is listed in Listing~\ref{lst:devicespec}
-\begin{lstlisting}[language=Clean,label={lst:devicespec},
+\begin{lstlisting}[label={lst:devicespec},
caption={Device specification for \glspl{mTask}}]
:: MTaskDeviceSpec =
{haveLed :: Bool
All of this is listed in Listing~\ref{lst:mtaskdevice}. The definitions of the
message format are explained in the following section.
-\begin{lstlisting}[language=Clean,caption={Device type},label={lst:mtaskdevice}]
+\begin{lstlisting}[caption={Device type},label={lst:mtaskdevice}]
deviceStore :: Shared [MTaskDevice]
:: Channels :== ([MTaskMSGRecv], [MTaskMSGSend], Bool)
\section{Communication}
All \gls{mTask} messages are encoded following the specification given in
Appendix~\ref{app:communication-protocol}. Available messages are:
-\begin{lstlisting}[language=Clean,caption={Available messages}]
+\begin{lstlisting}[caption={Available messages}]
:: MTaskMSGRecv
= MTTaskAck Int Int | MTTaskDelAck Int
| MTSDSAck Int | MTSDSDelAck Int
and still update the latest instance. Listing~\ref{lst:connectDevice} shows the
connection function.
-\begin{lstlisting}[language=Clean,label={lst:connectDevice},%
+\begin{lstlisting}[label={lst:connectDevice},%
caption={Connect a device}]
withDevices :: MTaskDevice (MTaskDevice -> MTaskDevice) -> Task [MTaskDevice]