\index{Communication software stack}
\begin{table}[htp]
\renewcommand{\arraystretch}{1.5}
\begin{minipage}[c]{0.8\textwidth}
  \centering
  \mbox{
  \footnotesize
\begin{tabular}{|r|c|p{0.68\textwidth}|p{0.12\textwidth}|p{0.08\textwidth}|}
\hline
\# & Module Name & Module Description & Author & Size \\ \hline \hline

1 &{\bf pAcommsHandler} & 
(1) Optionally handles encoding / decoding of data using DCCL. If not using this option, pGeneralCodec must be run. (2) Manages queues for transmission of acoustic messages. Different message queues can be given priorities that increase with time since the last message was sent from that queue. (3) Interfaces to the WHOI Micro-Modem firmware. (4) Handles Medium Access Control (MAC) of the acoustic network using slotted TDMA or polling.
&  Schneider &  \\ \hline

2 &{\bf pREMUSCodec} &
Encodes / decodes a subset of the REMUS CCL messages.
&  Schneider, Schmidt &  \\ \hline

3 &{\bf iCommander} &
Allows a human operator to type in the fields for a DCCL message, thus provide a way to command vehicles using DCCL.
& Schneider &  \\ \hline 

4 &{\bf pCTDCodec} &
Deprecated. Do not use, rather use the \xmltag{max\_delta} feature of pAcommsHandler which provides all the same functionality but with much more generality. 
&  Schneider &  \\ \hline

5 &{\bf pBTRCodec} &
Deprecated. Do not use, rather use the \xmltag{array\_length} feature of pAcommsHandler which provides the same functionality.
&  Schneider &  \\ \hline

 
6 & {\bf pGeneralCodec} &
Handles encoding / decoding using DCCL. This can be done in pAcommsHandler now, so only run pGeneralCodec for legacy situations.
& Schneider & \\ \hline

7 &{\bf pAcommsPoller} &
Deprecated, use the MAC in pAcommsHandler.
& Schneider &  \\ \hline


\multicolumn{4}{|c|}{Total unique lines of code} &  \\ 
\multicolumn{4}{|c|}{Total aggregate lines of code} &  \\ \hline

  \end{tabular}
  \normalsize}
\end{minipage}
\caption{Communication software stack for \moosivp onboard autonomy system.}
\label{t_comms}
\end{table}

