<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\section{Introduction}

\subsection{Features of CATS}

CATS has many exciting features over APRS:

\begin{itemize}
\item 2-FSK is used instead of FM-AFSK for a 7 dB modulation gain\footnote{See David Rowe's blog post ``FSK over FM'' at https://www.rowetel.com/wordpress/?p=3799}
\item Forward Error Correction (LDPC) for coding gain
\item Bit-rate increased from 1200 bits/s to 9600 bits/s
\item Maximum packet size 8191 bytes
\item Data whitening used to prevent receiver desynchronization
\item The 70cm band is used instead of the 2m band by default
  \begin{itemize}
  \item Since 2m is more common for voice, it makes it easy to add CATS to an existing setup while still being able to use 2m repeaters --- with full duplexing, so that CATS transmissions do not cause loss of reception on 2m
  \end{itemize}
\item FELINET, which is the CATS equivalent of APRS-IS, will push and pull messages from APRS-IS to maintain some compatibility, at least initially. The eventual goal is to drop this link.
\end{itemize}

\subsection{The Pipeline}

CATS packets are created from raw information using the following flow. For reception, the pipeline is reversed. Note that all multi-byte fields are encoded little-endian unless otherwise indicated. \\

\begin{tikzpicture}

    \node [block, name=text1] {Raw data};
    \node [block, right of=text1] (text2) {Whiskers};
    \node [block, right of=text2] (text3) {CRC};
    \node [block, right of=text3] (text4) {Whitener};
    \node [block, below of=text4] (text5) {LDPC};
    \node [block, below of=text3] (text6) {Interleaver};
    \node [block, below of=text2] (text7) {Header};
    \node [block, below of=text1] (text8) {RF};

    \draw [-&gt;] (text1) -- (text2);
    \draw [-&gt;] (text2) -- (text3);
    \draw [-&gt;] (text3) -- (text4);
    \draw [-&gt;] (text4) -- (text5);
    \draw [-&gt;] (text5) -- (text6);
    \draw [-&gt;] (text6) -- (text7);
    \draw [-&gt;] (text7) -- (text8);

\end{tikzpicture}

\subsection{Invalid CATS Packets}

The APRS standard is plagued by the existence of invalid packets. A good APRS parser not only handles valid packets --- it also handles slightly malformed ones. Different parsers may handle malformed packets differently, since by definition, they are not in a unified standard. This complicates new implementations and leads to fragmentation of the ecosystem.

CATS aims to avoid this problem. A packet that does not conform rigidly to the standard must have its contents discarded. Even if only one whisker is malformed, all whiskers must be ignored. It is considered an implementation bug if this does not occur. Note that unknown whisker types are not invalid. This allows for future whisker types to be added without breaking compatibility with existing implementations.
</pre></body></html>