Newer
Older
reed
committed
\subsection{Repeater (0x08)}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
A CATS station may want to articulate repeater information. For instance, a user may want to transmit the repeaters they are monitoring, or a ham radio club may wish to transmit a list of repeaters for their local area. Hypothetically, a CATS-compliant radio could listen to these repeater whiskers and automatically program them into its own memory. \textbf{A valid CATS packet may contain zero or more repeater whiskers.}
Each repeater whisker represents a single repeater.
\subsubsection{Structure}
{\def\arraystretch{1.3}
\begin{tabular}{|l|l|l|l|}
\hline
\textbf{Byte offset} & \textbf{Length} & \textbf{Value} & \textbf{Description} \\
\hline
0 & 1 & 0x08 & Whisker type \\
\hline
1 & 1 & $N$ & Whisker length in bytes \\
\hline
2 & 4 & & Uplink frequency (unsigned integer, Hz) \\
\hline
6 & 4 & & Downlink frequency (unsigned integer, Hz) \\
\hline
10 & 1 & & Modulation type (See simplex whisker) \\
\hline
11 & 3 & & Tone information (See tones below) \\
\hline
14 & 1 & & Power (unsigned integer, ${4 \over{\text{dBm}}} x$, 255 = unknown) \\
\hline
15 & 2 & & Latitude (signed integer, ${2^{15} \over 90 \degree}x$) \\
\hline
17 & 2 & & Longitude (signed integer, ${2^{15} \over 180 \degree}x$) \\
\hline
19 & $N - 17$ & & Repeater name (UTF-8) \\
\hline
\end{tabular}
}
\subsubsection{Tones}
Uplink and downlink tones are encoded in 3 bytes. CTCSS and DCS are both supported. The uplink tone is encoded in the 12 MSBs and the downlink tone is encoded in the 12 LSBs. \newline
\noindent
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}
\hline
MSB &&&&&&&&&&&&&&&&&&&&&&& LSB \\
\hline
23 & 22 & 21 & 20 & 19 & 18 & 17 & 16 & 15 & 14 & 13 & 12 & 11 & 10 & 9 & 8 & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 0 \\
\hline
$U_e$ & $U_p$ & \multicolumn{10}{|c|}{$U_v$} & $D_e$ & $D_p$ & \multicolumn{10}{|c|}{$D_v$} \\
\hline
\end{tabular} \\
\newline \noindent
Where:
\begin{itemize}
\item $U_e$ and $D_e$ represent the encoding type (0 for CTCSS, 1 for DCS)
\item $U_p$ and $D_p$ represent the DCS tone polarity
\begin{itemize}
\item If the type is CTCSS, this value is unused and must be set to 0
\item If the type is DCS, then
\begin{itemize}
\item If the polarity is normal, this value is set to 0
\item If the polarity is reversed, this value is set to 1
\end{itemize}
\end{itemize}
\item $U_v$ and $D_v$ represent the tone value
\begin{itemize}
\item If the type is CTCSS, the value is an unsigned integer from the CTCSS table (see below)
\item If the type is DCS, the value is the DCS code, encoded as an unsigned integer
\item To encode no tone, set the type to CTCSS (0) and set the value to 0
\end{itemize}
\end{itemize}
\subsubsection{CTCSS Table}
\begin{tabular}{|l|l|l|l|l|l|l|l|}
\hline
\textbf{Tone ID} & \textbf{PL tone (Hz)} & & \textbf{Tone ID} & \textbf{PL tone (Hz)} & & \textbf{Tone ID} & \textbf{PL tone (Hz)} \\
\hline
0 & [No tone] & & & & & & \\
\hline
1 & 67.0 & & 15 & 107.2 & & 29 & 173.8 \\
\hline
2 & 69.3 & & 16 & 110.9 & & 30 & 179.9 \\
\hline
3 & 71.9 & & 17 & 114.8 & & 31 & 186.2 \\
\hline
4 & 74.4 & & 18 & 118.8 & & 32 & 192.8 \\
\hline
5 & 77.0 & & 19 & 123.0 & & 33 & 203.5 \\
\hline
6 & 79.7 & & 20 & 127.3 & & 34 & 206.5 \\
\hline
7 & 82.5 & & 21 & 131.8 & & 35 & 210.7 \\
\hline
8 & 85.4 & & 22 & 136.5 & & 36 & 218.1 \\
\hline
9 & 88.5 & & 23 & 141.3 & & 37 & 225.7 \\
\hline
10 & 91.5 & & 24 & 146.2 & & 38 & 229.1 \\
\hline
11 & 94.8 & & 25 & 151.4 & & 39 & 233.6 \\
\hline
12 & 97.4 & & 26 & 156.7 & & 40 & 241.8 \\
\hline
13 & 100.0 & & 27 & 162.2 & & 41 & 250.3 \\
\hline
14 & 103.5 & & 28 & 167.9 & & 42 & 254.1 \\
\hline
\end{tabular}