1 /*
2  *  Hamlib Interface - definition of radioamateur frequency band plan.
3  *  Copyright (c) 2002 by Stephane Fillod
4  *
5  *
6  *   This library is free software; you can redistribute it and/or
7  *   modify it under the terms of the GNU Lesser General Public
8  *   License as published by the Free Software Foundation; either
9  *   version 2.1 of the License, or (at your option) any later version.
10  *
11  *   This library is distributed in the hope that it will be useful,
12  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  *   Lesser General Public License for more details.
15  *
16  *   You should have received a copy of the GNU Lesser General Public
17  *   License along with this library; if not, write to the Free Software
18  *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
19  *
20  */
21 
22 #ifndef _BANDPLAN_H
23 #define _BANDPLAN_H 1
24 
25 #include <hamlib/rig.h>
26 
27 /*
28  * This header file is internal to Hamlib and its backends,
29  * thus not part of the API.
30  *
31  * Note: don't change this file if ITU band plan changes. A lot of existing
32  * rigs are built this way, so leave them alone.
33  *
34  * As a reminder:
35  *  struct freq_range_list {
36  *      freq_t start;
37  *      freq_t end;
38  *      rmode_t modes;
39  *      int low_power;
40  *      int high_power;
41  *  vfo_t vfo;
42  *  ant_t ant;
43  *  };
44  */
45 
46 
47 /*
48  * ITU Region 1: Europe, Africa and Northern Asia
49  */
50 
51 /* MF: 300 kHz - 3 MHz */
52 #define FRQ_RNG_160m_REGION1(md,lp,hp,v,a) \
53             { kHz(1810), MHz(2), (md), (lp), (hp), (v), (a), "ITU1" }
54 
55 /* HF: 3 MHz - 30 MHz */
56 #define FRQ_RNG_80m_REGION1(md,lp,hp,v,a) \
57             { kHz(3500),kHz(3800), (md), (lp), (hp), (v), (a), "ITU1" }
58 
59 #define FRQ_RNG_60m_REGION1(md,lp,hp,v,a) \
60             { kHz(5351.5),kHz(5366.5), (md), (lp), (hp), (v), (a), "ITU1" }
61 
62 #define FRQ_RNG_40m_REGION1(md,lp,hp,v,a) \
63             { MHz(7),kHz(7100), (md), (lp), (hp), (v), (a), "ITU1" }
64 
65 #define FRQ_RNG_30m_REGION1(md,lp,hp,v,a) \
66             { kHz(10100),kHz(10150), (md), (lp), (hp), (v), (a), "ITU1" }
67 
68 #define FRQ_RNG_20m_REGION1(md,lp,hp,v,a) \
69             { MHz(14),kHz(14350), (md), (lp), (hp), (v), (a), "ITU1" }
70 
71 #define FRQ_RNG_17m_REGION1(md,lp,hp,v,a) \
72             { kHz(18068),kHz(18168), (md), (lp), (hp), (v), (a), "ITU1" }
73 
74 #define FRQ_RNG_15m_REGION1(md,lp,hp,v,a) \
75             { MHz(21),kHz(21450), (md), (lp), (hp), (v), (a), "ITU1" }
76 
77 #define FRQ_RNG_12m_REGION1(md,lp,hp,v,a) \
78             { kHz(24890),kHz(24990), (md), (lp), (hp), (v), (a), "ITU1" }
79 
80 #define FRQ_RNG_10m_REGION1(md,lp,hp,v,a) \
81             { MHz(28),kHz(29700), (md), (lp), (hp), (v), (a), "ITU1" }
82 
83 /* VHF: 30 MHz - 300 MHz */
84 #define FRQ_RNG_6m_REGION1(md,lp,hp,v,a) \
85             { MHz(50),MHz(54), (md), (lp), (hp), (v), (a), "ITU1" }
86 
87 #define FRQ_RNG_4m_REGION1(md,lp,hp,v,a) \
88             { MHz(70),MHz(70.5), (md), (lp), (hp), (v), (a), "ITU1" }
89 
90 #define FRQ_RNG_2m_REGION1(md,lp,hp,v,a) \
91             { MHz(144),MHz(146), (md), (lp), (hp), (v), (a), "ITU1" }
92 
93 /* UHF: 300 MHz - 3 GHz */
94 #define FRQ_RNG_70cm_REGION1(md,lp,hp,v,a) \
95             { MHz(430),MHz(440), (md), (lp), (hp), (v), (a), "ITU1" }
96 
97 #define FRQ_RNG_23cm_REGION1(md,lp,hp,v,a) \
98             { MHz(1240),MHz(1300), (md), (lp), (hp), (v), (a), "ITU1" }
99 
100 #define FRQ_RNG_13cm_REGION1(md,lp,hp,v,a) \
101             { MHz(2300),MHz(2450), (md), (lp), (hp), (v), (a), "ITU1" }
102 
103 
104 /*
105  * ITU Region 2: North America, South America and Greenland
106  */
107 
108 /* MF: 300 kHz - 3 MHz */
109 #define FRQ_RNG_160m_REGION2(md,lp,hp,v,a) \
110             { kHz(1800),MHz(2), (md), (lp), (hp), (v), (a), "ITU2" }
111 
112 /* HF: 3 MHz - 30 MHz */
113 #define FRQ_RNG_80m_REGION2(md,lp,hp,v,a) \
114             { kHz(3500),MHz(4), (md), (lp), (hp), (v), (a), "ITU2" }
115 
116 #define FRQ_RNG_60m_REGION2(md,lp,hp,v,a) \
117             { kHz(5351.5),kHz(5366.5), (md), (lp), (hp), (v), (a), "ITU2" }
118 
119 #define FRQ_RNG_40m_REGION2(md,lp,hp,v,a) \
120             { MHz(7),kHz(7300), (md), (lp), (hp), (v), (a), "ITU2" }
121 
122 #define FRQ_RNG_30m_REGION2(md,lp,hp,v,a) \
123             { kHz(10100),kHz(10150), (md), (lp), (hp), (v), (a), "ITU2" }
124 
125 #define FRQ_RNG_20m_REGION2(md,lp,hp,v,a) \
126             { MHz(14),kHz(14350), (md), (lp), (hp), (v), (a), "ITU2" }
127 
128 #define FRQ_RNG_17m_REGION2(md,lp,hp,v,a) \
129             { kHz(18068),kHz(18168), (md), (lp), (hp), (v), (a), "ITU2" }
130 
131 #define FRQ_RNG_15m_REGION2(md,lp,hp,v,a) \
132             { MHz(21),kHz(21450), (md), (lp), (hp), (v), (a), "ITU2" }
133 
134 #define FRQ_RNG_12m_REGION2(md,lp,hp,v,a) \
135             { kHz(24890),kHz(24990), (md), (lp), (hp), (v), (a), "ITU2" }
136 
137 #define FRQ_RNG_10m_REGION2(md,lp,hp,v,a) \
138             { MHz(28),kHz(29700), (md), (lp), (hp), (v), (a), "ITU2" }
139 
140 /* VHF: 30 MHz - 300 MHz */
141 #define FRQ_RNG_6m_REGION2(md,lp,hp,v,a) \
142             { MHz(50),MHz(54), (md), (lp), (hp), (v), (a), "ITU2" }
143 
144 #define FRQ_RNG_4m_REGION2(md,lp,hp,v,a) \
145             { MHz(70),MHz(70.5), (md), (lp), (hp), (v), (a), "ITU2" }
146 
147 #define FRQ_RNG_2m_REGION2(md,lp,hp,v,a) \
148             { MHz(144),MHz(148), (md), (lp), (hp), (v), (a), "ITU2" }
149 
150 /* UHF: 300 MHz - 3 GHz */
151 #define FRQ_RNG_70cm_REGION2(md,lp,hp,v,a) \
152             { MHz(430),MHz(450), (md), (lp), (hp), (v), (a), "ITU2" }
153 
154 #define FRQ_RNG_23cm_REGION2(md,lp,hp,v,a) \
155             { MHz(1240),MHz(1300), (md), (lp), (hp), (v), (a), "ITU2" }
156 
157 #define FRQ_RNG_13cm_REGION2(md,lp,hp,v,a) \
158             { MHz(2320),MHz(2450), (md), (lp), (hp), (v), (a), "ITU2" }
159 
160 /*
161  * ITU Region 3: South Pacific and Southern Asia
162  * https://web.archive.org/web/20171216012537/http://www.iaru-r3.org/wp-content/files/R3-004%20Band%20Plans%20IARU%20Region%203.docx
163  */
164 
165 /* MF: 300 kHz - 3 MHz */
166 #define FRQ_RNG_160m_REGION3(md,lp,hp,v,a) \
167             { kHz(1800),MHz(2), (md), (lp), (hp), (v), (a), "ITU3" }
168 
169 /* HF: 3 MHz - 30 MHz */
170 #define FRQ_RNG_80m_REGION3(md,lp,hp,v,a) \
171             { kHz(3500),kHz(3900), (md), (lp), (hp), (v), (a), "ITU3" }
172 
173 #define FRQ_RNG_60m_REGION3(md,lp,hp,v,a) \
174             { kHz(5351.5),kHz(5366.5), (md), (lp), (hp), (v), (a), "ITU3" }
175 
176 #define FRQ_RNG_40m_REGION3(md,lp,hp,v,a) \
177             { MHz(7),kHz(7300), (md), (lp), (hp), (v), (a), "ITU3" }
178 
179 #define FRQ_RNG_30m_REGION3(md,lp,hp,v,a) \
180             { kHz(10100),kHz(10150), (md), (lp), (hp), (v), (a), "ITU3" }
181 
182 #define FRQ_RNG_20m_REGION3(md,lp,hp,v,a) \
183             { MHz(14),kHz(14350), (md), (lp), (hp), (v), (a), "ITU3" }
184 
185 #define FRQ_RNG_17m_REGION3(md,lp,hp,v,a) \
186             { kHz(18068),kHz(18168), (md), (lp), (hp), (v), (a), "ITU3" }
187 
188 #define FRQ_RNG_15m_REGION3(md,lp,hp,v,a) \
189             { MHz(21),kHz(21450), (md), (lp), (hp), (v), (a), "ITU3" }
190 
191 #define FRQ_RNG_12m_REGION3(md,lp,hp,v,a) \
192             { kHz(24890),kHz(24990), (md), (lp), (hp), (v), (a), "ITU3" }
193 
194 #define FRQ_RNG_10m_REGION3(md,lp,hp,v,a) \
195             { MHz(28),kHz(29700), (md), (lp), (hp), (v), (a), "ITU3" }
196 
197 /* VHF: 30 MHz - 300 MHz */
198 #define FRQ_RNG_6m_REGION3(md,lp,hp,v,a) \
199             { MHz(50),MHz(54), (md), (lp), (hp), (v), (a), "ITU3" }
200 
201 #define FRQ_RNG_2m_REGION3(md,lp,hp,v,a) \
202             { MHz(144),MHz(148), (md), (lp), (hp), (v), (a), "ITU3" }
203 
204 /* UHF: 300 MHz - 3 GHz */
205 #define FRQ_RNG_70cm_REGION3(md,lp,hp,v,a) \
206             { MHz(430),MHz(450), (md), (lp), (hp), (v), (a), "ITU3" }
207 
208 #define FRQ_RNG_23cm_REGION3(md,lp,hp,v,a) \
209             { MHz(1240),MHz(1300), (md), (lp), (hp), (v), (a), "ITU3" }
210 
211 #define FRQ_RNG_13cm_REGION3(md,lp,hp,v,a) \
212             { MHz(2320),MHz(2450), (md), (lp), (hp), (v), (a), "ITU3" }
213 
214 
215 /*
216  * Now we're done with boring definition
217  * Let's define FRQ_RNG_HF for REGION1, FRQ_RNG_HF_REGION2,
218  * and FRQ_RNG_HF_REGION3 all at once!
219  * NB: FRQ_RNG_HF defines non-AM/AM freq_range for all HF bands,
220  *      plus 160m which is not an HF band strictly speaking.
221  */
222 
223 #define FRQ_RNG_HF(r,m,lp,hp,v,a) \
224     FRQ_RNG_160m_REGION##r((m), (lp), (hp), (v), (a)), \
225     FRQ_RNG_80m_REGION##r((m), (lp), (hp), (v), (a)), \
226     FRQ_RNG_40m_REGION##r((m), (lp), (hp), (v), (a)), \
227     FRQ_RNG_30m_REGION##r((m), (lp), (hp), (v), (a)), \
228     FRQ_RNG_20m_REGION##r((m), (lp), (hp), (v), (a)), \
229     FRQ_RNG_17m_REGION##r((m), (lp), (hp), (v), (a)), \
230     FRQ_RNG_15m_REGION##r((m), (lp), (hp), (v), (a)), \
231     FRQ_RNG_12m_REGION##r((m), (lp), (hp), (v), (a)), \
232     FRQ_RNG_10m_REGION##r((m), (lp), (hp), (v), (a))  \
233 
234 #define FRQ_RNG_60m(r,m,lp,hp,v,a) \
235     FRQ_RNG_60m_REGION##r((m), (lp), (hp), (v), (a)) \
236 
237 #define FRQ_RNG_6m(r,m,lp,hp,v,a) \
238     FRQ_RNG_6m_REGION##r((m), (lp), (hp), (v), (a)) \
239 
240 #define FRQ_RNG_4m(r,m,lp,hp,v,a) \
241     FRQ_RNG_4m_REGION##r((m), (lp), (hp), (v), (a)) \
242 
243 #define FRQ_RNG_2m(r,m,lp,hp,v,a) \
244     FRQ_RNG_2m_REGION##r((m), (lp), (hp), (v), (a)) \
245 
246 #define FRQ_RNG_70cm(r,m,lp,hp,v,a) \
247     FRQ_RNG_70cm_REGION##r((m), (lp), (hp), (v), (a)) \
248 
249 #define FRQ_RNG_23cm(r,m,lp,hp,v,a) \
250     FRQ_RNG_23cm_REGION##r((m), (lp), (hp), (v), (a)) \
251 
252 
253 #endif  /* _BANDPLAN_H */
254