@ham2k/lib-operation-data 1.1.3 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -0
- package/dist/index.cjs +758 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +95 -1
- package/dist/index.d.ts +95 -1
- package/dist/index.js +753 -21
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -200,8 +200,28 @@ function frequencyForBand(band, mode) {
|
|
|
200
200
|
// src/data/bandPlans.json
|
|
201
201
|
var bandPlans_default = {
|
|
202
202
|
bands: {
|
|
203
|
+
"2190m": {
|
|
204
|
+
mhz: [135.7, 137.8],
|
|
205
|
+
exceptLevels: ["at:3", "at:4", "au:F", "au:S", "be:C", "be:B", "bg:2", "ca:B", "ch:HB3", "cl:ASP", "cl:N", "cn:A", "cz:N", "de:N", "de:E", "dk:D", "hr:P", "hu:KEZDO", "hu:NOVICE", "id:SIAGA", "my:C", "my:B", "nl:N", "no:begrenset", "rs:C", "rs:B", "ru:4", "se:insteg", "si:N", "ua:C", "ua:B", "us:N", "us:T"],
|
|
206
|
+
segments: [
|
|
207
|
+
{ name: "JP 4th Class: DATA only", mhz: [135.7, 137.8], levels: ["jp:4"], superModes: ["DATA"] }
|
|
208
|
+
]
|
|
209
|
+
},
|
|
210
|
+
"630m": {
|
|
211
|
+
mhz: [472, 479],
|
|
212
|
+
exceptLevels: ["at:3", "at:4", "au:F", "au:S", "be:C", "be:B", "bg:2", "ca:B", "ch:HB3", "cl:ASP", "cl:N", "de:N", "de:E", "dk:D", "gb:F", "gb:I", "hr:P", "hu:KEZDO", "hu:NOVICE", "id:SIAGA", "my:C", "my:B", "nl:N", "no:begrenset", "rs:C", "rs:B", "se:insteg", "si:N", "us:N", "us:T"],
|
|
213
|
+
segments: [
|
|
214
|
+
{ name: "JP 4th Class: DATA only", mhz: [472, 479], levels: ["jp:4"], superModes: ["DATA"] }
|
|
215
|
+
]
|
|
216
|
+
},
|
|
217
|
+
"560m": {
|
|
218
|
+
mhz: [501, 504],
|
|
219
|
+
exceptLevels: ["be:C", "be:B"],
|
|
220
|
+
segments: []
|
|
221
|
+
},
|
|
203
222
|
"160m": {
|
|
204
223
|
mhz: [1800, 2e3],
|
|
224
|
+
exceptLevels: ["at:3", "au:F", "au:S", "be:C", "bg:2", "ca:B", "cl:ASP", "cl:N", "cn:A", "de:N", "dk:D", "hr:P", "hu:KEZDO", "id:SIAGA", "kr:4", "my:C", "my:B", "nl:N", "no:begrenset", "rs:C", "rs:B", "ru:4", "se:insteg", "si:N", "us:N", "us:T"],
|
|
205
225
|
segments: [
|
|
206
226
|
{ name: "Out of band Reg1", mhz: [1800, 1810], mode: false, regions: [1] },
|
|
207
227
|
{ name: "CW Reg1", mhz: [1810, 1838], mode: "CW", regions: [1] },
|
|
@@ -209,11 +229,18 @@ var bandPlans_default = {
|
|
|
209
229
|
{ name: "CW", mhz: [1800, 1843], mode: "CW" },
|
|
210
230
|
{ name: "FT8", mhz: [1840, 1843], mode: "FT8", priority: 100 },
|
|
211
231
|
{ name: "Phone", mhz: [1843, 2e3], mode: "SSB", submode: "LSB" },
|
|
212
|
-
{ name: "Australia", mhz: [1800, 1875], mode: null, countries: ["au"] }
|
|
232
|
+
{ name: "Australia", mhz: [1800, 1875], mode: null, countries: ["au"] },
|
|
233
|
+
{ name: "BR: Class A only", mhz: [1850, 2e3], exceptLevels: ["br:C", "br:B"] },
|
|
234
|
+
{ name: "CZ: Class A only", mhz: [1810, 1830], exceptLevels: ["cz:N"] },
|
|
235
|
+
{ name: "HU: CEPT (full) only", mhz: [1850, 2e3], exceptLevels: ["hu:NOVICE"] },
|
|
236
|
+
{ name: "JP 4th Class: DATA only", mhz: [1907.5, 1912.5], levels: ["jp:4"], superModes: ["DATA"] },
|
|
237
|
+
{ name: "UA Entry level (student): DATA only", mhz: [1840, 1842], levels: ["ua:C"], superModes: ["DATA"] },
|
|
238
|
+
{ name: "UA: Novice, Higher qualification (HAREC) only", mhz: [1842, 1850], exceptLevels: ["ua:C"] }
|
|
213
239
|
]
|
|
214
240
|
},
|
|
215
241
|
"80m": {
|
|
216
|
-
mhz: [3500,
|
|
242
|
+
mhz: [3500, 4e3],
|
|
243
|
+
exceptLevels: ["at:3", "bg:2", "ca:B", "cn:A", "de:N", "dk:D", "kr:4", "my:C", "nl:N", "ru:4", "se:insteg"],
|
|
217
244
|
segments: [
|
|
218
245
|
{ name: "CW Reg1", mhz: [3500, 3570], mode: "CW", regions: [1] },
|
|
219
246
|
{ name: "CW", mhz: [3500, 3600], mode: "CW" },
|
|
@@ -222,11 +249,27 @@ var bandPlans_default = {
|
|
|
222
249
|
{ name: "Data", mhz: [3570, 3600], mode: "RTTY" },
|
|
223
250
|
{ name: "FT8", mhz: [3573, 3576], mode: "FT8", priority: 100 },
|
|
224
251
|
{ name: "Phone", mhz: [3600, 4e3], mode: "SSB", submode: "LSB" },
|
|
225
|
-
{ name: "Australia", mhz: [3500, 3800], mode: null, countries: ["au"] }
|
|
252
|
+
{ name: "Australia", mhz: [3500, 3800], mode: null, countries: ["au"] },
|
|
253
|
+
{ name: "AU: Advanced only", mhz: [3776, 3800], exceptLevels: ["au:F", "au:S"] },
|
|
254
|
+
{ name: "BR: Class A only", mhz: [3800, 4e3], exceptLevels: ["br:C", "br:B"] },
|
|
255
|
+
{ name: "CZ: Class A only", mhz: [3500, 3550], exceptLevels: ["cz:N"] },
|
|
256
|
+
{ name: "CZ: Class A only", mhz: [3700, 3800], exceptLevels: ["cz:N"] },
|
|
257
|
+
{ name: "UA: Novice, Higher qualification (HAREC) only", mhz: [3650, 3700], exceptLevels: ["ua:C"] },
|
|
258
|
+
{ name: "UA: Higher qualification (HAREC) only", mhz: [3700, 3730], exceptLevels: ["ua:C", "ua:B"] },
|
|
259
|
+
{ name: "UA: Novice, Higher qualification (HAREC) only", mhz: [3730, 3740], exceptLevels: ["ua:C"] },
|
|
260
|
+
{ name: "UA Novice: DATA only", mhz: [3730, 3740], levels: ["ua:B"], superModes: ["DATA"] },
|
|
261
|
+
{ name: "UA: Higher qualification (HAREC) only", mhz: [3740, 3800], exceptLevels: ["ua:C", "ua:B"] },
|
|
262
|
+
{ name: "US: Amateur Extra only", mhz: [3500, 3525], exceptLevels: ["us:N", "us:T", "us:G", "us:A"] },
|
|
263
|
+
{ name: "US Novice, Technician: CW only", mhz: [3525, 3600], levels: ["us:N", "us:T"], superModes: ["CW"] },
|
|
264
|
+
{ name: "US: Amateur Extra only", mhz: [3600, 3700], exceptLevels: ["us:N", "us:T", "us:G", "us:A"] },
|
|
265
|
+
{ name: "US: Advanced, Amateur Extra only", mhz: [3700, 3800], exceptLevels: ["us:N", "us:T", "us:G"] },
|
|
266
|
+
{ name: "US: General, Advanced, Amateur Extra only", mhz: [3800, 3900], exceptLevels: ["us:N", "us:T"] },
|
|
267
|
+
{ name: "US: General, Advanced, Amateur Extra only", mhz: [3900, 4e3], regions: [2], exceptLevels: ["us:N", "us:T"] }
|
|
226
268
|
]
|
|
227
269
|
},
|
|
228
270
|
"60m": {
|
|
229
|
-
mhz: [
|
|
271
|
+
mhz: [5250, 5450],
|
|
272
|
+
exceptLevels: ["at:3", "at:4", "be:C", "be:B", "bg:2", "br:C", "br:B", "ca:B", "ch:HB3", "cl:ASP", "cl:N", "cn:A", "de:N", "de:E", "dk:D", "gb:F", "gb:I", "hr:P", "hu:KEZDO", "hu:NOVICE", "id:SIAGA", "id:PENGGALANG", "my:C", "nl:N", "no:begrenset", "rs:C", "rs:B", "se:insteg", "si:N", "us:N", "us:T"],
|
|
230
273
|
segments: [
|
|
231
274
|
{ name: "60m Channel 1", mhz: [5330.5, 5333.5] },
|
|
232
275
|
{ name: "60m Channel 2", mhz: [5346.5, 5349.5] },
|
|
@@ -237,6 +280,7 @@ var bandPlans_default = {
|
|
|
237
280
|
},
|
|
238
281
|
"40m": {
|
|
239
282
|
mhz: [7e3, 7300],
|
|
283
|
+
exceptLevels: ["at:3", "at:4", "bg:2", "ca:B", "ch:HB3", "cn:A", "cz:N", "de:N", "de:E", "dk:D", "kr:4", "my:C", "ru:4"],
|
|
240
284
|
segments: [
|
|
241
285
|
{ name: "CW", mhz: [7e3, 7060], mode: "CW" },
|
|
242
286
|
{ name: "CW Reg1", mhz: [7e3, 7040], mode: "CW", regions: [1] },
|
|
@@ -247,11 +291,22 @@ var bandPlans_default = {
|
|
|
247
291
|
{ name: "Data", mhz: [7080, 7125], mode: "RTTY", countries: ["us"] },
|
|
248
292
|
{ name: "Phone", mhz: [7125, 7300], mode: "SSB", submode: "LSB", countries: ["us"] },
|
|
249
293
|
{ name: "Australia", mhz: [7e3, 7300], mode: null, countries: ["au"] },
|
|
250
|
-
{ name: "Out of band Reg1", mhz: [7200, 7300], mode: false, regions: [1] }
|
|
294
|
+
{ name: "Out of band Reg1", mhz: [7200, 7300], mode: false, regions: [1] },
|
|
295
|
+
{ name: "BR: Class B, Class A only", mhz: [7047, 7300], exceptLevels: ["br:C"] },
|
|
296
|
+
{ name: "HU: CEPT Novice, CEPT (full) only", mhz: [7100, 7175], exceptLevels: ["hu:KEZDO"] },
|
|
297
|
+
{ name: "UA Entry level (student): CW only", mhz: [7040, 7050], levels: ["ua:C"], superModes: ["CW"] },
|
|
298
|
+
{ name: "UA Entry level (student): CW/PHONE only", mhz: [7050, 7080], levels: ["ua:C"], superModes: ["CW", "PHONE"] },
|
|
299
|
+
{ name: "UA: Higher qualification (HAREC) only", mhz: [7100, 7200], exceptLevels: ["ua:C", "ua:B"] },
|
|
300
|
+
{ name: "US: Amateur Extra only", mhz: [7e3, 7025], exceptLevels: ["us:N", "us:T", "us:G", "us:A"] },
|
|
301
|
+
{ name: "US Novice, Technician: CW only", mhz: [7025, 7125], levels: ["us:N", "us:T"], superModes: ["CW"] },
|
|
302
|
+
{ name: "US: Advanced, Amateur Extra only", mhz: [7125, 7175], exceptLevels: ["us:N", "us:T", "us:G"] },
|
|
303
|
+
{ name: "US: General, Advanced, Amateur Extra only", mhz: [7175, 7200], exceptLevels: ["us:N", "us:T"] },
|
|
304
|
+
{ name: "US: General, Advanced, Amateur Extra only", mhz: [7200, 7300], regions: [2], exceptLevels: ["us:N", "us:T"] }
|
|
251
305
|
]
|
|
252
306
|
},
|
|
253
307
|
"30m": {
|
|
254
308
|
mhz: [10100, 10150],
|
|
309
|
+
exceptLevels: ["ar:N", "ar:G", "at:3", "at:4", "au:F", "au:S", "bg:2", "br:C", "br:B", "ca:B", "ch:HB3", "cl:ASP", "cn:A", "cz:N", "de:N", "de:E", "dk:D", "hr:P", "hu:KEZDO", "hu:NOVICE", "id:SIAGA", "id:PENGGALANG", "jp:4", "jp:3", "kr:4", "kr:3P", "kr:3T", "my:C", "nl:N", "no:begrenset", "rs:C", "rs:B", "ru:4", "se:insteg", "si:N", "us:N", "us:T"],
|
|
255
310
|
segments: [
|
|
256
311
|
{ name: "CW", mhz: [10100, 10150], mode: "CW" },
|
|
257
312
|
{ name: "CW Reg1", mhz: [10100, 10130], mode: "CW", regions: [1] },
|
|
@@ -259,11 +314,13 @@ var bandPlans_default = {
|
|
|
259
314
|
{ name: "FT8", mhz: [10136, 10139], mode: "FT8", priority: 100 },
|
|
260
315
|
{ name: "FT4", mhz: [10140, 10143], mode: "FT4", priority: 100 },
|
|
261
316
|
{ name: "Australia & New Zealand", mhz: [10100, 10150], mode: null, countries: ["au", "nz"] },
|
|
262
|
-
{ name: "Africa south of the Equator", mhz: [10100, 10150], mode: null, countries: ["ao", "bi", "bw", "cd", "cg", "ga", "ke", "km", "ls", "mg", "mu", "mw", "mz", "na", "rw", "sc", "so", "st", "sz", "tz", "ug", "za", "zm", "zw"] }
|
|
317
|
+
{ name: "Africa south of the Equator", mhz: [10100, 10150], mode: null, countries: ["ao", "bi", "bw", "cd", "cg", "ga", "ke", "km", "ls", "mg", "mu", "mw", "mz", "na", "rw", "sc", "so", "st", "sz", "tz", "ug", "za", "zm", "zw"] },
|
|
318
|
+
{ name: "UA Entry level (student): CW only", mhz: [10136, 10150], levels: ["ua:C"], superModes: ["CW"] }
|
|
263
319
|
]
|
|
264
320
|
},
|
|
265
321
|
"20m": {
|
|
266
322
|
mhz: [14e3, 14350],
|
|
323
|
+
exceptLevels: ["at:3", "at:4", "au:F", "bg:2", "br:C", "br:B", "ca:B", "ch:HB3", "cl:ASP", "cl:N", "cn:A", "cz:N", "de:N", "de:E", "dk:D", "id:SIAGA", "jp:4", "jp:3", "kr:4", "kr:3P", "kr:3T", "my:C", "rs:C", "ru:4", "si:N", "ua:C", "us:N", "us:T"],
|
|
267
324
|
segments: [
|
|
268
325
|
{ name: "CW", mhz: [14e3, 14150], mode: "CW" },
|
|
269
326
|
{ name: "CW Reg1", mhz: [14e3, 14070], mode: "CW", regions: [1] },
|
|
@@ -273,11 +330,27 @@ var bandPlans_default = {
|
|
|
273
330
|
{ name: "FT4", mhz: [14080, 14083], mode: "FT4", priority: 100 },
|
|
274
331
|
{ name: "Phone", mhz: [14112, 14350], mode: "SSB", submode: "USB", regions: [1, 2] },
|
|
275
332
|
{ name: "Phone", mhz: [14150, 14350], mode: "SSB", submode: "USB", countries: ["us"] },
|
|
276
|
-
{ name: "Australia", mhz: [14e3, 14350], mode: null, countries: ["au"] }
|
|
333
|
+
{ name: "Australia", mhz: [14e3, 14350], mode: null, countries: ["au"] },
|
|
334
|
+
{ name: "AR: General, Superior, Special only", mhz: [14e3, 14070], exceptLevels: ["ar:N"] },
|
|
335
|
+
{ name: "AR Novice: CW/DATA only", mhz: [14070, 14099], levels: ["ar:N"], superModes: ["CW", "DATA"] },
|
|
336
|
+
{ name: "AR: General, Superior, Special only", mhz: [14099, 14350], exceptLevels: ["ar:N"] },
|
|
337
|
+
{ name: "HR: Class A only", mhz: [14e3, 14040], exceptLevels: ["hr:P"] },
|
|
338
|
+
{ name: "HR: Class A only", mhz: [14150, 14280], exceptLevels: ["hr:P"] },
|
|
339
|
+
{ name: "HU: CEPT Novice, CEPT (full) only", mhz: [14300, 14350], exceptLevels: ["hu:KEZDO"] },
|
|
340
|
+
{ name: "ID Advanced: CW only", mhz: [14e3, 14070], levels: ["id:PENGGALANG"], superModes: ["CW"] },
|
|
341
|
+
{ name: "ID Advanced: DATA only", mhz: [14070, 14110], levels: ["id:PENGGALANG"], superModes: ["DATA"] },
|
|
342
|
+
{ name: "ID: Extra Class only", mhz: [14150, 14350], exceptLevels: ["id:PENGGALANG"] },
|
|
343
|
+
{ name: "UA Novice: CW/DATA only", mhz: [14100, 14112], levels: ["ua:B"], superModes: ["CW", "DATA"] },
|
|
344
|
+
{ name: "UA Novice: CW only", mhz: [14112, 14250], levels: ["ua:B"], superModes: ["CW"] },
|
|
345
|
+
{ name: "UA: Higher qualification (HAREC) only", mhz: [14250, 14350], exceptLevels: ["ua:B"] },
|
|
346
|
+
{ name: "US: Amateur Extra only", mhz: [14e3, 14025], exceptLevels: ["us:G", "us:A"] },
|
|
347
|
+
{ name: "US: Amateur Extra only", mhz: [14150, 14175], exceptLevels: ["us:G", "us:A"] },
|
|
348
|
+
{ name: "US: Advanced, Amateur Extra only", mhz: [14175, 14225], exceptLevels: ["us:G"] }
|
|
277
349
|
]
|
|
278
350
|
},
|
|
279
351
|
"17m": {
|
|
280
352
|
mhz: [18068, 18168],
|
|
353
|
+
exceptLevels: ["ar:N", "at:3", "at:4", "au:F", "au:S", "be:C", "bg:2", "br:C", "br:B", "ca:B", "ch:HB3", "cl:ASP", "cl:N", "cn:A", "cz:N", "de:N", "de:E", "dk:D", "hr:P", "hu:KEZDO", "hu:NOVICE", "id:SIAGA", "id:PENGGALANG", "jp:4", "kr:4", "kr:3P", "kr:3T", "my:C", "nl:N", "rs:C", "rs:B", "ru:4", "se:insteg", "si:N", "us:N", "us:T"],
|
|
281
354
|
segments: [
|
|
282
355
|
{ name: "CW", mhz: [18068, 18110], mode: "CW" },
|
|
283
356
|
{ name: "CW Reg1", mhz: [18068, 18095], mode: "CW", regions: [1] },
|
|
@@ -287,11 +360,13 @@ var bandPlans_default = {
|
|
|
287
360
|
{ name: "Beacons only", mhz: [18109, 18111], priority: 100 },
|
|
288
361
|
{ name: "Phone", mhz: [18111, 18168], mode: "SSB", submode: "USB" },
|
|
289
362
|
{ name: "Phone US", mhz: [18110, 18168], mode: "SSB", submode: "USB", countries: ["us"] },
|
|
290
|
-
{ name: "Australia", mhz: [18068, 18168], mode: null, countries: ["au"] }
|
|
363
|
+
{ name: "Australia", mhz: [18068, 18168], mode: null, countries: ["au"] },
|
|
364
|
+
{ name: "UA Entry level (student): CW only", mhz: [18100, 18168], levels: ["ua:C"], superModes: ["CW"] }
|
|
291
365
|
]
|
|
292
366
|
},
|
|
293
367
|
"15m": {
|
|
294
368
|
mhz: [21e3, 21450],
|
|
369
|
+
exceptLevels: ["at:3", "bg:2", "ca:B", "cl:ASP", "cl:N", "cn:A", "de:N", "dk:D", "kr:4", "my:C", "nl:N", "rs:C", "ru:4"],
|
|
295
370
|
segments: [
|
|
296
371
|
{ name: "CW", mhz: [21e3, 21150], mode: "CW" },
|
|
297
372
|
{ name: "CW Reg1", mhz: [21e3, 21070], mode: "CW", regions: [1] },
|
|
@@ -301,11 +376,31 @@ var bandPlans_default = {
|
|
|
301
376
|
{ name: "Beacons only", mhz: [21149, 21151], priority: 100 },
|
|
302
377
|
{ name: "Phone", mhz: [21151, 21450], mode: "SSB", submode: "USB" },
|
|
303
378
|
{ name: "Phone US", mhz: [21150, 21450], mode: "SSB", submode: "USB", countries: ["us"] },
|
|
304
|
-
{ name: "Australia", mhz: [21e3, 21450], mode: null, countries: ["au"] }
|
|
379
|
+
{ name: "Australia", mhz: [21e3, 21450], mode: null, countries: ["au"] },
|
|
380
|
+
{ name: "AR: General, Superior, Special only", mhz: [21e3, 21070], exceptLevels: ["ar:N"] },
|
|
381
|
+
{ name: "AR Novice: CW/DATA only", mhz: [21070, 21125], levels: ["ar:N"], superModes: ["CW", "DATA"] },
|
|
382
|
+
{ name: "AR Novice: CW only", mhz: [21125, 21149], levels: ["ar:N"], superModes: ["CW"] },
|
|
383
|
+
{ name: "AR: General, Superior, Special only", mhz: [21149, 21200], exceptLevels: ["ar:N"] },
|
|
384
|
+
{ name: "AR: Superior, Special only", mhz: [21310, 21450], exceptLevels: ["ar:N", "ar:G"] },
|
|
385
|
+
{ name: "BR: Class B, Class A only", mhz: [21150, 21300], exceptLevels: ["br:C"] },
|
|
386
|
+
{ name: "BR: Class A only", mhz: [21300, 21450], exceptLevels: ["br:C", "br:B"] },
|
|
387
|
+
{ name: "CZ: Class A only", mhz: [21e3, 21050], exceptLevels: ["cz:N"] },
|
|
388
|
+
{ name: "CZ: Class A only", mhz: [21200, 21450], exceptLevels: ["cz:N"] },
|
|
389
|
+
{ name: "ID General: CW only", mhz: [21e3, 21070], levels: ["id:SIAGA"], superModes: ["CW"] },
|
|
390
|
+
{ name: "ID General: CW/DATA only", mhz: [21070, 21125], levels: ["id:SIAGA"], superModes: ["CW", "DATA"] },
|
|
391
|
+
{ name: "ID General: CW only", mhz: [21125, 21200], levels: ["id:SIAGA"], superModes: ["CW"] },
|
|
392
|
+
{ name: "ID: Advanced, Extra Class only", mhz: [21200, 21450], exceptLevels: ["id:SIAGA"] },
|
|
393
|
+
{ name: "UA Entry level (student), Novice: CW only", mhz: [21250, 21450], levels: ["ua:C", "ua:B"], superModes: ["CW"] },
|
|
394
|
+
{ name: "US: Amateur Extra only", mhz: [21e3, 21025], exceptLevels: ["us:N", "us:T", "us:G", "us:A"] },
|
|
395
|
+
{ name: "US Novice, Technician: CW only", mhz: [21025, 21200], levels: ["us:N", "us:T"], superModes: ["CW"] },
|
|
396
|
+
{ name: "US: Amateur Extra only", mhz: [21200, 21225], exceptLevels: ["us:N", "us:T", "us:G", "us:A"] },
|
|
397
|
+
{ name: "US: Advanced, Amateur Extra only", mhz: [21225, 21275], exceptLevels: ["us:N", "us:T", "us:G"] },
|
|
398
|
+
{ name: "US: General, Advanced, Amateur Extra only", mhz: [21275, 21450], exceptLevels: ["us:N", "us:T"] }
|
|
305
399
|
]
|
|
306
400
|
},
|
|
307
401
|
"12m": {
|
|
308
|
-
mhz: [
|
|
402
|
+
mhz: [24740, 24990],
|
|
403
|
+
exceptLevels: ["ar:N", "at:3", "at:4", "au:F", "au:S", "be:C", "bg:2", "ca:B", "ch:HB3", "cl:ASP", "cl:N", "cn:A", "cz:N", "de:N", "de:E", "dk:D", "hr:P", "hu:KEZDO", "id:SIAGA", "id:PENGGALANG", "kr:4", "my:C", "nl:N", "no:begrenset", "rs:C", "rs:B", "ru:4", "se:insteg", "si:N", "us:N", "us:T"],
|
|
309
404
|
segments: [
|
|
310
405
|
{ name: "CW", mhz: [24890, 24930], mode: "CW" },
|
|
311
406
|
{ name: "CW Reg1", mhz: [24890, 24915], mode: "CW", regions: [1] },
|
|
@@ -315,11 +410,13 @@ var bandPlans_default = {
|
|
|
315
410
|
{ name: "Phone", mhz: [24930, 24990], mode: "SSB", submode: "USB" },
|
|
316
411
|
{ name: "Beacons only", mhz: [24929, 24931], priority: 100 },
|
|
317
412
|
{ name: "Phone US", mhz: [24930, 24990], mode: "SSB", submode: "USB", countries: ["us"] },
|
|
318
|
-
{ name: "Australia", mhz: [24890, 24990], mode: null, countries: ["au"] }
|
|
413
|
+
{ name: "Australia", mhz: [24890, 24990], mode: null, countries: ["au"] },
|
|
414
|
+
{ name: "UA Entry level (student): CW only", mhz: [24915, 24990], levels: ["ua:C"], superModes: ["CW"] }
|
|
319
415
|
]
|
|
320
416
|
},
|
|
321
417
|
"10m": {
|
|
322
418
|
mhz: [28e3, 29700],
|
|
419
|
+
exceptLevels: ["at:3", "bg:2", "ca:B", "cn:A", "kr:4", "my:C", "rs:C", "ru:4"],
|
|
323
420
|
segments: [
|
|
324
421
|
{ name: "CW", mhz: [28e3, 28190], mode: "CW" },
|
|
325
422
|
{ name: "CW Reg1", mhz: [28e3, 28070], mode: "CW", regions: [1] },
|
|
@@ -334,11 +431,23 @@ var bandPlans_default = {
|
|
|
334
431
|
{ name: "Repeater Uplinks", mhz: [29520, 29590] },
|
|
335
432
|
{ name: "FM", mhz: [29520, 29700], mode: "FM" },
|
|
336
433
|
{ name: "Repeater Downlinks", mhz: [29620, 29700] },
|
|
337
|
-
{ name: "Australia", mhz: [28e3, 29700], mode: null, countries: ["au"] }
|
|
434
|
+
{ name: "Australia", mhz: [28e3, 29700], mode: null, countries: ["au"] },
|
|
435
|
+
{ name: "CZ: Class A only", mhz: [28e3, 28050], exceptLevels: ["cz:N"] },
|
|
436
|
+
{ name: "CZ: Class A only", mhz: [28400, 29700], exceptLevels: ["cz:N"] },
|
|
437
|
+
{ name: "UA Entry level (student), Novice: CW/PHONE only", mhz: [28675, 28685], levels: ["ua:C", "ua:B"], superModes: ["CW", "PHONE"] },
|
|
438
|
+
{ name: "UA: Novice, Higher qualification (HAREC) only", mhz: [29300, 29520], exceptLevels: ["ua:C"] },
|
|
439
|
+
{ name: "US Novice, Technician: CW/PHONE only", mhz: [28300, 28500], levels: ["us:N", "us:T"], superModes: ["CW", "PHONE"] },
|
|
440
|
+
{ name: "US: General, Advanced, Amateur Extra only", mhz: [28500, 29700], exceptLevels: ["us:N", "us:T"] }
|
|
338
441
|
]
|
|
339
442
|
},
|
|
443
|
+
"8m": {
|
|
444
|
+
mhz: [40660, 40700],
|
|
445
|
+
exceptLevels: ["be:C", "be:B", "si:N"],
|
|
446
|
+
segments: []
|
|
447
|
+
},
|
|
340
448
|
"6m": {
|
|
341
449
|
mhz: [5e4, 54e3],
|
|
450
|
+
exceptLevels: ["at:3", "at:4", "au:F", "be:C", "bg:2", "ch:HB3", "cl:ASP", "cz:N", "de:N", "de:E", "hr:P", "hu:KEZDO", "hu:NOVICE", "id:SIAGA", "nl:N", "rs:C", "rs:B", "ua:C", "ua:B", "us:N"],
|
|
342
451
|
segments: [
|
|
343
452
|
{ name: "Beacon project Reg1", mhz: [5e4, 50010], mode: null, regions: [1] },
|
|
344
453
|
{ name: "Beacon project Reg2", mhz: [50010, 50020], mode: null, regions: [2] },
|
|
@@ -354,11 +463,13 @@ var bandPlans_default = {
|
|
|
354
463
|
{ name: "FT8", mhz: [50313, 50316], mode: "FT8", priority: 100 },
|
|
355
464
|
{ name: "FT4", mhz: [50318, 50321], mode: "FT4", priority: 100 },
|
|
356
465
|
{ name: "FT8", mhz: [50323, 50326], mode: "FT8", priority: 100 },
|
|
357
|
-
{ name: "Australia", mhz: [5e4, 54e3], mode: null, countries: ["au"] }
|
|
466
|
+
{ name: "Australia", mhz: [5e4, 54e3], mode: null, countries: ["au"] },
|
|
467
|
+
{ name: "AR Novice: CW only", mhz: [51e3, 51100], levels: ["ar:N"], superModes: ["CW"] }
|
|
358
468
|
]
|
|
359
469
|
},
|
|
360
470
|
"4m": {
|
|
361
|
-
mhz: [
|
|
471
|
+
mhz: [69887.5, 70512.5],
|
|
472
|
+
exceptLevels: ["be:C", "be:B", "bg:2", "ch:HB3", "hr:P", "hu:KEZDO", "hu:NOVICE", "nl:N", "no:begrenset", "rs:C", "rs:B"],
|
|
362
473
|
segments: [
|
|
363
474
|
{ name: "Beacons only Reg1", mhz: [70090, 70100], mode: "CW", regions: [1] },
|
|
364
475
|
{ name: "CW Reg1", mhz: [7e4, 70090], mode: "CW", regions: [1] },
|
|
@@ -371,6 +482,7 @@ var bandPlans_default = {
|
|
|
371
482
|
},
|
|
372
483
|
"2m": {
|
|
373
484
|
mhz: [144e3, 148e3],
|
|
485
|
+
exceptLevels: ["us:N"],
|
|
374
486
|
segments: [
|
|
375
487
|
{ name: "CW", mhz: [144e3, 144100], mode: "CW" },
|
|
376
488
|
{ name: "Satellite downlink Reg1", mhz: [144e3, 144025], mode: null, regions: [1] },
|
|
@@ -385,19 +497,26 @@ var bandPlans_default = {
|
|
|
385
497
|
{ name: "Reg1", mhz: [144500, 144794], mode: null, regions: [1] },
|
|
386
498
|
{ name: "FM Satellite Reg1", mhz: [145194, 145206], mode: "FM", regions: [1] },
|
|
387
499
|
{ name: "FM Reg1", mhz: [145206, 145563], mode: "FM", regions: [1] },
|
|
388
|
-
{ name: "Out of band Reg1", mhz: [146e3, 148e3], mode: false, regions: [1] }
|
|
500
|
+
{ name: "Out of band Reg1", mhz: [146e3, 148e3], mode: false, regions: [1] },
|
|
501
|
+
{ name: "HU: CEPT (full) only", mhz: [144400, 144500], exceptLevels: ["hu:KEZDO", "hu:NOVICE"] },
|
|
502
|
+
{ name: "HU: CEPT (full) only", mhz: [145562.5, 145794], exceptLevels: ["hu:KEZDO", "hu:NOVICE"] },
|
|
503
|
+
{ name: "UA: Higher qualification (HAREC) only", mhz: [144e3, 144035], exceptLevels: ["ua:C", "ua:B"] }
|
|
389
504
|
]
|
|
390
505
|
},
|
|
391
506
|
"1.25m": {
|
|
392
|
-
mhz: [
|
|
507
|
+
mhz: [219e3, 225e3],
|
|
508
|
+
exceptLevels: ["cl:ASP"],
|
|
393
509
|
segments: [
|
|
394
510
|
{ name: "CW", mhz: [222e3, 222070], mode: "CW" },
|
|
395
511
|
{ name: "Phone", mhz: [222070, 222150], mode: "SSB", submode: "USB" },
|
|
396
|
-
{ name: "FM", mhz: [222200, 225e3], mode: "FM" }
|
|
512
|
+
{ name: "FM", mhz: [222200, 225e3], mode: "FM" },
|
|
513
|
+
{ name: "AR Novice: DATA only", mhz: [220500, 221e3], levels: ["ar:N"], superModes: ["DATA"] },
|
|
514
|
+
{ name: "US: Technician, General, Advanced, Amateur Extra only", mhz: [219e3, 22e4], regions: [2], exceptLevels: ["us:N"] }
|
|
397
515
|
]
|
|
398
516
|
},
|
|
399
517
|
"70cm": {
|
|
400
518
|
mhz: [42e4, 45e4],
|
|
519
|
+
exceptLevels: ["cl:ASP", "se:insteg", "us:N"],
|
|
401
520
|
segments: [
|
|
402
521
|
{ name: "Out of band Reg1", mhz: [42e4, 43e4], mode: false, regions: [1] },
|
|
403
522
|
{ name: "CW", mhz: [432e3, 432100], mode: "CW" },
|
|
@@ -406,14 +525,90 @@ var bandPlans_default = {
|
|
|
406
525
|
{ name: "Phone", mhz: [432100, 432400], mode: "SSB", submode: "USB", regions: [1] },
|
|
407
526
|
{ name: "FM", mhz: [42e4, 45e4], mode: "FM" },
|
|
408
527
|
{ name: "FM Reg1", mhz: [433400, 433575], mode: "FM", regions: [1] },
|
|
409
|
-
{ name: "Out of band Reg1", mhz: [44e4, 45e4], mode: false, regions: [1] }
|
|
528
|
+
{ name: "Out of band Reg1", mhz: [44e4, 45e4], mode: false, regions: [1] },
|
|
529
|
+
{ name: "HU: CEPT (full) only", mhz: [431975, 432e3], exceptLevels: ["hu:KEZDO", "hu:NOVICE"] },
|
|
530
|
+
{ name: "HU: CEPT (full) only", mhz: [432400, 432500], exceptLevels: ["hu:KEZDO", "hu:NOVICE"] },
|
|
531
|
+
{ name: "HU: CEPT (full) only", mhz: [438e3, 44e4], exceptLevels: ["hu:KEZDO", "hu:NOVICE"] },
|
|
532
|
+
{ name: "UA: Higher qualification (HAREC) only", mhz: [432e3, 432025], exceptLevels: ["ua:C", "ua:B"] }
|
|
410
533
|
]
|
|
411
534
|
},
|
|
412
535
|
"33cm": {
|
|
413
536
|
mhz: [902e3, 928e3],
|
|
414
537
|
segments: [
|
|
415
|
-
{ name: "FM", mhz: [927e3, 928e3], mode: "FM" }
|
|
538
|
+
{ name: "FM", mhz: [927e3, 928e3], mode: "FM" },
|
|
539
|
+
{ name: "US: Technician, General, Advanced, Amateur Extra only", mhz: [902e3, 928e3], regions: [2], exceptLevels: ["us:N"] }
|
|
540
|
+
]
|
|
541
|
+
},
|
|
542
|
+
"23cm": {
|
|
543
|
+
mhz: [124e4, 1325e3],
|
|
544
|
+
exceptLevels: ["at:3", "at:4", "au:F", "be:C", "be:B", "bg:2", "ch:HB3", "cl:ASP", "de:N", "gb:F", "kr:3P", "kr:3T", "my:C", "my:B", "nl:N", "no:begrenset", "rs:C", "rs:B", "se:insteg", "si:N"],
|
|
545
|
+
segments: [
|
|
546
|
+
{ name: "HU: CEPT (full) only", mhz: [124e4, 1290994], exceptLevels: ["hu:KEZDO", "hu:NOVICE"] },
|
|
547
|
+
{ name: "HU Beginner (Kezd\u0151), CEPT Novice: PHONE only", mhz: [1290994, 1291494], levels: ["hu:KEZDO", "hu:NOVICE"], superModes: ["PHONE"] },
|
|
548
|
+
{ name: "HU: CEPT (full) only", mhz: [1291494, 1297494], exceptLevels: ["hu:KEZDO", "hu:NOVICE"] },
|
|
549
|
+
{ name: "HU Beginner (Kezd\u0151), CEPT Novice: PHONE only", mhz: [1297494, 1298e3], levels: ["hu:KEZDO", "hu:NOVICE"], superModes: ["PHONE"] },
|
|
550
|
+
{ name: "HU: CEPT (full) only", mhz: [1298e3, 13e5], exceptLevels: ["hu:KEZDO", "hu:NOVICE"] },
|
|
551
|
+
{ name: "US: Technician, General, Advanced, Amateur Extra only", mhz: [124e4, 127e4], exceptLevels: ["us:N"] },
|
|
552
|
+
{ name: "US: Technician, General, Advanced, Amateur Extra only", mhz: [1295e3, 13e5], exceptLevels: ["us:N"] }
|
|
553
|
+
]
|
|
554
|
+
},
|
|
555
|
+
"13cm": {
|
|
556
|
+
mhz: [23e5, 245e4],
|
|
557
|
+
exceptLevels: ["at:3", "at:4", "au:F", "be:C", "be:B", "ch:HB3", "cl:ASP", "de:N", "dk:D", "hu:KEZDO", "hu:NOVICE", "kr:3P", "kr:3T", "my:C", "my:B", "nl:N", "se:insteg", "si:N", "us:N"],
|
|
558
|
+
segments: [
|
|
559
|
+
{ name: "AU: Advanced only", mhz: [23e5, 2302e3], exceptLevels: ["au:S"] },
|
|
560
|
+
{ name: "GB: Intermediate, Full only", mhz: [231e4, 235e4], exceptLevels: ["gb:F"] },
|
|
561
|
+
{ name: "GB: Intermediate, Full only", mhz: [239e4, 24e5], exceptLevels: ["gb:F"] }
|
|
562
|
+
]
|
|
563
|
+
},
|
|
564
|
+
"9cm": {
|
|
565
|
+
mhz: [33e5, 36e5],
|
|
566
|
+
exceptLevels: ["at:3", "at:4", "au:F", "au:S", "cl:ASP", "cl:N", "cn:A", "de:N", "dk:D", "gb:F", "hr:P", "my:C", "my:B", "nl:N", "no:begrenset", "si:N"],
|
|
567
|
+
segments: []
|
|
568
|
+
},
|
|
569
|
+
"6cm": {
|
|
570
|
+
mhz: [565e4, 5925e3],
|
|
571
|
+
exceptLevels: ["at:3", "at:4", "au:F", "be:C", "be:B", "ch:HB3", "cl:ASP", "cn:A", "de:N", "dk:D", "hu:KEZDO", "hu:NOVICE", "my:C", "my:B", "nl:N", "no:begrenset", "se:insteg", "si:N", "us:N"],
|
|
572
|
+
segments: [
|
|
573
|
+
{ name: "GB: Intermediate, Full only", mhz: [583e4, 585e4], exceptLevels: ["gb:F"] },
|
|
574
|
+
{ name: "UA: Entry level (student), Higher qualification (HAREC) only", mhz: [566e4, 567e4], exceptLevels: ["ua:B"] },
|
|
575
|
+
{ name: "UA: Higher qualification (HAREC) only", mhz: [583e4, 585e4], exceptLevels: ["ua:C", "ua:B"] }
|
|
416
576
|
]
|
|
577
|
+
},
|
|
578
|
+
"3cm": {
|
|
579
|
+
mhz: [1e7, 105e5],
|
|
580
|
+
exceptLevels: ["at:3", "at:4", "au:F", "au:S", "be:C", "be:B", "ch:HB3", "cl:ASP", "cl:N", "cn:A", "de:N", "dk:D", "hu:KEZDO", "hu:NOVICE", "id:SIAGA", "kr:3P", "kr:3T", "my:C", "my:B", "nl:N", "pl:1", "se:insteg", "si:N", "us:N"],
|
|
581
|
+
segments: []
|
|
582
|
+
},
|
|
583
|
+
"1.25cm": {
|
|
584
|
+
mhz: [24e6, 2425e4],
|
|
585
|
+
exceptLevels: ["at:3", "at:4", "au:F", "au:S", "be:C", "be:B", "ch:HB3", "cl:ASP", "cl:N", "cn:A", "de:N", "dk:D", "gb:F", "hu:KEZDO", "hu:NOVICE", "id:SIAGA", "kr:4", "kr:3P", "kr:3T", "my:C", "my:B", "nl:N", "no:begrenset", "se:insteg", "si:N", "us:N"],
|
|
586
|
+
segments: []
|
|
587
|
+
},
|
|
588
|
+
"6mm": {
|
|
589
|
+
mhz: [47e6, 485e5],
|
|
590
|
+
exceptLevels: ["at:3", "at:4", "au:F", "au:S", "be:C", "be:B", "ch:HB3", "cn:A", "de:N", "gb:F", "hu:KEZDO", "hu:NOVICE", "id:SIAGA", "kr:4", "kr:3P", "kr:3T", "my:C", "my:B", "nl:N", "si:N", "us:N"],
|
|
591
|
+
segments: []
|
|
592
|
+
},
|
|
593
|
+
"4mm": {
|
|
594
|
+
mhz: [755e5, 815e5],
|
|
595
|
+
exceptLevels: ["at:3", "at:4", "au:F", "au:S", "be:C", "be:B", "ch:HB3", "cn:A", "de:N", "gb:F", "hu:KEZDO", "hu:NOVICE", "id:SIAGA", "kr:4", "kr:3P", "kr:3T", "my:C", "my:B", "nl:N", "si:N", "us:N"],
|
|
596
|
+
segments: []
|
|
597
|
+
},
|
|
598
|
+
"2.5mm": {
|
|
599
|
+
mhz: [11998e4, 123e6],
|
|
600
|
+
exceptLevels: ["at:3", "at:4", "au:F", "au:S", "be:C", "be:B", "ch:HB3", "de:N", "gb:F", "hu:KEZDO", "hu:NOVICE", "id:SIAGA", "nl:N", "si:N", "us:N"],
|
|
601
|
+
segments: []
|
|
602
|
+
},
|
|
603
|
+
"2mm": {
|
|
604
|
+
mhz: [134e6, 149e6],
|
|
605
|
+
exceptLevels: ["at:3", "at:4", "au:F", "au:S", "be:C", "be:B", "ch:HB3", "cn:A", "de:N", "gb:F", "hu:KEZDO", "hu:NOVICE", "id:SIAGA", "kr:4", "kr:3P", "kr:3T", "nl:N", "si:N", "us:N"],
|
|
606
|
+
segments: []
|
|
607
|
+
},
|
|
608
|
+
"1mm": {
|
|
609
|
+
mhz: [241e6, 25e7],
|
|
610
|
+
exceptLevels: ["at:3", "at:4", "au:F", "au:S", "be:C", "be:B", "ch:HB3", "cn:A", "de:N", "gb:F", "hu:KEZDO", "hu:NOVICE", "kr:4", "kr:3P", "kr:3T", "my:C", "my:B", "nl:N", "si:N", "us:N"],
|
|
611
|
+
segments: []
|
|
417
612
|
}
|
|
418
613
|
}
|
|
419
614
|
};
|
|
@@ -580,9 +775,12 @@ function superModeForMode(mode) {
|
|
|
580
775
|
}
|
|
581
776
|
}
|
|
582
777
|
var bandPlansData = bandPlans_default;
|
|
778
|
+
function isLicenseSegment(segment) {
|
|
779
|
+
return Boolean(segment.exceptLevels || segment.levels);
|
|
780
|
+
}
|
|
583
781
|
var AllSegments = Object.keys(bandPlansData.bands).reduce((segments, band) => {
|
|
584
782
|
return segments.concat(
|
|
585
|
-
bandPlansData.bands[band].segments.map((segment) => {
|
|
783
|
+
bandPlansData.bands[band].segments.filter((segment) => !isLicenseSegment(segment)).map((segment) => {
|
|
586
784
|
const mhz = Array.isArray(segment.mhz) && segment.mhz.length >= 2 ? [segment.mhz[0], segment.mhz[1]] : [0, 0];
|
|
587
785
|
return {
|
|
588
786
|
name: segment.name,
|
|
@@ -625,6 +823,540 @@ function modeForFrequency(frequency, options = {}) {
|
|
|
625
823
|
return sortedSegments[0]?.mode;
|
|
626
824
|
}
|
|
627
825
|
|
|
826
|
+
// src/data/licenseLevels.json
|
|
827
|
+
var licenseLevels_default = {
|
|
828
|
+
jurisdictions: [
|
|
829
|
+
{
|
|
830
|
+
key: "ar",
|
|
831
|
+
name: "Argentina",
|
|
832
|
+
regulator: "ENACOM",
|
|
833
|
+
rules: "Resoluci\xF3n ENACOM 3635-E/2017 (Reglamento General de Radioaficionados, Anexo A band plan) as amended by Res. ENACOM 1186/2024",
|
|
834
|
+
term: "License Category",
|
|
835
|
+
termLocal: "categor\xEDa",
|
|
836
|
+
entities: ["LU"],
|
|
837
|
+
levels: [
|
|
838
|
+
{ code: "N", name: "Novice", nameLocal: "Novicio", tier: "intermediate", aliases: ["Inicial"], maxPowerW: 200 },
|
|
839
|
+
{ code: "G", name: "General", tier: "intermediate", aliases: ["Intermedia"], maxPowerW: 1e3 },
|
|
840
|
+
{ code: "S", name: "Superior", tier: "full", maxPowerW: 1500 },
|
|
841
|
+
{ code: "E", name: "Special", nameLocal: "Especial", tier: "full", maxPowerW: 1500 }
|
|
842
|
+
]
|
|
843
|
+
},
|
|
844
|
+
{
|
|
845
|
+
key: "at",
|
|
846
|
+
name: "Austria",
|
|
847
|
+
regulator: "Fernmeldeb\xFCros (Fernmeldebeh\xF6rde, Bundesministerium f\xFCr Finanzen)",
|
|
848
|
+
term: "License Class",
|
|
849
|
+
termLocal: "Bewilligungsklasse",
|
|
850
|
+
entities: ["OE"],
|
|
851
|
+
levels: [
|
|
852
|
+
{ code: "3", name: "Class 3", nameLocal: "Bewilligungsklasse 3", tier: "basic", maxPowerW: 100 },
|
|
853
|
+
{ code: "4", name: "Class 4", nameLocal: "Bewilligungsklasse 4", tier: "intermediate", maxPowerW: 100 },
|
|
854
|
+
{ code: "1", name: "Class 1", nameLocal: "Bewilligungsklasse 1", tier: "full", maxPowerW: 1e3 }
|
|
855
|
+
]
|
|
856
|
+
},
|
|
857
|
+
{
|
|
858
|
+
key: "au",
|
|
859
|
+
name: "Australia",
|
|
860
|
+
regulator: "ACMA",
|
|
861
|
+
term: "Licence Level",
|
|
862
|
+
termLocal: "qualification",
|
|
863
|
+
entities: ["VK", "VK9X", "VK9C", "VK9N", "VK9L", "VK9W", "VK9M", "VK0H", "VK0M"],
|
|
864
|
+
levels: [
|
|
865
|
+
{ code: "F", name: "Foundation", nameLocal: "ACMA recognition certificate (Foundation)", tier: "intermediate", maxPowerW: 10 },
|
|
866
|
+
{ code: "S", name: "Standard", nameLocal: "ACMA recognition certificate (Standard)", tier: "intermediate", maxPowerW: 100 },
|
|
867
|
+
{ code: "A", name: "Advanced", nameLocal: "ACMA recognition certificate (Advanced)", tier: "full", maxPowerW: 400 }
|
|
868
|
+
],
|
|
869
|
+
callsigns: [
|
|
870
|
+
{ pattern: "^VK[0-9][A-Z]{2}$", level: "A", entities: ["VK"] }
|
|
871
|
+
]
|
|
872
|
+
},
|
|
873
|
+
{
|
|
874
|
+
key: "be",
|
|
875
|
+
name: "Belgium",
|
|
876
|
+
regulator: "BIPT/IBPT",
|
|
877
|
+
term: "Licence Class",
|
|
878
|
+
termLocal: "certificat d'op\xE9rateur de classe A/B/C",
|
|
879
|
+
entities: ["ON"],
|
|
880
|
+
levels: [
|
|
881
|
+
{ code: "C", name: "Entry (Basic)", nameLocal: "Certificat d'op\xE9rateur de classe C (ex licence de base)", tier: "intermediate", maxPowerW: 25 },
|
|
882
|
+
{ code: "B", name: "Novice", nameLocal: "Certificat d'op\xE9rateur de classe B", tier: "intermediate", maxPowerW: 100 },
|
|
883
|
+
{ code: "A", name: "HAREC", nameLocal: "Certificat d'op\xE9rateur de classe A (ex certificat HAREC)", tier: "full", maxPowerW: 1500 }
|
|
884
|
+
],
|
|
885
|
+
callsigns: [
|
|
886
|
+
{ pattern: "^ON3[A-Z]{2,3}$", level: "C" },
|
|
887
|
+
{ pattern: "^ON2[A-Z]{2,3}$", level: "B", atLeast: true },
|
|
888
|
+
{ pattern: "^ON[14-9][A-Z]{1,3}$", level: "A" }
|
|
889
|
+
]
|
|
890
|
+
},
|
|
891
|
+
{
|
|
892
|
+
key: "bg",
|
|
893
|
+
name: "Bulgaria",
|
|
894
|
+
regulator: "CRC (\u041A\u043E\u043C\u0438\u0441\u0438\u044F \u0437\u0430 \u0440\u0435\u0433\u0443\u043B\u0438\u0440\u0430\u043D\u0435 \u043D\u0430 \u0441\u044A\u043E\u0431\u0449\u0435\u043D\u0438\u044F\u0442\u0430)",
|
|
895
|
+
term: "License Class",
|
|
896
|
+
termLocal: "\u0440\u0430\u0434\u0438\u043E\u043B\u044E\u0431\u0438\u0442\u0435\u043B\u0441\u043A\u0438 \u043A\u043B\u0430\u0441",
|
|
897
|
+
entities: ["LZ"],
|
|
898
|
+
levels: [
|
|
899
|
+
{ code: "2", name: "Class 2", nameLocal: "\u041A\u043B\u0430\u0441 2", tier: "basic", maxPowerW: 5, superModes: ["PHONE", "DATA"] },
|
|
900
|
+
{ code: "1", name: "Class 1", nameLocal: "\u041A\u043B\u0430\u0441 1", tier: "full", maxPowerW: 350 }
|
|
901
|
+
],
|
|
902
|
+
callsigns: [
|
|
903
|
+
{ pattern: "^LZ[0-9][A-Z]{2}$", level: "1" }
|
|
904
|
+
]
|
|
905
|
+
},
|
|
906
|
+
{
|
|
907
|
+
key: "br",
|
|
908
|
+
name: "Brazil",
|
|
909
|
+
regulator: "Anatel",
|
|
910
|
+
rules: "Res. Anatel 777/2025 (RGST) Art. 277 (classes); Ato SOR 926/2024 (bands/power by class); Ato 3448/2026 (operations, exams, callsigns)",
|
|
911
|
+
term: "License Class",
|
|
912
|
+
termLocal: "classe",
|
|
913
|
+
entities: ["PY", "PY0F", "PY0S", "PY0T"],
|
|
914
|
+
levels: [
|
|
915
|
+
{ code: "C", name: "Class C", nameLocal: "Classe C", tier: "intermediate", aliases: ["Classe D"], maxPowerW: 100 },
|
|
916
|
+
{ code: "B", name: "Class B", nameLocal: "Classe B", tier: "intermediate", maxPowerW: 1e3 },
|
|
917
|
+
{ code: "A", name: "Class A", nameLocal: "Classe A", tier: "full", maxPowerW: 1500 }
|
|
918
|
+
],
|
|
919
|
+
callsigns: [
|
|
920
|
+
{ pattern: "^PU[0-9][A-Z]{3}$", level: "C" },
|
|
921
|
+
{ pattern: "^PV2[K-Y][A-Z]{2}$", level: "C" }
|
|
922
|
+
]
|
|
923
|
+
},
|
|
924
|
+
{
|
|
925
|
+
key: "ca",
|
|
926
|
+
name: "Canada",
|
|
927
|
+
regulator: "ISED",
|
|
928
|
+
rules: "RBR-4 Issue 3 (July 2022); RIC-3 Issue 5 (March 2022); Radiocommunication Regulations",
|
|
929
|
+
term: "Qualification",
|
|
930
|
+
termLocal: "qualification",
|
|
931
|
+
entities: ["VE"],
|
|
932
|
+
levels: [
|
|
933
|
+
{ code: "B", name: "Basic", nameLocal: "Basic Qualification / comp\xE9tence de base", tier: "basic", maxPowerW: 560 },
|
|
934
|
+
{ code: "B/H", name: "Basic with Honours", nameLocal: "Basic Qualification with Honours / comp\xE9tence de base re\xE7ue avec distinction", tier: "full", maxPowerW: 560 },
|
|
935
|
+
{ code: "B+5", name: "Basic + Morse (5 wpm)", nameLocal: "Morse Code Qualification / comp\xE9tence en code Morse", tier: "full", maxPowerW: 560 },
|
|
936
|
+
{ code: "B+A", name: "Basic + Advanced", nameLocal: "Advanced Qualification / comp\xE9tence sup\xE9rieure", tier: "full", maxPowerW: 2250 }
|
|
937
|
+
]
|
|
938
|
+
},
|
|
939
|
+
{
|
|
940
|
+
key: "ch",
|
|
941
|
+
name: "Switzerland",
|
|
942
|
+
regulator: "OFCOM/BAKOM",
|
|
943
|
+
term: "Licence Class",
|
|
944
|
+
termLocal: "F\xE4higkeitszeugnis (DE) / certificat de capacit\xE9 (FR); formerly Konzession",
|
|
945
|
+
entities: ["HB"],
|
|
946
|
+
levels: [
|
|
947
|
+
{ code: "HB3", name: "Novice", nameLocal: "Einsteigerausweis f\xFCr Funkamateurinnen und Funkamateure (F\xE4higkeitszeugnis Novice)", tier: "intermediate", maxPowerW: 100 },
|
|
948
|
+
{ code: "HB9", name: "Full (CEPT)", nameLocal: "F\xE4higkeitszeugnis f\xFCr den Amateurfunk (CEPT)", tier: "full", maxPowerW: 1e3 }
|
|
949
|
+
],
|
|
950
|
+
callsigns: [
|
|
951
|
+
{ pattern: "^HB3[A-Z]{3}$", level: "HB3" },
|
|
952
|
+
{ pattern: "^HB9[A-Z]{3}$", level: "HB9" }
|
|
953
|
+
]
|
|
954
|
+
},
|
|
955
|
+
{
|
|
956
|
+
key: "cl",
|
|
957
|
+
name: "Chile",
|
|
958
|
+
regulator: "SUBTEL",
|
|
959
|
+
rules: "DS 523/2006 (Reglamento del Servicio de Aficionados a las Radiocomunicaciones) as amended by DS 213/2012; Res. Exenta 1228/2008 + 175/2014 (callsigns); DS 127/2006 + DS 192/2023 (band plan)",
|
|
960
|
+
term: "License Category",
|
|
961
|
+
termLocal: "categor\xEDa",
|
|
962
|
+
entities: ["CE", "CE0Y", "CE0X", "CE0Z"],
|
|
963
|
+
levels: [
|
|
964
|
+
{ code: "ASP", name: "Aspirant", nameLocal: "Aspirante", tier: "intermediate", maxPowerW: 100 },
|
|
965
|
+
{ code: "N", name: "Novice", nameLocal: "Novicio", tier: "intermediate", maxPowerW: 200 },
|
|
966
|
+
{ code: "G", name: "General", tier: "full", maxPowerW: 1200 },
|
|
967
|
+
{ code: "S", name: "Superior", tier: "full", maxPowerW: 1200 }
|
|
968
|
+
],
|
|
969
|
+
callsigns: [
|
|
970
|
+
{ pattern: "^CD[0-9][A-Z]{3}$", level: "ASP" },
|
|
971
|
+
{ pattern: "^CA[0-9][A-Z]{3}$", level: "N" },
|
|
972
|
+
{ pattern: "^CE[0-9][A-Z]{1,3}$", level: "G", entities: ["CE"] },
|
|
973
|
+
{ pattern: "^XQ[0-9][A-Z]{1,3}$", level: "S" }
|
|
974
|
+
]
|
|
975
|
+
},
|
|
976
|
+
{
|
|
977
|
+
key: "cn",
|
|
978
|
+
name: "China",
|
|
979
|
+
regulator: "MIIT (\u5DE5\u4E1A\u548C\u4FE1\u606F\u5316\u90E8)",
|
|
980
|
+
term: "Operator Class",
|
|
981
|
+
termLocal: "\u4E1A\u4F59\u65E0\u7EBF\u7535\u53F0\u64CD\u4F5C\u6280\u672F\u80FD\u529B\u7C7B\u522B",
|
|
982
|
+
entities: ["BY"],
|
|
983
|
+
levels: [
|
|
984
|
+
{ code: "A", name: "Class A", nameLocal: "A\u7C7B", tier: "basic", maxPowerW: 25 },
|
|
985
|
+
{ code: "B", name: "Class B", nameLocal: "B\u7C7B", tier: "full", maxPowerW: 15 },
|
|
986
|
+
{ code: "B-pre2024", name: "Class B (obtained before 2024-03-01)", nameLocal: "B\u7C7B (2024\u5E743\u67081\u65E5\u524D\u53D6\u5F97)", tier: "full", legacy: true, maxPowerW: 100 },
|
|
987
|
+
{ code: "C", name: "Class C", nameLocal: "C\u7C7B", tier: "full", maxPowerW: 1e3 }
|
|
988
|
+
]
|
|
989
|
+
},
|
|
990
|
+
{
|
|
991
|
+
key: "cz",
|
|
992
|
+
name: "Czech Republic",
|
|
993
|
+
regulator: "\u010CT\xDA (\u010Cesk\xFD telekomunika\u010Dn\xED \xFA\u0159ad)",
|
|
994
|
+
term: "Operator Class",
|
|
995
|
+
termLocal: "t\u0159\xEDda oper\xE1tora",
|
|
996
|
+
entities: ["OK"],
|
|
997
|
+
levels: [
|
|
998
|
+
{ code: "N", name: "Class N (Novice)", nameLocal: "Oper\xE1torsk\xE1 t\u0159\xEDda N", tier: "intermediate", maxPowerW: 10 },
|
|
999
|
+
{ code: "A", name: "Class A", nameLocal: "Oper\xE1torsk\xE1 t\u0159\xEDda A", tier: "full", maxPowerW: 750 }
|
|
1000
|
+
],
|
|
1001
|
+
callsigns: [
|
|
1002
|
+
{ pattern: "^OK9[A-Z]{3}$", level: "N", atLeast: true },
|
|
1003
|
+
{ pattern: "^OK[1-7][A-Z]{2,3}$", level: "A" }
|
|
1004
|
+
]
|
|
1005
|
+
},
|
|
1006
|
+
{
|
|
1007
|
+
key: "de",
|
|
1008
|
+
name: "Germany",
|
|
1009
|
+
regulator: "BNetzA (Bundesnetzagentur)",
|
|
1010
|
+
term: "License Class",
|
|
1011
|
+
termLocal: "Klasse",
|
|
1012
|
+
entities: ["DL"],
|
|
1013
|
+
levels: [
|
|
1014
|
+
{ code: "N", name: "Class N", nameLocal: "Klasse N", tier: "basic", maxPowerW: 10 },
|
|
1015
|
+
{ code: "E", name: "Class E", nameLocal: "Klasse E", tier: "intermediate", maxPowerW: 100 },
|
|
1016
|
+
{ code: "A", name: "Class A", nameLocal: "Klasse A", tier: "full", maxPowerW: 750 }
|
|
1017
|
+
],
|
|
1018
|
+
callsigns: [
|
|
1019
|
+
{ pattern: "^DN9[A-Z]{2,3}$", level: "N", atLeast: true },
|
|
1020
|
+
{ pattern: "^(DO[1-9]|DA6)[A-Z]{2,3}$", level: "E", atLeast: true },
|
|
1021
|
+
{ pattern: "^(DA[12]|DB[1-9]|DC[0-9]|DD[0-9]|DF[1-9]|DG[0-9]|DH[0-9]|DJ[0-9]|DK[1-9]|DL[1-9]|DM[1-9])[A-Z]{1,3}$", level: "A" }
|
|
1022
|
+
]
|
|
1023
|
+
},
|
|
1024
|
+
{
|
|
1025
|
+
key: "dk",
|
|
1026
|
+
name: "Denmark",
|
|
1027
|
+
regulator: "Digitaliseringsstyrelsen (formerly SDFI)",
|
|
1028
|
+
rules: "BEK nr 499 af 29/05/2026 (in force 2026-07-01), Bilag 4",
|
|
1029
|
+
term: "Certificate category",
|
|
1030
|
+
termLocal: "certifikat, kategori",
|
|
1031
|
+
entities: ["OZ"],
|
|
1032
|
+
levels: [
|
|
1033
|
+
{ code: "D", name: "Category D", nameLocal: "Certifikat kategori D", tier: "basic", maxPowerW: 50 },
|
|
1034
|
+
{ code: "B", name: "Category B", nameLocal: "Certifikat kategori B", tier: "full", maxPowerW: 100 },
|
|
1035
|
+
{ code: "A", name: "Category A", nameLocal: "Certifikat kategori A", tier: "full", aliases: ["Certifikat kategori C"], maxPowerW: 1e3 }
|
|
1036
|
+
]
|
|
1037
|
+
},
|
|
1038
|
+
{
|
|
1039
|
+
key: "gb",
|
|
1040
|
+
name: "United Kingdom",
|
|
1041
|
+
regulator: "Ofcom",
|
|
1042
|
+
term: "Licence Class",
|
|
1043
|
+
termLocal: "licence class",
|
|
1044
|
+
entities: ["G", "GM", "GW", "GI"],
|
|
1045
|
+
levels: [
|
|
1046
|
+
{ code: "F", name: "Foundation", nameLocal: "Foundation Licence", tier: "intermediate", maxPowerW: 25 },
|
|
1047
|
+
{ code: "I", name: "Intermediate", nameLocal: "Intermediate Licence", tier: "intermediate", maxPowerW: 100 },
|
|
1048
|
+
{ code: "FULL", name: "Full", nameLocal: "Full Licence", tier: "full", maxPowerW: 1e3 }
|
|
1049
|
+
],
|
|
1050
|
+
callsigns: [
|
|
1051
|
+
{ pattern: "^M[A-Z]?[367][A-Z]{3}$", level: "F" },
|
|
1052
|
+
{ pattern: "^M[A-Z]?[89][A-Z]{3}$", level: "I" },
|
|
1053
|
+
{ pattern: "^2[A-Z][01][A-Z]{3}$", level: "I" },
|
|
1054
|
+
{ pattern: "^G[A-Z]?[0-8][A-Z]{2,3}$", level: "FULL" },
|
|
1055
|
+
{ pattern: "^M[A-Z]?[015][A-Z]{2,3}$", level: "FULL" }
|
|
1056
|
+
]
|
|
1057
|
+
},
|
|
1058
|
+
{
|
|
1059
|
+
key: "hr",
|
|
1060
|
+
name: "Croatia",
|
|
1061
|
+
regulator: "HAKOM (Hrvatska regulatorna agencija za mre\u017Ene djelatnosti)",
|
|
1062
|
+
term: "Operator Class",
|
|
1063
|
+
termLocal: "radioamaterski razred",
|
|
1064
|
+
entities: ["9A"],
|
|
1065
|
+
levels: [
|
|
1066
|
+
{ code: "P", name: "Class P (Beginner)", nameLocal: "po\u010Detni\u010Dki P razred", tier: "intermediate", maxPowerW: 100 },
|
|
1067
|
+
{ code: "A", name: "Class A", nameLocal: "A razred", tier: "full", maxPowerW: 1500 }
|
|
1068
|
+
]
|
|
1069
|
+
},
|
|
1070
|
+
{
|
|
1071
|
+
key: "hu",
|
|
1072
|
+
name: "Hungary",
|
|
1073
|
+
regulator: "NMHH (Nemzeti M\xE9dia- \xE9s H\xEDrk\xF6zl\xE9si Hat\xF3s\xE1g)",
|
|
1074
|
+
term: "License Grade",
|
|
1075
|
+
termLocal: "enged\xE9ly fokozata",
|
|
1076
|
+
entities: ["HA"],
|
|
1077
|
+
levels: [
|
|
1078
|
+
{ code: "KEZDO", name: "Beginner (Kezd\u0151)", nameLocal: "Kezd\u0151 fokozat\xFA enged\xE9ly", tier: "intermediate", maxPowerW: 100 },
|
|
1079
|
+
{ code: "NOVICE", name: "CEPT Novice", nameLocal: "CEPT Novice fokozat\xFA enged\xE9ly", tier: "intermediate", maxPowerW: 200 },
|
|
1080
|
+
{ code: "CEPT", name: "CEPT (full)", nameLocal: "CEPT fokozat\xFA enged\xE9ly", tier: "full", maxPowerW: 1500 }
|
|
1081
|
+
]
|
|
1082
|
+
},
|
|
1083
|
+
{
|
|
1084
|
+
key: "id",
|
|
1085
|
+
name: "Indonesia",
|
|
1086
|
+
regulator: "Komdigi (formerly Kominfo), Ditjen SDPPI",
|
|
1087
|
+
term: "Licence Level",
|
|
1088
|
+
termLocal: "Tingkat IAR",
|
|
1089
|
+
entities: ["YB"],
|
|
1090
|
+
levels: [
|
|
1091
|
+
{ code: "SIAGA", name: "General", nameLocal: "Tingkat Siaga", tier: "intermediate", maxPowerW: 100 },
|
|
1092
|
+
{ code: "PENGGALANG", name: "Advanced", nameLocal: "Tingkat Penggalang", tier: "intermediate", maxPowerW: 500 },
|
|
1093
|
+
{ code: "PENEGAK", name: "Extra Class", nameLocal: "Tingkat Penegak", tier: "full", maxPowerW: 1e3 }
|
|
1094
|
+
],
|
|
1095
|
+
callsigns: [
|
|
1096
|
+
{ pattern: "^Y[DG][0-9][A-Z]{1,3}$", level: "SIAGA" },
|
|
1097
|
+
{ pattern: "^Y[CF][0-9][A-Z]{1,3}$", level: "PENGGALANG" },
|
|
1098
|
+
{ pattern: "^Y[BE][0-9][A-Z]{1,3}$", level: "PENEGAK" }
|
|
1099
|
+
]
|
|
1100
|
+
},
|
|
1101
|
+
{
|
|
1102
|
+
key: "jp",
|
|
1103
|
+
name: "Japan",
|
|
1104
|
+
regulator: "MIC (\u7DCF\u52D9\u7701)",
|
|
1105
|
+
term: "Operator Class",
|
|
1106
|
+
termLocal: "\u8CC7\u683C / \u7D1A",
|
|
1107
|
+
entities: ["JA", "JD/o", "JD/m"],
|
|
1108
|
+
levels: [
|
|
1109
|
+
{ code: "4", name: "4th Class", nameLocal: "\u7B2C\u56DB\u7D1A\u30A2\u30DE\u30C1\u30E5\u30A2\u7121\u7DDA\u6280\u58EB", tier: "intermediate", maxPowerW: 20, superModes: ["PHONE", "DATA"] },
|
|
1110
|
+
{ code: "3", name: "3rd Class", nameLocal: "\u7B2C\u4E09\u7D1A\u30A2\u30DE\u30C1\u30E5\u30A2\u7121\u7DDA\u6280\u58EB", tier: "intermediate", maxPowerW: 50 },
|
|
1111
|
+
{ code: "2", name: "2nd Class", nameLocal: "\u7B2C\u4E8C\u7D1A\u30A2\u30DE\u30C1\u30E5\u30A2\u7121\u7DDA\u6280\u58EB", tier: "full", maxPowerW: 200 },
|
|
1112
|
+
{ code: "1", name: "1st Class", nameLocal: "\u7B2C\u4E00\u7D1A\u30A2\u30DE\u30C1\u30E5\u30A2\u7121\u7DDA\u6280\u58EB", tier: "full", maxPowerW: 1e3 }
|
|
1113
|
+
]
|
|
1114
|
+
},
|
|
1115
|
+
{
|
|
1116
|
+
key: "kr",
|
|
1117
|
+
name: "Republic of Korea",
|
|
1118
|
+
regulator: "MSIT (\uACFC\uD559\uAE30\uC220\uC815\uBCF4\uD1B5\uC2E0\uBD80) / \uC911\uC559\uC804\uD30C\uAD00\uB9AC\uC18C; exams KCA",
|
|
1119
|
+
term: "Operator Class",
|
|
1120
|
+
termLocal: "\uC544\uB9C8\uCD94\uC5B4\uBB34\uC120\uAE30\uC0AC \uC790\uACA9 \uB4F1\uAE09",
|
|
1121
|
+
entities: ["HL"],
|
|
1122
|
+
levels: [
|
|
1123
|
+
{ code: "4", name: "4th Class", nameLocal: "\uC81C4\uAE09 \uC544\uB9C8\uCD94\uC5B4\uBB34\uC120\uAE30\uC0AC", tier: "basic", maxPowerW: 10, superModes: ["PHONE", "DATA"] },
|
|
1124
|
+
{ code: "3P", name: "3rd Class (Telephony)", nameLocal: "\uC81C3\uAE09 \uC544\uB9C8\uCD94\uC5B4\uBB34\uC120\uAE30\uC0AC(\uC804\uD654\uAE09)", tier: "intermediate", maxPowerW: 100, superModes: ["PHONE", "DATA"] },
|
|
1125
|
+
{ code: "3T", name: "3rd Class (Telegraphy)", nameLocal: "\uC81C3\uAE09 \uC544\uB9C8\uCD94\uC5B4\uBB34\uC120\uAE30\uC0AC(\uC804\uC2E0\uAE09)", tier: "intermediate", maxPowerW: 100 },
|
|
1126
|
+
{ code: "2", name: "2nd Class", nameLocal: "\uC81C2\uAE09 \uC544\uB9C8\uCD94\uC5B4\uBB34\uC120\uAE30\uC0AC", tier: "full", maxPowerW: 200 },
|
|
1127
|
+
{ code: "1", name: "1st Class", nameLocal: "\uC81C1\uAE09 \uC544\uB9C8\uCD94\uC5B4\uBB34\uC120\uAE30\uC0AC", tier: "full", maxPowerW: 1e3 }
|
|
1128
|
+
]
|
|
1129
|
+
},
|
|
1130
|
+
{
|
|
1131
|
+
key: "my",
|
|
1132
|
+
name: "Malaysia",
|
|
1133
|
+
regulator: "MCMC",
|
|
1134
|
+
term: "Licence Class",
|
|
1135
|
+
termLocal: "Kelas",
|
|
1136
|
+
entities: ["9M2", "9M6"],
|
|
1137
|
+
levels: [
|
|
1138
|
+
{ code: "C", name: "Class C", nameLocal: "Kelas C", tier: "basic", maxPowerW: 25, superModes: ["PHONE", "DATA"] },
|
|
1139
|
+
{ code: "B", name: "Class B", nameLocal: "Kelas B", tier: "intermediate", maxPowerW: 50 },
|
|
1140
|
+
{ code: "A", name: "Class A", nameLocal: "Kelas A", tier: "full", maxPowerW: 1e3 }
|
|
1141
|
+
],
|
|
1142
|
+
callsigns: [
|
|
1143
|
+
{ pattern: "^9W3[A-Z]{2,3}$", level: "C" },
|
|
1144
|
+
{ pattern: "^9W[268][A-Z]{2,3}$", level: "B" },
|
|
1145
|
+
{ pattern: "^9M[268][A-Z]{2,3}$", level: "A" }
|
|
1146
|
+
]
|
|
1147
|
+
},
|
|
1148
|
+
{
|
|
1149
|
+
key: "nl",
|
|
1150
|
+
name: "Netherlands",
|
|
1151
|
+
regulator: "RDI (Rijksinspectie Digitale Infrastructuur)",
|
|
1152
|
+
term: "Licence Class",
|
|
1153
|
+
termLocal: "categorie registratie",
|
|
1154
|
+
entities: ["PA"],
|
|
1155
|
+
levels: [
|
|
1156
|
+
{ code: "N", name: "Novice", nameLocal: "N-registratie (beperkte toegang)", tier: "intermediate", maxPowerW: 100 },
|
|
1157
|
+
{ code: "F", name: "Full", nameLocal: "F-registratie (volledige toegang)", tier: "full", maxPowerW: 400 }
|
|
1158
|
+
],
|
|
1159
|
+
callsigns: [
|
|
1160
|
+
{ pattern: "^PD[0-9][A-Z]{2,3}$", level: "N" }
|
|
1161
|
+
]
|
|
1162
|
+
},
|
|
1163
|
+
{
|
|
1164
|
+
key: "no",
|
|
1165
|
+
name: "Norway",
|
|
1166
|
+
regulator: "Nasjonal kommunikasjonsmyndighet (Nkom)",
|
|
1167
|
+
rules: "Forskrift om radioamat\xF8rvirksomhet FOR-2026-03-23-465 (in force 2026-03-23)",
|
|
1168
|
+
term: "Licence class",
|
|
1169
|
+
termLocal: "lisensklasse",
|
|
1170
|
+
entities: ["LA", "JW", "JX", "3Y/b", "3Y/p"],
|
|
1171
|
+
levels: [
|
|
1172
|
+
{ code: "begrenset", name: "Limited licence", nameLocal: "Begrenset lisens", tier: "intermediate", maxPowerW: 10 },
|
|
1173
|
+
{ code: "A", name: "Full licence", nameLocal: "Full lisens (HAREC klasse A)", tier: "full", maxPowerW: 1e3 }
|
|
1174
|
+
],
|
|
1175
|
+
callsigns: [
|
|
1176
|
+
{ pattern: "^L[AB][0-9][A-Z]{1,3}$", level: "A", entities: ["LA"] }
|
|
1177
|
+
]
|
|
1178
|
+
},
|
|
1179
|
+
{
|
|
1180
|
+
key: "pl",
|
|
1181
|
+
name: "Poland",
|
|
1182
|
+
regulator: "UKE (Urz\u0105d Komunikacji Elektronicznej)",
|
|
1183
|
+
term: "License Category",
|
|
1184
|
+
termLocal: "kategoria pozwolenia",
|
|
1185
|
+
entities: ["SP"],
|
|
1186
|
+
levels: [
|
|
1187
|
+
{ code: "3", name: "Category 3", nameLocal: "pozwolenie kategorii 3", tier: "full", maxPowerW: 100 },
|
|
1188
|
+
{ code: "1", name: "Category 1", nameLocal: "pozwolenie kategorii 1", tier: "full", maxPowerW: 500 }
|
|
1189
|
+
]
|
|
1190
|
+
},
|
|
1191
|
+
{
|
|
1192
|
+
key: "ro",
|
|
1193
|
+
name: "Romania",
|
|
1194
|
+
regulator: "ANCOM",
|
|
1195
|
+
term: "License Class",
|
|
1196
|
+
termLocal: "clasa",
|
|
1197
|
+
entities: ["YO"],
|
|
1198
|
+
levels: [
|
|
1199
|
+
{ code: "IV", name: "Class IV", nameLocal: "Clasa a IV-a", tier: "full", maxPowerW: 50 },
|
|
1200
|
+
{ code: "III", name: "Class III", nameLocal: "Clasa a III-a", tier: "full", maxPowerW: 100 },
|
|
1201
|
+
{ code: "II", name: "Class II", nameLocal: "Clasa a II-a", tier: "full", maxPowerW: 200 },
|
|
1202
|
+
{ code: "I", name: "Class I", nameLocal: "Clasa I", tier: "full", maxPowerW: 400 }
|
|
1203
|
+
]
|
|
1204
|
+
},
|
|
1205
|
+
{
|
|
1206
|
+
key: "rs",
|
|
1207
|
+
name: "Serbia",
|
|
1208
|
+
regulator: "RATEL",
|
|
1209
|
+
term: "License Class",
|
|
1210
|
+
termLocal: "\u043A\u043B\u0430\u0441\u0430 \u0440\u0430\u0434\u0438\u043E-\u0430\u043C\u0430\u0442\u0435\u0440\u0430",
|
|
1211
|
+
entities: ["YU"],
|
|
1212
|
+
levels: [
|
|
1213
|
+
{ code: "C", name: "Class C (basic)", nameLocal: "\u041A\u043B\u0430\u0441\u0430 C", tier: "intermediate", maxPowerW: 100 },
|
|
1214
|
+
{ code: "B", name: "Class B (advanced)", nameLocal: "\u041A\u043B\u0430\u0441\u0430 B", tier: "intermediate", maxPowerW: 100 },
|
|
1215
|
+
{ code: "A", name: "Class A", nameLocal: "\u041A\u043B\u0430\u0441\u0430 A", tier: "full", maxPowerW: 1500 }
|
|
1216
|
+
]
|
|
1217
|
+
},
|
|
1218
|
+
{
|
|
1219
|
+
key: "ru",
|
|
1220
|
+
name: "Russia",
|
|
1221
|
+
regulator: "\u0413\u041A\u0420\u0427 / \u041C\u0438\u043D\u0446\u0438\u0444\u0440\u044B \u0420\u043E\u0441\u0441\u0438\u0438 (allocation), \u0420\u043E\u0441\u043A\u043E\u043C\u043D\u0430\u0434\u0437\u043E\u0440 + \u0424\u0413\u0423\u041F \u0413\u0420\u0427\u0426 (registration, callsigns), \u0421\u0420\u0420 (qualification exams)",
|
|
1222
|
+
rules: "\u0420\u0435\u0448\u0435\u043D\u0438\u0435 \u0413\u041A\u0420\u0427 10-07-01 \u0440\u0435\u0434. 18-45-02 (2018-04-16, valid to 2028-04-01); \u041F\u0440\u0438\u043A\u0430\u0437 \u041C\u0438\u043D\u043A\u043E\u043C\u0441\u0432\u044F\u0437\u0438 \u2116184 (2012); \u041F\u0440\u0438\u043A\u0430\u0437 \u21164 (2012) \u0440\u0435\u0434. 2019",
|
|
1223
|
+
term: "Category",
|
|
1224
|
+
termLocal: "\u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044F",
|
|
1225
|
+
entities: ["UA", "UA2", "UA9"],
|
|
1226
|
+
levels: [
|
|
1227
|
+
{ code: "4", name: "Category 4", nameLocal: "4 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044F (\u043D\u0430\u0447\u0430\u043B\u044C\u043D\u0430\u044F \u043A\u0432\u0430\u043B\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F)", tier: "basic", maxPowerW: 5 },
|
|
1228
|
+
{ code: "3", name: "Category 3", nameLocal: "3 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044F (\u043A\u0432\u0430\u043B\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u043D\u043E\u0432\u0438\u0447\u043A\u0430)", tier: "full", maxPowerW: 10 },
|
|
1229
|
+
{ code: "2", name: "Category 2", nameLocal: "2 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044F (\u043E\u0441\u043D\u043E\u0432\u043D\u0430\u044F/\u0431\u0430\u0437\u043E\u0432\u0430\u044F \u043A\u0432\u0430\u043B\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F)", tier: "full", maxPowerW: 1e3 },
|
|
1230
|
+
{ code: "1", name: "Category 1", nameLocal: "1 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044F (\u0432\u044B\u0441\u0448\u0430\u044F \u043A\u0432\u0430\u043B\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F)", tier: "full", maxPowerW: 1e3 }
|
|
1231
|
+
],
|
|
1232
|
+
callsigns: [
|
|
1233
|
+
{ pattern: "^R[0-9][A-Z]{4}$", level: "4" },
|
|
1234
|
+
{ pattern: "^U[BCD][0-9][A-Z]{3}$", level: "3", atLeast: true },
|
|
1235
|
+
{ pattern: "^(R[A-Z]?|U[A-I])[0-9][A-Z]{1,2}$", level: "1" },
|
|
1236
|
+
{ pattern: "^(R[ACDGJ-NOQT-Z]|UA)[0-9][A-Z]{3}$", level: "2", atLeast: true }
|
|
1237
|
+
]
|
|
1238
|
+
},
|
|
1239
|
+
{
|
|
1240
|
+
key: "se",
|
|
1241
|
+
name: "Sweden",
|
|
1242
|
+
regulator: "Post- och telestyrelsen (PTS); certificates/callsigns issued by SSA under delegation",
|
|
1243
|
+
rules: "PTSFS 2025:1 (licence exemption; in force 2025-03-17)",
|
|
1244
|
+
term: "Certificate",
|
|
1245
|
+
termLocal: "certifikat",
|
|
1246
|
+
entities: ["SM"],
|
|
1247
|
+
levels: [
|
|
1248
|
+
{ code: "insteg", name: "Entry-level certificate", nameLocal: "Instegscertifikat f\xF6r amat\xF6rradio", tier: "intermediate", maxPowerW: 25 },
|
|
1249
|
+
{ code: "1", name: "Amateur radio certificate (HAREC)", nameLocal: "Amat\xF6rradiocertifikat", tier: "full", maxPowerW: 200 }
|
|
1250
|
+
],
|
|
1251
|
+
callsigns: [
|
|
1252
|
+
{ pattern: "^SH[0-9][A-Z]{3}$", level: "insteg" },
|
|
1253
|
+
{ pattern: "^S[AM][0-9][A-Z]{1,3}$", level: "1" }
|
|
1254
|
+
]
|
|
1255
|
+
},
|
|
1256
|
+
{
|
|
1257
|
+
key: "si",
|
|
1258
|
+
name: "Slovenia",
|
|
1259
|
+
regulator: "AKOS (Agencija za komunikacijska omre\u017Eja in storitve RS)",
|
|
1260
|
+
term: "Operator Class",
|
|
1261
|
+
termLocal: "razred radioamaterja",
|
|
1262
|
+
entities: ["S5"],
|
|
1263
|
+
levels: [
|
|
1264
|
+
{ code: "N", name: "Class N (Novice)", nameLocal: "razred N", tier: "intermediate", maxPowerW: 100 },
|
|
1265
|
+
{ code: "A", name: "Class A", nameLocal: "razred A", tier: "full", maxPowerW: 1500 }
|
|
1266
|
+
],
|
|
1267
|
+
callsigns: [
|
|
1268
|
+
{ pattern: "^S52[A-XZ][A-Z]{2}$", level: "N", atLeast: true },
|
|
1269
|
+
{ pattern: "^S58[A-X][A-Z]{2}$", level: "N", atLeast: true }
|
|
1270
|
+
]
|
|
1271
|
+
},
|
|
1272
|
+
{
|
|
1273
|
+
key: "ua",
|
|
1274
|
+
name: "Ukraine",
|
|
1275
|
+
regulator: "\u041D\u041A\u0415\u041A (National Commission for State Regulation of Electronic Communications...), \u0423\u0414\u0426\u0420 (callsigns/permits)",
|
|
1276
|
+
rules: "\u0420\u0435\u0433\u043B\u0430\u043C\u0435\u043D\u0442 \u0430\u043C\u0430\u0442\u043E\u0440\u0441\u044C\u043A\u043E\u0433\u043E \u0440\u0430\u0434\u0456\u043E\u0437\u0432'\u044F\u0437\u043A\u0443 \u0423\u043A\u0440\u0430\u0457\u043D\u0438, \u041F\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0430 \u041D\u041A\u0415\u041A 10.05.2023 \u2116173 (\u041C\u042E 29.06.2023 \u21161106/40162), Annex 2 Table 12",
|
|
1277
|
+
term: "Qualification",
|
|
1278
|
+
termLocal: "\u043A\u0432\u0430\u043B\u0456\u0444\u0456\u043A\u0430\u0446\u0456\u044F \u0440\u0430\u0434\u0456\u043E\u0430\u043C\u0430\u0442\u043E\u0440\u0430",
|
|
1279
|
+
entities: ["UR"],
|
|
1280
|
+
levels: [
|
|
1281
|
+
{ code: "C", name: "Entry level (student)", nameLocal: "C \u2014 \u0440\u0430\u0434\u0456\u043E\u0430\u043C\u0430\u0442\u043E\u0440-\u0443\u0447\u0435\u043D\u044C", tier: "intermediate", maxPowerW: 40 },
|
|
1282
|
+
{ code: "B", name: "Novice", nameLocal: "B \u2014 \u0440\u0430\u0434\u0456\u043E\u0430\u043C\u0430\u0442\u043E\u0440-\u043F\u043E\u0447\u0430\u0442\u043A\u0456\u0432\u0435\u0446\u044C", tier: "intermediate", aliases: ["3 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0456\u044F"], maxPowerW: 100 },
|
|
1283
|
+
{ code: "A", name: "Higher qualification (HAREC)", nameLocal: "A \u2014 \u0432\u0438\u0449\u0430 \u043A\u0432\u0430\u043B\u0456\u0444\u0456\u043A\u0430\u0446\u0456\u044F \u0440\u0430\u0434\u0456\u043E\u0430\u043C\u0430\u0442\u043E\u0440\u0430", tier: "full", aliases: ["1 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0456\u044F", "2 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0456\u044F"], maxPowerW: 200 }
|
|
1284
|
+
],
|
|
1285
|
+
callsigns: [
|
|
1286
|
+
{ pattern: "^U[R-Z][0-9][A-Z]{2}$", level: "A" }
|
|
1287
|
+
]
|
|
1288
|
+
},
|
|
1289
|
+
{
|
|
1290
|
+
key: "us",
|
|
1291
|
+
name: "United States",
|
|
1292
|
+
regulator: "FCC",
|
|
1293
|
+
rules: "47 CFR Part 97 (eCFR, current to 2026-10-09)",
|
|
1294
|
+
term: "License Class",
|
|
1295
|
+
termLocal: "operator license class",
|
|
1296
|
+
entities: ["K", "KL", "KH6", "KP4", "KP2", "KP1", "KP5", "KG4", "KH0", "KH1", "KH2", "KH3", "KH4", "KH5", "KH7K", "KH8", "KH8/s", "KH9"],
|
|
1297
|
+
levels: [
|
|
1298
|
+
{ code: "N", name: "Novice", tier: "basic", legacy: true, maxPowerW: 200 },
|
|
1299
|
+
{ code: "T", name: "Technician", tier: "basic", maxPowerW: 1500 },
|
|
1300
|
+
{ code: "G", name: "General", tier: "intermediate", maxPowerW: 1500 },
|
|
1301
|
+
{ code: "A", name: "Advanced", tier: "intermediate", legacy: true, maxPowerW: 1500 },
|
|
1302
|
+
{ code: "E", name: "Amateur Extra", tier: "full", maxPowerW: 1500 }
|
|
1303
|
+
],
|
|
1304
|
+
callsigns: [
|
|
1305
|
+
{ pattern: "^[KNW][0-9][A-Z]{2}$", level: "E", entities: ["K"] },
|
|
1306
|
+
{ pattern: "^[AKNW][A-Z][0-9][A-Z]$", level: "E", entities: ["K"] },
|
|
1307
|
+
{ pattern: "^A[A-K][0-9][A-Z]{2}$", level: "E", entities: ["K"] },
|
|
1308
|
+
{ pattern: "^[KNW][A-Z][0-9][A-Z]{2}$", level: "A", atLeast: true, entities: ["K"] },
|
|
1309
|
+
{ pattern: "^[KNW][0-9][A-Z]{3}$", level: "T", atLeast: true, entities: ["K"] },
|
|
1310
|
+
{ pattern: "^[KNW]P[0-9][A-Z]$", level: "E", entities: ["KP4", "KP2", "KP1", "KP5"] },
|
|
1311
|
+
{ pattern: "^KP[0-9][A-Z]{2}$", level: "A", atLeast: true, entities: ["KP4", "KP2", "KP1", "KP5"] },
|
|
1312
|
+
{ pattern: "^[NW]P[0-9][A-Z]{2}$", level: "T", atLeast: true, entities: ["KP4", "KP2", "KP1", "KP5"] }
|
|
1313
|
+
]
|
|
1314
|
+
}
|
|
1315
|
+
]
|
|
1316
|
+
};
|
|
1317
|
+
|
|
1318
|
+
// src/lib/licenseLevels.ts
|
|
1319
|
+
var LICENSE_LEVELS = licenseLevels_default;
|
|
1320
|
+
var bandPlansData2 = bandPlans_default;
|
|
1321
|
+
function licenseJurisdictionForEntity(entityPrefix) {
|
|
1322
|
+
return LICENSE_LEVELS.jurisdictions.find((jurisdiction) => jurisdiction.entities.includes(entityPrefix));
|
|
1323
|
+
}
|
|
1324
|
+
function licenseLevelKey(jurisdiction, level) {
|
|
1325
|
+
return `${jurisdiction.key}:${level.code}`;
|
|
1326
|
+
}
|
|
1327
|
+
function resolveLicenseLevel(key) {
|
|
1328
|
+
const colon = key.indexOf(":");
|
|
1329
|
+
if (colon <= 0) return void 0;
|
|
1330
|
+
const jurisdiction = LICENSE_LEVELS.jurisdictions.find((j) => j.key === key.slice(0, colon));
|
|
1331
|
+
const level = jurisdiction?.levels.find((l) => l.code === key.slice(colon + 1));
|
|
1332
|
+
return jurisdiction && level ? { jurisdiction, level } : void 0;
|
|
1333
|
+
}
|
|
1334
|
+
function licenseLevelForCallsign(call, entityPrefix) {
|
|
1335
|
+
const jurisdiction = licenseJurisdictionForEntity(entityPrefix);
|
|
1336
|
+
if (!jurisdiction) return void 0;
|
|
1337
|
+
const bare = call.toUpperCase().split("/").reduce((best, part) => part.length > best.length ? part : best, "");
|
|
1338
|
+
const rule = jurisdiction.callsigns?.find((r) => (!r.entities || r.entities.includes(entityPrefix)) && new RegExp(r.pattern).test(bare));
|
|
1339
|
+
const level = rule && jurisdiction.levels.find((l) => l.code === rule.level);
|
|
1340
|
+
return rule && level ? { jurisdiction, level, atLeast: Boolean(rule.atLeast) } : void 0;
|
|
1341
|
+
}
|
|
1342
|
+
function isOutsideLicensePrivileges(khz, options) {
|
|
1343
|
+
const { level: key, entityPrefix, ituRegion, mode } = options;
|
|
1344
|
+
const resolved = resolveLicenseLevel(key);
|
|
1345
|
+
if (!resolved || !resolved.jurisdiction.entities.includes(entityPrefix)) return void 0;
|
|
1346
|
+
const band = Object.values(bandPlansData2.bands).find((b) => b.mhz[0] <= khz && khz <= b.mhz[1]);
|
|
1347
|
+
if (!band) return void 0;
|
|
1348
|
+
if (band.exceptLevels?.includes(key)) return true;
|
|
1349
|
+
let allowed = resolved.level.superModes ?? SUPER_MODES;
|
|
1350
|
+
for (const segment of band.segments) {
|
|
1351
|
+
if (!(segment.mhz[0] < khz && khz < segment.mhz[1])) continue;
|
|
1352
|
+
if (segment.entities && !segment.entities.includes(entityPrefix)) continue;
|
|
1353
|
+
if (segment.regions && !(ituRegion && segment.regions.includes(ituRegion))) continue;
|
|
1354
|
+
if (segment.exceptLevels?.includes(key)) return true;
|
|
1355
|
+
if (segment.levels?.includes(key)) allowed = allowed.filter((m) => segment.superModes?.includes(m));
|
|
1356
|
+
}
|
|
1357
|
+
return mode ? !allowed.includes(superModeForMode(mode)) : false;
|
|
1358
|
+
}
|
|
1359
|
+
|
|
628
1360
|
exports.ADIF_MODES = ADIF_MODES;
|
|
629
1361
|
exports.ADIF_MODES_AND_SUBMODES = ADIF_MODES_AND_SUBMODES;
|
|
630
1362
|
exports.ADIF_MODE_FOR_SUBMODE = ADIF_MODE_FOR_SUBMODE;
|
|
@@ -635,6 +1367,7 @@ exports.CONTEST_BANDS = CONTEST_BANDS;
|
|
|
635
1367
|
exports.EHF_BANDS = EHF_BANDS;
|
|
636
1368
|
exports.EXTENDED_BANDS = EXTENDED_BANDS;
|
|
637
1369
|
exports.HF_BANDS = HF_BANDS;
|
|
1370
|
+
exports.LICENSE_LEVELS = LICENSE_LEVELS;
|
|
638
1371
|
exports.MAIN_MODES = MAIN_MODES;
|
|
639
1372
|
exports.PHONE_MODES = PHONE_MODES;
|
|
640
1373
|
exports.POPULAR_BANDS = POPULAR_BANDS;
|
|
@@ -647,7 +1380,12 @@ exports.adifModeAndSubmodeForMode = adifModeAndSubmodeForMode;
|
|
|
647
1380
|
exports.bandForExactFrequencyInMHz = bandForExactFrequencyInMHz;
|
|
648
1381
|
exports.bandForFrequency = bandForFrequency;
|
|
649
1382
|
exports.frequencyForBand = frequencyForBand;
|
|
1383
|
+
exports.isOutsideLicensePrivileges = isOutsideLicensePrivileges;
|
|
1384
|
+
exports.licenseJurisdictionForEntity = licenseJurisdictionForEntity;
|
|
1385
|
+
exports.licenseLevelForCallsign = licenseLevelForCallsign;
|
|
1386
|
+
exports.licenseLevelKey = licenseLevelKey;
|
|
650
1387
|
exports.modeForFrequency = modeForFrequency;
|
|
1388
|
+
exports.resolveLicenseLevel = resolveLicenseLevel;
|
|
651
1389
|
exports.superModeForMode = superModeForMode;
|
|
652
1390
|
//# sourceMappingURL=index.cjs.map
|
|
653
1391
|
//# sourceMappingURL=index.cjs.map
|