From 89045c09f7da0616f0cc57e8a54f96aaa0020de4 Mon Sep 17 00:00:00 2001 From: Alek Ratzloff Date: Fri, 21 Apr 2023 11:11:21 -0700 Subject: [PATCH] Initial commit Signed-off-by: Alek Ratzloff --- bands.py | 1666 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1666 insertions(+) create mode 100644 bands.py diff --git a/bands.py b/bands.py new file mode 100644 index 0000000..9c90e28 --- /dev/null +++ b/bands.py @@ -0,0 +1,1666 @@ +import dataclasses +import math + + +NOT_ALLOCATED = "#fff" +AERONAUTICAL_MOBILE = "#00aee1" +AERONAUTICAL_MOBILE_SATELLITE = "#97c9ec" +AERONAUTICAL_RADIONAVIGATION = "#c15018" +AMATEUR = "#009470" +AMATEUR_SATELLITE = "#d3e9dd" +BROADCASTING = "#3198b9" +BROADCASTING_SATELLITE = "#62bb47" +EARTH_EXPLORATION_SATELLITE = "#f89339" +FIXED = "#df018c" +FIXED_SATELLITE = "#c283ba" +INTER_SATELLITE = "#ffe376" +LAND_MOBILE = "#01a2b4" +LAND_MOBILE_SATELLITE = "#74cdd5" +MARITIME_MOBILE = "#e9e5c2" +MARITIME_MOBILE_SATELLITE = "#99c9bd" +MARITIME_RADIONAVIGATION = "#4c8d75" +METEOROLOGICAL_AIDS = "#f0d7c1" +METEOROLIGICAL_SATELLITE = "#965c08" +MOBILE = "#ead3e7" +MOBILE_SATELLITE = "#995ba6" +RADIO_ASTRONOMY = "#fff300" +RADIODETERMINATION_SATELLITE = "#fbab54" +RADIOLOCATION = "#f4cf1c" +RADIOLOCATION_SATELLITE = "#c4a001" +RADIONAVIGATION = "#aabd26" +RADIONAVIGATION_SATELLITE = "#e9eb7d" +SPACE_OPERATION = "#a34136" +SPACE_RESEARCH = "#e78d96" +STANDARD_FREQUENCY_AND_TIME_SIGNAL = "#8f989d" +STANDARD_FREQUENCY_AND_TIME_SIGNAL_SATELLITE = "#b4b5b9" + + +# Activity codes +EXCLUSIVE = "#ef324e" # Red +NON_EXCLUSIVE = "#00b185" # Green +SHARED = "#231f20" # Black + + +KHZ = 1000 +MHZ = KHZ * KHZ +GHZ = MHZ * KHZ + + +@dataclasses.dataclass +class Band: + start: float + end: float + usages: list[tuple[str, str | None]] + + +band_3khz_300khz = [ + Band(3 * KHZ, 9 * KHZ, [(NOT_ALLOCATED, NOT_ALLOCATED)]), + Band(9 * KHZ, 14 * KHZ, [(RADIONAVIGATION, SHARED)]), + Band( + 14 * KHZ, + 19.95 * KHZ, + [ + (FIXED, NON_EXCLUSIVE), + (FIXED, None), + (MARITIME_MOBILE, EXCLUSIVE), + ], + ), + Band(19.95 * KHZ, 20.05 * KHZ, [(STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)]), + Band( + 20.05 * KHZ, + 30 * KHZ, + [ + (MARITIME_MOBILE, EXCLUSIVE), + (FIXED, SHARED), + ], + ), + # There's a line at 30khz on the chart, so I figure splitting this up is a good idea + Band( + 30 * KHZ, + 59 * KHZ, + [ + (MARITIME_MOBILE, EXCLUSIVE), + (FIXED, SHARED), + ], + ), + Band(59 * KHZ, 61 * KHZ, [(STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)]), + Band( + 61 * KHZ, + 70 * KHZ, + [ + (MARITIME_MOBILE, EXCLUSIVE), + (FIXED, SHARED), + ], + ), + Band( + 70 * KHZ, + 90 * KHZ, + [ + (MARITIME_MOBILE, EXCLUSIVE), + (RADIOLOCATION, None), + (FIXED, SHARED), + ], + ), + Band(90 * KHZ, 110 * KHZ, [(RADIONAVIGATION, SHARED)]), + Band( + 110 * KHZ, + 130 * KHZ, + [ + (FIXED, None), + (RADIOLOCATION, None), + (MARITIME_MOBILE, SHARED), + ], + ), + Band( + 130 * KHZ, + 160 * KHZ, + [ + (FIXED, None), + (MARITIME_MOBILE, SHARED), + ], + ), + Band( + 160 * KHZ, + 190 * KHZ, + [ + (MARITIME_MOBILE, EXCLUSIVE), + (FIXED, SHARED), + ], + ), + Band(190 * KHZ, 200 * KHZ, [(AERONAUTICAL_RADIONAVIGATION, SHARED)]), + Band( + 200 * KHZ, + 275 * KHZ, + [ + (AERONAUTICAL_MOBILE, None), + (AERONAUTICAL_RADIONAVIGATION, SHARED), + ], + ), + Band( + 275 * KHZ, + 285 * KHZ, + [ + (MARITIME_RADIONAVIGATION, None), + (AERONAUTICAL_MOBILE, None), + (AERONAUTICAL_RADIONAVIGATION, SHARED), + ], + ), + Band( + 285 * KHZ, + 300 * KHZ, + [ + (AERONAUTICAL_RADIONAVIGATION, None), + (MARITIME_RADIONAVIGATION, SHARED), + ], + ), +] + + +band_300khz_3mhz = [ + Band( + 300 * KHZ, + 325 * KHZ, + [ + (AERONAUTICAL_RADIONAVIGATION, None), + (MARITIME_RADIONAVIGATION, SHARED), + ], + ), + Band( + 325 * KHZ, + 335 * KHZ, + [ + (AERONAUTICAL_RADIONAVIGATION, None), + (AERONAUTICAL_MOBILE, None), + (MARITIME_RADIONAVIGATION, SHARED), + ], + ), + Band( + 335 * KHZ, + 405 * KHZ, + [ + (AERONAUTICAL_RADIONAVIGATION, None), + (AERONAUTICAL_MOBILE, SHARED), + ], + ), + Band( + 405 * KHZ, + 415 * KHZ, + [ + (RADIONAVIGATION, None), + (AERONAUTICAL_MOBILE, SHARED), + ], + ), + Band( + 415 * KHZ, + 435 * KHZ, + [(MARITIME_MOBILE, None), (AERONAUTICAL_RADIONAVIGATION, SHARED)], + ), + Band( + 435 * KHZ, + 495 * KHZ, + [ + (AERONAUTICAL_RADIONAVIGATION, EXCLUSIVE), + (MARITIME_MOBILE, SHARED), + ], + ), + Band(495 * KHZ, 505 * KHZ, [(MOBILE, SHARED)]), + Band(505 * KHZ, 510 * KHZ, [(MARITIME_MOBILE, SHARED)]), + Band( + 510 * KHZ, + 525 * KHZ, + [(AERONAUTICAL_RADIONAVIGATION, None), (MARITIME_MOBILE, SHARED)], + ), + Band( + 525 * KHZ, 535 * KHZ, [(AERONAUTICAL_RADIONAVIGATION, None), (MOBILE, SHARED)] + ), + Band(535 * KHZ, 1605 * KHZ, [(BROADCASTING, NON_EXCLUSIVE)]), + Band(1605 * KHZ, 1615 * KHZ, [(BROADCASTING, NON_EXCLUSIVE), (MOBILE, EXCLUSIVE)]), + Band(1615 * KHZ, 1705 * KHZ, [(BROADCASTING, NON_EXCLUSIVE)]), + Band( + 1705 * KHZ, + 1800 * KHZ, + [ + (FIXED, None), + (MOBILE, None), + (RADIOLOCATION, SHARED), + ], + ), + Band(1800 * KHZ, 1900 * KHZ, [(AMATEUR, NON_EXCLUSIVE)]), + Band(1900 * KHZ, 2000 * KHZ, [(RADIOLOCATION, SHARED)]), + Band( + 2000 * KHZ, + 2065 * KHZ, + [(MARITIME_MOBILE, NON_EXCLUSIVE), (FIXED, None), (MOBILE, EXCLUSIVE)], + ), + Band(2065 * KHZ, 2107 * KHZ, [(MARITIME_MOBILE, SHARED)]), + Band( + 2107 * KHZ, + 2170 * KHZ, + [ + (MARITIME_MOBILE, None), + (LAND_MOBILE, NON_EXCLUSIVE), + (MOBILE, EXCLUSIVE), + (FIXED, SHARED), + ], + ), + Band(2170 * KHZ, 2173.5 * KHZ, [(MARITIME_MOBILE, SHARED)]), + Band(2173.5 * KHZ, 2190.5 * KHZ, [(MOBILE, SHARED)]), + Band(2190.5 * KHZ, 2194 * KHZ, [(MARITIME_MOBILE, SHARED)]), + Band( + 2194 * KHZ, + 2495 * KHZ, + [ + (MARITIME_MOBILE, None), + (LAND_MOBILE, NON_EXCLUSIVE), + (MOBILE, EXCLUSIVE), + (FIXED, SHARED), + ], + ), + Band(2495 * KHZ, 2501 * KHZ, [(STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)]), + Band( + 2501 * KHZ, + 2502 * KHZ, + [(SPACE_RESEARCH, EXCLUSIVE), (STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)], + ), + Band(2502 * KHZ, 2505 * KHZ, [(STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)]), + Band( + 2505 * KHZ, + 2850 * KHZ, + [ + (MARITIME_MOBILE, None), + (LAND_MOBILE, NON_EXCLUSIVE), + (MOBILE, EXCLUSIVE), + (FIXED, SHARED), + ], + ), + Band( + 2850 * KHZ, + 3000 * KHZ, + [ + (AERONAUTICAL_MOBILE, SHARED), + ], + ), +] + +band_3mhz_30mhz = [ + Band(3 * MHZ, 3.025 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(3.025 * MHZ, 3.155 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(3.155 * MHZ, 3.230 * MHZ, [(FIXED, None), (MOBILE, SHARED)]), + Band( + 3.230 * MHZ, 3.4 * MHZ, [(FIXED, None), (MOBILE, None), (RADIOLOCATION, SHARED)] + ), + Band(3.4 * MHZ, 3.5 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(3.5 * MHZ, 4.0 * MHZ, [(AMATEUR, NON_EXCLUSIVE)]), + Band(4.0 * MHZ, 4.063 * MHZ, [(MARITIME_MOBILE, None), (FIXED, SHARED)]), + Band(4.063 * MHZ, 4.438 * MHZ, [(MARITIME_MOBILE, SHARED)]), + Band(4.438 * MHZ, 4.65 * MHZ, [(FIXED, None), (MOBILE, SHARED)]), + Band(4.65 * MHZ, 4.7 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(4.7 * MHZ, 4.75 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(4.75 * MHZ, 4.85 * MHZ, [(FIXED, None), (MOBILE, SHARED)]), + Band(4.85 * MHZ, 4.995 * MHZ, [(MOBILE, EXCLUSIVE), (FIXED, SHARED)]), + Band(4.995 * MHZ, 5.003 * MHZ, [(STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)]), + Band( + 5.003 * MHZ, + 5.005 * MHZ, + [(SPACE_RESEARCH, EXCLUSIVE), (STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)], + ), + Band(5.005 * MHZ, 5.060 * MHZ, [(FIXED, SHARED)]), + Band(5.060 * MHZ, 5.45 * MHZ, [(FIXED, None), (MOBILE, SHARED)]), + Band(5.45 * MHZ, 5.68 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(5.68 * MHZ, 5.73 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(5.73 * MHZ, 5.90 * MHZ, [(FIXED, None), (MOBILE, SHARED)]), + Band( + 5.90 * MHZ, 5.95 * MHZ, [(BROADCASTING, None), (FIXED, None), (MOBILE, SHARED)] + ), + Band(5.95 * MHZ, 6.2 * MHZ, [(BROADCASTING, SHARED)]), + Band(6.2 * MHZ, 6.525 * MHZ, [(MARITIME_MOBILE, SHARED)]), + Band(6.525 * MHZ, 6.685 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(6.685 * MHZ, 6.765 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(6.765 * MHZ, 7.0 * MHZ, [(FIXED, None), (MOBILE, SHARED)]), + Band(7.0 * MHZ, 7.1 * MHZ, [(AMATEUR_SATELLITE, None), (AMATEUR, NON_EXCLUSIVE)]), + Band(7.1 * MHZ, 7.3 * MHZ, [(AMATEUR, NON_EXCLUSIVE)]), + Band( + 7.3 * MHZ, 7.35 * MHZ, [(BROADCASTING, None), (FIXED, None), (MOBILE, SHARED)] + ), + Band(7.35 * MHZ, 8.1 * MHZ, [(FIXED, None), (MOBILE, SHARED)]), + Band(8.1 * MHZ, 8.195 * MHZ, [(MARITIME_MOBILE, None), (FIXED, SHARED)]), + Band(8.195 * MHZ, 8.815 * MHZ, [(MARITIME_MOBILE, SHARED)]), + Band(8.815 * MHZ, 8.965 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(8.965 * MHZ, 9.040 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(9.040 * MHZ, 9.4 * MHZ, [(FIXED, SHARED)]), + Band(9.4 * MHZ, 9.5 * MHZ, [(BROADCASTING, None), (FIXED, SHARED)]), + Band(9.5 * MHZ, 9.9 * MHZ, [(BROADCASTING, SHARED)]), + Band(9.9 * MHZ, 9.995 * MHZ, [(FIXED, SHARED)]), + Band(9.995 * MHZ, 10.003 * MHZ, [(STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)]), + Band( + 10.003 * MHZ, + 10.005 * MHZ, + [(SPACE_RESEARCH, EXCLUSIVE), (STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)], + ), + Band(10.005 * MHZ, 10.1 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(10.1 * MHZ, 10.15 * MHZ, [(AMATEUR, NON_EXCLUSIVE)]), + Band(10.15 * MHZ, 11.175 * MHZ, [(FIXED, None), (MOBILE, SHARED)]), + Band(11.175 * MHZ, 11.275 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(11.275 * MHZ, 11.4 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(11.4 * MHZ, 11.6 * MHZ, [(FIXED, SHARED)]), + Band(11.6 * MHZ, 11.65 * MHZ, [(BROADCASTING, None), (FIXED, SHARED)]), + Band(11.65 * MHZ, 12.05 * MHZ, [(BROADCASTING, SHARED)]), + Band(12.05 * MHZ, 12.10 * MHZ, [(BROADCASTING, None), (FIXED, SHARED)]), + Band(12.10 * MHZ, 12.23 * MHZ, [(FIXED, SHARED)]), + Band(12.23 * MHZ, 13.2 * MHZ, [(MARITIME_MOBILE, SHARED)]), + Band(13.2 * MHZ, 13.26 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(13.26 * MHZ, 13.36 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(13.36 * MHZ, 13.41 * MHZ, [(RADIO_ASTRONOMY, SHARED)]), + Band(13.41 * MHZ, 13.57 * MHZ, [(MOBILE, EXCLUSIVE), (FIXED, SHARED)]), + Band( + 13.57 * MHZ, + 13.6 * MHZ, + [(MOBILE, EXCLUSIVE), (BROADCASTING, None), (FIXED, SHARED)], + ), + Band(13.6 * MHZ, 13.8 * MHZ, [(BROADCASTING, FIXED)]), + Band( + 13.8 * MHZ, + 13.87 * MHZ, + [(MOBILE, EXCLUSIVE), (BROADCASTING, None), (FIXED, SHARED)], + ), + Band(13.87 * MHZ, 14.0 * MHZ, [(MOBILE, EXCLUSIVE), (FIXED, SHARED)]), + Band( + 14.0 * MHZ, 14.25 * MHZ, [(AMATEUR_SATELLITE, None), (AMATEUR, NON_EXCLUSIVE)] + ), + Band(14.25 * MHZ, 14.35 * MHZ, [(AMATEUR, NON_EXCLUSIVE)]), + Band(14.35 * MHZ, 14.99 * MHZ, [(MOBILE, EXCLUSIVE), (FIXED, SHARED)]), + Band(14.99 * MHZ, 15.005 * MHZ, [(STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)]), + Band( + 15.005 * MHZ, + 15.010 * MHZ, + [(SPACE_RESEARCH, EXCLUSIVE), (STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)], + ), + Band(15.010 * MHZ, 15.10 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(15.10 * MHZ, 15.6 * MHZ, [(BROADCASTING, SHARED)]), + Band(15.6 * MHZ, 15.8 * MHZ, [(BROADCASTING, None), (FIXED, SHARED)]), + Band(15.8 * MHZ, 16.36 * MHZ, [(FIXED, SHARED)]), + Band(16.36 * MHZ, 17.41 * MHZ, [(MARITIME_MOBILE, SHARED)]), + Band(17.41 * MHZ, 17.48 * MHZ, [(FIXED, SHARED)]), + Band(17.48 * MHZ, 17.55 * MHZ, [(BROADCASTING, None), (FIXED, SHARED)]), + Band(17.55 * MHZ, 17.9 * MHZ, [(BROADCASTING, SHARED)]), + Band(17.9 * MHZ, 17.97 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(17.97 * MHZ, 18.03 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(18.03 * MHZ, 18.068 * MHZ, [(FIXED, SHARED)]), + Band( + 18.068 * MHZ, + 18.168 * MHZ, + [(AMATEUR, None), (AMATEUR_SATELLITE, NON_EXCLUSIVE)], + ), + Band(18.168 * MHZ, 18.78 * MHZ, [(FIXED, None), (MOBILE, SHARED)]), + Band(18.78 * MHZ, 18.9 * MHZ, [(MARITIME_MOBILE, SHARED)]), + Band(18.9 * MHZ, 19.02 * MHZ, [(BROADCASTING, None), (FIXED, SHARED)]), + Band(19.02 * MHZ, 19.68 * MHZ, [(FIXED, SHARED)]), + Band(19.68 * MHZ, 19.80 * MHZ, [(MARITIME_MOBILE, SHARED)]), + Band(19.80 * MHZ, 19.99 * MHZ, [(FIXED, SHARED)]), + Band( + 19.99 * MHZ, + 19.995 * MHZ, + [(SPACE_RESEARCH, EXCLUSIVE), (STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)], + ), + Band(19.995 * MHZ, 20.005 * MHZ, [(STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)]), + Band( + 20.005 * MHZ, + 20.010 * MHZ, + [(SPACE_RESEARCH, EXCLUSIVE), (STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)], + ), + Band(20.010 * MHZ, 21.0 * MHZ, [(MOBILE, EXCLUSIVE), (FIXED, SHARED)]), + Band( + 21.0 * MHZ, 21.45 * MHZ, [(AMATEUR_SATELLITE, None), (AMATEUR, NON_EXCLUSIVE)] + ), + Band(21.45 * MHZ, 21.85 * MHZ, [(BROADCASTING, SHARED)]), + Band(21.85 * MHZ, 21.924 * MHZ, [(FIXED, SHARED)]), + Band(21.924 * MHZ, 22.0 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(22.0 * MHZ, 22.855 * MHZ, [(MARITIME_MOBILE, SHARED)]), + Band(22.855 * MHZ, 23.0 * MHZ, [(FIXED, SHARED)]), + Band(23.0 * MHZ, 23.2 * MHZ, [(MOBILE, EXCLUSIVE), (FIXED, SHARED)]), + Band(23.2 * MHZ, 23.35 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(23.35 * MHZ, 24.89 * MHZ, [(MOBILE, EXCLUSIVE), (FIXED, SHARED)]), + Band( + 24.89 * MHZ, 24.99 * MHZ, [(AMATEUR, None), (AMATEUR_SATELLITE, NON_EXCLUSIVE)] + ), + Band(24.99 * MHZ, 25.005 * MHZ, [(STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)]), + Band( + 25.005 * MHZ, + 25.01 * MHZ, + [(SPACE_RESEARCH, EXCLUSIVE), (STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)], + ), + Band(25.01 * MHZ, 25.07 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), + Band(25.07 * MHZ, 25.21 * MHZ, [(MARITIME_MOBILE, SHARED)]), + Band(25.21 * MHZ, 25.33 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), + Band(25.33 * MHZ, 25.55 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band(25.55 * MHZ, 25.67 * MHZ, [(RADIO_ASTRONOMY, SHARED)]), + Band(25.67 * MHZ, 26.1 * MHZ, [(BROADCASTING, SHARED)]), + Band(26.1 * MHZ, 26.175 * MHZ, [(MARITIME_MOBILE, SHARED)]), + Band(26.175 * MHZ, 26.48 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), + Band(26.48 * MHZ, 26.95 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band(26.95 * MHZ, 26.96 * MHZ, [(FIXED, NON_EXCLUSIVE)]), + Band(26.96 * MHZ, 27.23 * MHZ, [(MOBILE, NON_EXCLUSIVE)]), + Band(27.23 * MHZ, 27.41 * MHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band(27.41 * MHZ, 27.54 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band(27.54 * MHZ, 28.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band(28.0 * MHZ, 29.7 * MHZ, [(AMATEUR_SATELLITE, None), (AMATEUR, NON_EXCLUSIVE)]), + Band(29.7 * MHZ, 29.8 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), + Band(29.8 * MHZ, 29.89 * MHZ, [(FIXED, NON_EXCLUSIVE)]), + Band(29.89 * MHZ, 29.91 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band(29.91 * MHZ, 30.0 * MHZ, [(FIXED, NON_EXCLUSIVE)]), +] + +band_30mhz_300mhz = [ + Band(30.0 * MHZ, 30.56 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band(30.56 * MHZ, 32.0 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band(32.0 * MHZ, 33.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band(33.0 * MHZ, 34.0 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band(34.0 * MHZ, 35.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band(35.0 * MHZ, 36.0 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band(36.0 * MHZ, 37.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band(37.0 * MHZ, 37.5 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), + Band( + 37.5 * MHZ, + 38.0 * MHZ, + [(LAND_MOBILE, NON_EXCLUSIVE), (RADIO_ASTRONOMY, SHARED)], + ), + Band( + 38.0 * MHZ, + 38.25 * MHZ, + [(MOBILE, None), (FIXED, EXCLUSIVE), (RADIO_ASTRONOMY, SHARED)], + ), + Band(38.25 * MHZ, 39.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band(39.0 * MHZ, 40.0 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), + Band(40.0 * MHZ, 42.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band(42.0 * MHZ, 43.69 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band(43.69 * MHZ, 46.6 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), + Band(46.6 * MHZ, 47.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band(47.0 * MHZ, 49.6 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), + Band(49.6 * MHZ, 50.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band(50.0 * MHZ, 54.0 * MHZ, [(AMATEUR, NON_EXCLUSIVE)]), + Band(54.0 * MHZ, 72.0 * MHZ, [(BROADCASTING, NON_EXCLUSIVE)]), + Band(72.0 * MHZ, 73.0 * MHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band(73.0 * MHZ, 74.6 * MHZ, [(RADIO_ASTRONOMY, SHARED)]), + Band(74.6 * MHZ, 74.8 * MHZ, [(MOBILE, None), (FIXED, SHARED)]), + Band(74.8 * MHZ, 75.2 * MHZ, [(AERONAUTICAL_RADIONAVIGATION, SHARED)]), + Band(75.2 * MHZ, 75.4 * MHZ, [(MOBILE, None), (FIXED, SHARED)]), + Band(75.4 * MHZ, 76.0 * MHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band(76.0 * MHZ, 88.0 * MHZ, [(BROADCASTING, NON_EXCLUSIVE)]), + Band(88.0 * MHZ, 108.0 * MHZ, [(BROADCASTING, NON_EXCLUSIVE)]), + Band(108.0 * MHZ, 117.975 * MHZ, [(AERONAUTICAL_RADIONAVIGATION, SHARED)]), + Band(117.975 * MHZ, 121.9375 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(121.9375 * MHZ, 123.0875 * MHZ, [(AERONAUTICAL_MOBILE, NON_EXCLUSIVE)]), + Band(123.0875 * MHZ, 128.8125 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(128.8125 * MHZ, 132.0125 * MHZ, [(AERONAUTICAL_MOBILE, NON_EXCLUSIVE)]), + Band(132.0125 * MHZ, 136.0 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), + Band(136.0 * MHZ, 137.0 * MHZ, [(AERONAUTICAL_MOBILE, NON_EXCLUSIVE)]), + Band( + 137.0 * MHZ, + 137.025 * MHZ, + [ + (METEOROLIGICAL_SATELLITE, None), + (SPACE_OPERATION, None), + (SPACE_RESEARCH, None), + (MOBILE_SATELLITE, SHARED), + ], + ), + Band( + 137.025 * MHZ, + 137.175 * MHZ, + [ + (METEOROLIGICAL_SATELLITE, None), + (SPACE_OPERATION, None), + (SPACE_RESEARCH, None), + (MOBILE_SATELLITE, SHARED), + ], + ), + Band( + 137.175 * MHZ, + 137.825 * MHZ, + [ + (METEOROLIGICAL_SATELLITE, None), + (SPACE_OPERATION, None), + (SPACE_RESEARCH, None), + (MOBILE_SATELLITE, SHARED), + ], + ), + Band( + 137.825 * MHZ, + 138.0 * MHZ, + [ + (METEOROLIGICAL_SATELLITE, None), + (SPACE_OPERATION, None), + (SPACE_RESEARCH, None), + (MOBILE_SATELLITE, SHARED), + ], + ), + Band(138.0 * MHZ, 144.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band( + 144.0 * MHZ, 146.0 * MHZ, [(AMATEUR_SATELLITE, None), (AMATEUR, NON_EXCLUSIVE)] + ), + Band(146.0 * MHZ, 148.0 * MHZ, [(AMATEUR, NON_EXCLUSIVE)]), + Band( + 148.0 * MHZ, + 149.9 * MHZ, + [(MOBILE, None), (FIXED, EXCLUSIVE), (MOBILE_SATELLITE, SHARED)], + ), + Band( + 149.9 * MHZ, + 150.05 * MHZ, + [(MOBILE_SATELLITE, None), (RADIONAVIGATION_SATELLITE, SHARED)], + ), + Band(150.05 * MHZ, 150.8 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band(150.8 * MHZ, 152.855 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band(152.855 * MHZ, 154.0 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), + Band(154.0 * MHZ, 156.2475 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band(156.2475 * MHZ, 157.0375 * MHZ, [(MARITIME_MOBILE, NON_EXCLUSIVE)]), + Band(157.0375 * MHZ, 157.1875 * MHZ, [(MARITIME_MOBILE, EXCLUSIVE)]), + Band( + 157.1875 * MHZ, + 157.45 * MHZ, + [(LAND_MOBILE, None), (MARITIME_MOBILE, NON_EXCLUSIVE)], + ), + Band(157.45 * MHZ, 161.575 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band(161.575 * MHZ, 161.625 * MHZ, [(MARITIME_MOBILE, NON_EXCLUSIVE)]), + Band(161.625 * MHZ, 161.775 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), + Band( + 161.775 * MHZ, + 162.0125 * MHZ, + [(LAND_MOBILE, None), (MARITIME_MOBILE, NON_EXCLUSIVE)], + ), + Band(162.0125 * MHZ, 173.2 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band(173.2 * MHZ, 173.4 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band(173.4 * MHZ, 174.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band(174.0 * MHZ, 216.0 * MHZ, [(BROADCASTING, NON_EXCLUSIVE)]), + Band( + 216.0 * MHZ, + 220.0 * MHZ, + [ + (AMATEUR, None), + (MOBILE, None), + (FIXED, NON_EXCLUSIVE), + (RADIOLOCATION, None), + (MOBILE, None), + (FIXED, EXCLUSIVE), + ], + ), + Band( + 220.0 * MHZ, + 222.0 * MHZ, + [(RADIOLOCATION, EXCLUSIVE), (FIXED, None), (LAND_MOBILE, SHARED)], + ), + Band( + 222.0 * MHZ, 225.0 * MHZ, [(RADIOLOCATION, EXCLUSIVE), (AMATEUR, NON_EXCLUSIVE)] + ), + Band(225.0 * MHZ, 235.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band( + 235.0 * MHZ, + 300.0 * MHZ, + [(MOBILE, None), (MOBILE_SATELLITE, None), (FIXED, EXCLUSIVE)], + ), +] + + +band_300mhz_3ghz = [ + Band( + 300.0 * MHZ, + 322.0 * MHZ, + [(MOBILE, None), (MOBILE_SATELLITE, None), (FIXED, EXCLUSIVE)], + ), + Band(322.0 * MHZ, 328.6 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band(328.6 * MHZ, 335.4 * MHZ, [(AERONAUTICAL_RADIONAVIGATION, SHARED)]), + Band( + 335.4 * MHZ, + 399.9 * MHZ, + [(MOBILE, None), (MOBILE_SATELLITE, None), (FIXED, EXCLUSIVE)], + ), + Band( + 399.9 * MHZ, + 400.05 * MHZ, + [(MOBILE_SATELLITE, None), (RADIODETERMINATION_SATELLITE, SHARED)], + ), + Band(400.05 * MHZ, 400.15 * MHZ, [(STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)]), + Band( + 400.15 * MHZ, + 401.0 * MHZ, + [ + (METEOROLIGICAL_SATELLITE, EXCLUSIVE), + (SPACE_OPERATION, None), + (SPACE_RESEARCH, None), + (MOBILE_SATELLITE, None), + (METEOROLOGICAL_AIDS, SHARED), + ], + ), + Band( + 401.0 * MHZ, + 402.0 * MHZ, + [ + (EARTH_EXPLORATION_SATELLITE, None), + (METEOROLIGICAL_SATELLITE, NON_EXCLUSIVE), + (EARTH_EXPLORATION_SATELLITE, None), + (METEOROLIGICAL_SATELLITE, EXCLUSIVE), + (SPACE_OPERATION, None), + (METEOROLOGICAL_AIDS, SHARED), + ], + ), + Band( + 402.0 * MHZ, + 403.0 * MHZ, + [ + (EARTH_EXPLORATION_SATELLITE, None), + (METEOROLIGICAL_SATELLITE, NON_EXCLUSIVE), + (EARTH_EXPLORATION_SATELLITE, None), + (METEOROLIGICAL_SATELLITE, EXCLUSIVE), + (METEOROLOGICAL_AIDS, SHARED), + ], + ), + Band(403.0 * MHZ, 406.0 * MHZ, [(METEOROLOGICAL_AIDS, SHARED)]), + Band(406.0 * MHZ, 406.1 * MHZ, [(MOBILE_SATELLITE, SHARED)]), + Band( + 406.1 * MHZ, + 410.0 * MHZ, + [(MOBILE, None), (FIXED, EXCLUSIVE), (RADIO_ASTRONOMY, SHARED)], + ), + Band( + 410.0 * MHZ, + 420.0 * MHZ, + [(SPACE_RESEARCH, None), (MOBILE, None), (FIXED, EXCLUSIVE)], + ), + Band( + 420.0 * MHZ, 450.0 * MHZ, [(AMATEUR, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)] + ), + Band(450.0 * MHZ, 454.0 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), + Band(454.0 * MHZ, 455.0 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band(455.0 * MHZ, 456.0 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), + Band(456.0 * MHZ, 460.0 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band( + 460.0 * MHZ, + 462.5375 * MHZ, + [ + (METEOROLIGICAL_SATELLITE, EXCLUSIVE), + (FIXED, None), + (LAND_MOBILE, NON_EXCLUSIVE), + ], + ), + Band( + 462.5375 * MHZ, + 462.7375 * MHZ, + [(METEOROLIGICAL_SATELLITE, EXCLUSIVE), (LAND_MOBILE, NON_EXCLUSIVE)], + ), + Band( + 462.7375 * MHZ, + 467.5375 * MHZ, + [ + (METEOROLIGICAL_SATELLITE, EXCLUSIVE), + (FIXED, None), + (LAND_MOBILE, NON_EXCLUSIVE), + ], + ), + Band( + 467.5375 * MHZ, + 467.7375 * MHZ, + [(METEOROLIGICAL_SATELLITE, EXCLUSIVE), (LAND_MOBILE, NON_EXCLUSIVE)], + ), + Band( + 467.7375 * MHZ, + 470.0 * MHZ, + [ + (METEOROLIGICAL_SATELLITE, EXCLUSIVE), + (FIXED, None), + (LAND_MOBILE, NON_EXCLUSIVE), + ], + ), + Band( + 470.0 * MHZ, + 512.0 * MHZ, + [(BROADCASTING, None), (FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)], + ), + Band(512.0 * MHZ, 608.0 * MHZ, [(BROADCASTING, NON_EXCLUSIVE)]), + Band(608.0 * MHZ, 614.0 * MHZ, [(RADIO_ASTRONOMY, None), (LAND_MOBILE, SHARED)]), + Band(614.0 * MHZ, 698.0 * MHZ, [(BROADCASTING, NON_EXCLUSIVE)]), + Band( + 698.0 * MHZ, + 746.0 * MHZ, + [(BROADCASTING, None), (MOBILE, None), (FIXED, NON_EXCLUSIVE)], + ), + Band( + 746.0 * MHZ, + 764.0 * MHZ, + [(BROADCASTING, None), (MOBILE, None), (FIXED, NON_EXCLUSIVE)], + ), + Band(764.0 * MHZ, 776.0 * MHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band( + 776.0 * MHZ, + 794.0 * MHZ, + [(BROADCASTING, None), (MOBILE, None), (FIXED, NON_EXCLUSIVE)], + ), + Band(794.0 * MHZ, 806.0 * MHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band(806.0 * MHZ, 821.0 * MHZ, [(FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)]), + Band(821.0 * MHZ, 824.0 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), + Band(824.0 * MHZ, 849.0 * MHZ, [(FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)]), + Band(849.0 * MHZ, 851.0 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), + Band(851.0 * MHZ, 866.0 * MHZ, [(FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)]), + Band(866.0 * MHZ, 869.0 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), + Band(869.0 * MHZ, 894.0 * MHZ, [(FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)]), + Band(894.0 * MHZ, 896.0 * MHZ, [(AERONAUTICAL_MOBILE, NON_EXCLUSIVE)]), + Band(896.0 * MHZ, 901.0 * MHZ, [(FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)]), + Band(901.0 * MHZ, 902.0 * MHZ, [(FIXED, None), (MOBILE, NON_EXCLUSIVE)]), + Band( + 902.0 * MHZ, 928.0 * MHZ, [(AMATEUR, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)] + ), + Band(928.0 * MHZ, 929.0 * MHZ, [(FIXED, NON_EXCLUSIVE)]), + Band(929.0 * MHZ, 930.0 * MHZ, [(FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)]), + Band(930.0 * MHZ, 931.0 * MHZ, [(FIXED, None), (MOBILE, NON_EXCLUSIVE)]), + Band(931.0 * MHZ, 932.0 * MHZ, [(FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)]), + Band(932.0 * MHZ, 935.0 * MHZ, [(FIXED, SHARED)]), + Band(935.0 * MHZ, 940.0 * MHZ, [(FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)]), + Band(940.0 * MHZ, 941.0 * MHZ, [(FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)]), + Band(941.0 * MHZ, 944.0 * MHZ, [(FIXED, SHARED)]), + Band(944.0 * MHZ, 960.0 * MHZ, [(FIXED, NON_EXCLUSIVE)]), + Band(960.0 * MHZ, 1215.0 * MHZ, [(AERONAUTICAL_RADIONAVIGATION, SHARED)]), + Band( + 1215.0 * MHZ, + 1240.0 * MHZ, + [(RADIOLOCATION, None), (RADIONAVIGATION_SATELLITE, EXCLUSIVE)], + ), + Band( + 1240.0 * MHZ, + 1300.0 * MHZ, + [(AMATEUR, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)], + ), + Band( + 1300.0 * MHZ, + 1350.0 * MHZ, + [(RADIOLOCATION, EXCLUSIVE), (AERONAUTICAL_RADIONAVIGATION, SHARED)], + ), + Band( + 1350.0 * MHZ, + 1390.0 * MHZ, + [(RADIOLOCATION, None), (MOBILE, None), (FIXED, EXCLUSIVE)], + ), + Band( + 1390.0 * MHZ, + 1392.0 * MHZ, + [(FIXED_SATELLITE, None), (MOBILE, None), (FIXED, NON_EXCLUSIVE)], + ), + Band(1392.0 * MHZ, 1395.0 * MHZ, [(FIXED, None), (MOBILE, NON_EXCLUSIVE)]), + Band(1395.0 * MHZ, 1400.0 * MHZ, [(LAND_MOBILE, SHARED)]), + Band( + 1400.0 * MHZ, + 1427.0 * MHZ, + [ + (SPACE_RESEARCH, None), + (EARTH_EXPLORATION_SATELLITE, None), + (RADIO_ASTRONOMY, SHARED), + ], + ), + Band(1427.0 * MHZ, 1429.5 * MHZ, [(FIXED, NON_EXCLUSIVE), (LAND_MOBILE, SHARED)]), + Band(1429.5 * MHZ, 1430.0 * MHZ, [(FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)]), + Band( + 1430.0 * MHZ, + 1432.0 * MHZ, + [(LAND_MOBILE, None), (FIXED, None), (FIXED_SATELLITE, NON_EXCLUSIVE)], + ), + Band(1432.0 * MHZ, 1435.0 * MHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band(1435.0 * MHZ, 1525.0 * MHZ, [(MOBILE, SHARED)]), + Band(1525.0 * MHZ, 1530.0 * MHZ, [(MOBILE_SATELLITE, None), (MOBILE, SHARED)]), + Band( + 1530.0 * MHZ, + 1535.0 * MHZ, + [(MOBILE, None), (MOBILE_SATELLITE, None), (MARITIME_MOBILE_SATELLITE, SHARED)], + ), + Band( + 1535.0 * MHZ, + 1544.0 * MHZ, + [(MOBILE_SATELLITE, None), (MARITIME_MOBILE_SATELLITE, SHARED)], + ), + Band(1544.0 * MHZ, 1545.0 * MHZ, [(MOBILE_SATELLITE, SHARED)]), + Band( + 1545.0 * MHZ, + 1549.5 * MHZ, + [(MOBILE_SATELLITE, None), (AERONAUTICAL_MOBILE_SATELLITE, SHARED)], + ), + Band( + 1549.5 * MHZ, + 1558.5 * MHZ, + [(MOBILE_SATELLITE, None), (AERONAUTICAL_MOBILE_SATELLITE, SHARED)], + ), + Band(1558.5 * MHZ, 1559.0 * MHZ, [(AERONAUTICAL_MOBILE_SATELLITE, SHARED)]), + Band( + 1559.0 * MHZ, + 1610.0 * MHZ, + [(RADIONAVIGATION_SATELLITE, None), (AERONAUTICAL_RADIONAVIGATION, SHARED)], + ), + Band( + 1610.0 * MHZ, + 1610.6 * MHZ, + [ + (MOBILE_SATELLITE, None), + (RADIODETERMINATION_SATELLITE, None), + (AERONAUTICAL_RADIONAVIGATION, SHARED), + ], + ), + Band( + 1610.6 * MHZ, + 1613.8 * MHZ, + [ + (RADIO_ASTRONOMY, None), + (MOBILE_SATELLITE, None), + (RADIODETERMINATION_SATELLITE, None), + (AERONAUTICAL_RADIONAVIGATION, SHARED), + ], + ), + Band( + 1613.8 * MHZ, + 1626.5 * MHZ, + [ + (MOBILE_SATELLITE, None), + (MOBILE_SATELLITE, None), + (RADIODETERMINATION_SATELLITE, None), + (AERONAUTICAL_RADIONAVIGATION, SHARED), + ], + ), + Band(1626.5 * MHZ, 1660.0 * MHZ, [(MOBILE_SATELLITE, SHARED)]), + Band( + 1660.0 * MHZ, + 1660.5 * MHZ, + [(MOBILE_SATELLITE, None), (RADIO_ASTRONOMY, SHARED)], + ), + Band( + 1660.5 * MHZ, 1668.4 * MHZ, [(SPACE_RESEARCH, None), (RADIO_ASTRONOMY, SHARED)] + ), + Band( + 1668.4 * MHZ, + 1670.0 * MHZ, + [(METEOROLOGICAL_AIDS, None), (RADIO_ASTRONOMY, SHARED)], + ), + Band(1670.0 * MHZ, 1675.0 * MHZ, [(FIXED, None), (MOBILE, NON_EXCLUSIVE)]), + Band( + 1675.0 * MHZ, + 1700.0 * MHZ, + [(METEOROLOGICAL_AIDS, None), (METEOROLIGICAL_SATELLITE, SHARED)], + ), + Band( + 1700.0 * MHZ, + 1710.0 * MHZ, + [ + (FIXED, NON_EXCLUSIVE), + (FIXED, EXCLUSIVE), + (METEOROLIGICAL_SATELLITE, SHARED), + ], + ), + Band(1710.0 * MHZ, 1755.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band(1755.0 * MHZ, 1850.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band(1850.0 * MHZ, 2000.0 * MHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band(2000.0 * MHZ, 2020.0 * MHZ, [(MOBILE_SATELLITE, NON_EXCLUSIVE)]), + Band(2020.0 * MHZ, 2025.0 * MHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band( + 2025.0 * MHZ, + 2110.0 * MHZ, + [ + (FIXED, None), + (MOBILE, NON_EXCLUSIVE), + (SPACE_OPERATION, None), + (EARTH_EXPLORATION_SATELLITE, None), + (SPACE_RESEARCH, EXCLUSIVE), + ], + ), + Band(2110.0 * MHZ, 2155.0 * MHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band(2155.0 * MHZ, 2160.0 * MHZ, [(FIXED, NON_EXCLUSIVE)]), + Band(2160.0 * MHZ, 2180.0 * MHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band(2180.0 * MHZ, 2200.0 * MHZ, [(MOBILE_SATELLITE, NON_EXCLUSIVE)]), + Band( + 2200.0 * MHZ, + 2290.0 * MHZ, + [ + (EARTH_EXPLORATION_SATELLITE, None), + (SPACE_OPERATION, None), + (SPACE_RESEARCH, None), + (MOBILE, None), + (FIXED, EXCLUSIVE), + ], + ), + Band( + 2290.0 * MHZ, + 2300.0 * MHZ, + [(MOBILE, None), (FIXED, EXCLUSIVE), (SPACE_RESEARCH, SHARED)], + ), + Band(2300.0 * MHZ, 2305.0 * MHZ, [(AMATEUR, NON_EXCLUSIVE)]), + Band( + 2305.0 * MHZ, + 2310.0 * MHZ, + [ + (FIXED, None), + (MOBILE, None), + (RADIOLOCATION, None), + (AMATEUR, NON_EXCLUSIVE), + ], + ), + Band( + 2310.0 * MHZ, + 2320.0 * MHZ, + [ + (BROADCASTING_SATELLITE, None), + (RADIOLOCATION, None), + (FIXED, None), + (MOBILE, NON_EXCLUSIVE), + (FIXED, None), + (MOBILE, None), + (RADIOLOCATION, EXCLUSIVE), + ], + ), + Band( + 2320.0 * MHZ, + 2345.0 * MHZ, + [ + (BROADCASTING_SATELLITE, NON_EXCLUSIVE), + (FIXED, None), + (RADIOLOCATION, None), + (MOBILE, EXCLUSIVE), + ], + ), + Band( + 2345.0 * MHZ, + 2360.0 * MHZ, + [ + (BROADCASTING_SATELLITE, None), + (RADIOLOCATION, None), + (FIXED, None), + (MOBILE, NON_EXCLUSIVE), + (FIXED, None), + (MOBILE, None), + (RADIOLOCATION, EXCLUSIVE), + ], + ), + Band( + 2360.0 * MHZ, + 2385.0 * MHZ, + [(FIXED, None), (RADIOLOCATION, EXCLUSIVE), (MOBILE, SHARED)], + ), + Band(2385.0 * MHZ, 2390.0 * MHZ, [(FIXED, None), (MOBILE, NON_EXCLUSIVE)]), + Band(2390.0 * MHZ, 2400.0 * MHZ, [(AMATEUR, NON_EXCLUSIVE)]), + Band(2400.0 * MHZ, 2417.0 * MHZ, [(AMATEUR, NON_EXCLUSIVE)]), + Band( + 2417.0 * MHZ, + 2450.0 * MHZ, + [(AMATEUR, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)], + ), + Band( + 2450.0 * MHZ, + 2483.5 * MHZ, + [(RADIOLOCATION, None), (MOBILE, None), (FIXED, NON_EXCLUSIVE)], + ), + Band( + 2483.5 * MHZ, + 2500.0 * MHZ, + [(MOBILE_SATELLITE, None), (RADIODETERMINATION_SATELLITE, SHARED)], + ), + Band( + 2500.0 * MHZ, + 2655.0 * MHZ, + [ + (FIXED, None), + (FIXED_SATELLITE, None), + (MOBILE, None), + (BROADCASTING_SATELLITE, NON_EXCLUSIVE), + ], + ), + Band( + 2655.0 * MHZ, + 2690.0 * MHZ, + [ + (FIXED_SATELLITE, None), + (FIXED, None), + (BROADCASTING_SATELLITE, None), + (MOBILE, NON_EXCLUSIVE), + (SPACE_RESEARCH, None), + (RADIO_ASTRONOMY, None), + (EARTH_EXPLORATION_SATELLITE, SHARED), + ], + ), + Band( + 2690.0 * MHZ, + 2700.0 * MHZ, + [ + (EARTH_EXPLORATION_SATELLITE, None), + (SPACE_RESEARCH, None), + (RADIO_ASTRONOMY, SHARED), + ], + ), + Band( + 2700.0 * MHZ, + 2900.0 * MHZ, + [ + (RADIOLOCATION, None), + (METEOROLOGICAL_AIDS, None), + (AERONAUTICAL_RADIONAVIGATION, EXCLUSIVE), + ], + ), + Band( + 2900.0 * MHZ, + 3000.0 * MHZ, + [(RADIOLOCATION, None), (MARITIME_RADIONAVIGATION, SHARED)], + ), +] + + +band_3ghz_30ghz = [ + Band( + 3.0 * GHZ, + 3.1 * GHZ, + [(RADIOLOCATION, None), (MARITIME_RADIONAVIGATION, SHARED)], + ), + Band( + 3.1 * GHZ, + 3.3 * GHZ, + [(RADIOLOCATION, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)], + ), + Band( + 3.3 * GHZ, + 3.5 * GHZ, + [(AMATEUR, None), (RADIOLOCATION, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)], + ), + Band( + 3.5 * GHZ, + 3.6 * GHZ, + [ + (RADIOLOCATION, NON_EXCLUSIVE), + (RADIOLOCATION, None), + (AERONAUTICAL_RADIONAVIGATION, EXCLUSIVE), + ], + ), + Band( + 3.6 * GHZ, + 3.65 * GHZ, + [ + (RADIOLOCATION, None), + (FIXED_SATELLITE, NON_EXCLUSIVE), + (RADIOLOCATION, None), + (AERONAUTICAL_RADIONAVIGATION, EXCLUSIVE), + ], + ), + Band( + 3.65 * GHZ, + 3.7 * GHZ, + [(FIXED, None), (FIXED_SATELLITE, None), (MOBILE, NON_EXCLUSIVE)], + ), + Band(3.7 * GHZ, 4.2 * GHZ, [(FIXED_SATELLITE, None), (FIXED, NON_EXCLUSIVE)]), + Band(4.2 * GHZ, 4.4 * GHZ, [(AERONAUTICAL_RADIONAVIGATION, SHARED)]), + Band(4.4 * GHZ, 4.5 * GHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band( + 4.5 * GHZ, + 4.8 * GHZ, + [(FIXED, None), (MOBILE, EXCLUSIVE), (FIXED_SATELLITE, NON_EXCLUSIVE)], + ), + Band(4.8 * GHZ, 4.94 * GHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), + Band(4.94 * GHZ, 4.99 * GHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), + Band(4.99 * GHZ, 5.0 * GHZ, [(SPACE_RESEARCH, None), (RADIO_ASTRONOMY, SHARED)]), + Band(5.0 * GHZ, 5.15 * GHZ, [(AERONAUTICAL_RADIONAVIGATION, SHARED)]), + Band( + 5.15 * GHZ, + 5.25 * GHZ, + [(FIXED_SATELLITE, NON_EXCLUSIVE), (AERONAUTICAL_RADIONAVIGATION, SHARED)], + ), + Band( + 5.25 * GHZ, + 5.35 * GHZ, + [ + (RADIOLOCATION, NON_EXCLUSIVE), + (RADIOLOCATION, EXCLUSIVE), + ], + ), + Band( + 5.35 * GHZ, + 5.46 * GHZ, + [ + (RADIOLOCATION, NON_EXCLUSIVE), + (RADIOLOCATION, EXCLUSIVE), + (AERONAUTICAL_RADIONAVIGATION, SHARED), + ], + ), + Band(5.46 * GHZ, 5.47 * GHZ, [(RADIOLOCATION, None), (RADIONAVIGATION, SHARED)]), + Band( + 5.47 * GHZ, + 5.6 * GHZ, + [(RADIOLOCATION, None), (MARITIME_RADIONAVIGATION, SHARED)], + ), + Band( + 5.6 * GHZ, + 5.65 * GHZ, + [ + (RADIOLOCATION, None), + (METEOROLOGICAL_AIDS, None), + (MARITIME_RADIONAVIGATION, SHARED), + ], + ), + Band( + 5.65 * GHZ, 5.83 * GHZ, [(AMATEUR, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)] + ), + Band( + 5.83 * GHZ, + 5.85 * GHZ, + [ + (AMATEUR, None), + (AMATEUR_SATELLITE, NON_EXCLUSIVE), + (RADIOLOCATION, EXCLUSIVE), + ], + ), + Band( + 5.85 * GHZ, + 5.925 * GHZ, + [(AMATEUR, None), (FIXED_SATELLITE, None), (RADIOLOCATION, EXCLUSIVE)], + ), + Band(5.925 * GHZ, 6.425 * GHZ, [(FIXED_SATELLITE, None), (FIXED, NON_EXCLUSIVE)]), + Band(6.425 * GHZ, 6.525 * GHZ, [(MOBILE, None), (FIXED_SATELLITE, NON_EXCLUSIVE)]), + Band(6.525 * GHZ, 6.70 * GHZ, [(FIXED, None), (FIXED_SATELLITE, NON_EXCLUSIVE)]), + Band(6.70 * GHZ, 6.875 * GHZ, [(FIXED, None), (FIXED_SATELLITE, NON_EXCLUSIVE)]), + Band( + 6.875 * GHZ, + 7.025 * GHZ, + [(FIXED, None), (FIXED_SATELLITE, None), (MOBILE, NON_EXCLUSIVE)], + ), + Band( + 7.025 * GHZ, + 7.075 * GHZ, + [(FIXED, None), (FIXED_SATELLITE, None), (MOBILE, NON_EXCLUSIVE)], + ), + Band(7.075 * GHZ, 7.125 * GHZ, [(FIXED, None), (MOBILE, NON_EXCLUSIVE)]), + Band(7.125 * GHZ, 7.19 * GHZ, [(FIXED, EXCLUSIVE)]), + Band(7.19 * GHZ, 7.235 * GHZ, [(SPACE_RESEARCH, None), (FIXED, EXCLUSIVE)]), + Band(7.235 * GHZ, 7.25 * GHZ, [(FIXED, EXCLUSIVE)]), + Band( + 7.25 * GHZ, + 7.3 * GHZ, + [(FIXED, None), (MOBILE_SATELLITE, None), (FIXED_SATELLITE, EXCLUSIVE)], + ), + Band( + 7.3 * GHZ, + 7.45 * GHZ, + [(MOBILE_SATELLITE, None), (FIXED, None), (FIXED_SATELLITE, EXCLUSIVE)], + ), + Band( + 7.45 * GHZ, + 7.55 * GHZ, + [ + (MOBILE_SATELLITE, None), + (FIXED, None), + (METEOROLIGICAL_SATELLITE, None), + (FIXED_SATELLITE, EXCLUSIVE), + ], + ), + Band( + 7.55 * GHZ, + 7.75 * GHZ, + [(MOBILE_SATELLITE, None), (FIXED, None), (FIXED_SATELLITE, EXCLUSIVE)], + ), + Band(7.75 * GHZ, 7.90 * GHZ, [(FIXED, EXCLUSIVE)]), + Band( + 7.90 * GHZ, + 8.025 * GHZ, + [(FIXED, None), (MOBILE_SATELLITE, None), (FIXED_SATELLITE, EXCLUSIVE)], + ), + Band( + 8.025 * GHZ, + 8.175 * GHZ, + [ + (MOBILE_SATELLITE, None), + (FIXED, None), + (EARTH_EXPLORATION_SATELLITE, None), + (FIXED_SATELLITE, EXCLUSIVE), + ], + ), + Band( + 8.175 * GHZ, + 8.215 * GHZ, + [ + (MOBILE_SATELLITE, None), + (METEOROLIGICAL_SATELLITE, None), + (FIXED, None), + (FIXED_SATELLITE, None), + (EARTH_EXPLORATION_SATELLITE, EXCLUSIVE), + ], + ), + Band( + 8.215 * GHZ, + 8.4 * GHZ, + [ + (MOBILE_SATELLITE, None), + (FIXED, None), + (FIXED_SATELLITE, None), + (EARTH_EXPLORATION_SATELLITE, EXCLUSIVE), + ], + ), + Band(8.4 * GHZ, 8.45 * GHZ, [(SPACE_RESEARCH, None), (FIXED, EXCLUSIVE)]), + Band(8.45 * GHZ, 8.5 * GHZ, [(FIXED, EXCLUSIVE), (SPACE_RESEARCH, SHARED)]), + Band( + 8.5 * GHZ, + 9.0 * GHZ, + [(RADIOLOCATION, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)], + ), + Band( + 9.0 * GHZ, + 9.2 * GHZ, + [(RADIOLOCATION, None), (AERONAUTICAL_RADIONAVIGATION, SHARED)], + ), + Band( + 9.2 * GHZ, + 9.3 * GHZ, + [(RADIOLOCATION, None), (MARITIME_RADIONAVIGATION, SHARED)], + ), + Band( + 9.3 * GHZ, + 9.5 * GHZ, + [(RADIOLOCATION, None), (METEOROLOGICAL_AIDS, None), (RADIONAVIGATION, SHARED)], + ), + Band( + 9.5 * GHZ, + 10.0 * GHZ, + [(RADIOLOCATION, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)], + ), + Band( + 10.0 * GHZ, + 10.45 * GHZ, + [(AMATEUR, None), (RADIOLOCATION, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)], + ), + Band( + 10.45 * GHZ, + 10.5 * GHZ, + [(AMATEUR_SATELLITE, None), (AMATEUR, NON_EXCLUSIVE), (RADIOLOCATION, SHARED)], + ), + Band(10.5 * GHZ, 10.55 * GHZ, [(RADIOLOCATION, SHARED)]), + Band(10.55 * GHZ, 10.6 * GHZ, [(FIXED, NON_EXCLUSIVE)]), + Band( + 10.6 * GHZ, + 10.68 * GHZ, + [ + (FIXED, NON_EXCLUSIVE), + (RADIO_ASTRONOMY, None), + (EARTH_EXPLORATION_SATELLITE, None), + (SPACE_RESEARCH, SHARED), + ], + ), + Band( + 10.68 * GHZ, + 10.7 * GHZ, + [ + (EARTH_EXPLORATION_SATELLITE, None), + (SPACE_RESEARCH, None), + (RADIO_ASTRONOMY, SHARED), + ], + ), + Band(10.7 * GHZ, 11.7 * GHZ, [(FIXED_SATELLITE, None), (FIXED, NON_EXCLUSIVE)]), + Band(11.7 * GHZ, 12.2 * GHZ, [(FIXED_SATELLITE, None), (MOBILE, NON_EXCLUSIVE)]), + Band( + 12.2 * GHZ, 12.7 * GHZ, [(FIXED, None), (BROADCASTING_SATELLITE, NON_EXCLUSIVE)] + ), + Band( + 12.7 * GHZ, + 12.75 * GHZ, + [(FIXED, None), (MOBILE, None), (FIXED_SATELLITE, NON_EXCLUSIVE)], + ), + Band( + 12.75 * GHZ, + 13.25 * GHZ, + [ + (FIXED, None), + (MOBILE, None), + (FIXED_SATELLITE, NON_EXCLUSIVE), + (SPACE_RESEARCH, SHARED), + ], + ), + Band( + 13.25 * GHZ, + 13.4 * GHZ, + [(SPACE_RESEARCH, None), (AERONAUTICAL_RADIONAVIGATION, SHARED)], + ), + Band( + 13.4 * GHZ, + 13.75 * GHZ, + [ + (RADIOLOCATION, NON_EXCLUSIVE), + (RADIOLOCATION, EXCLUSIVE), + (STANDARD_FREQUENCY_AND_TIME_SIGNAL, None), + (SPACE_RESEARCH, SHARED), + ], + ), + Band( + 13.75 * GHZ, + 14.0 * GHZ, + [ + (RADIOLOCATION, None), + (FIXED_SATELLITE, NON_EXCLUSIVE), + (RADIOLOCATION, EXCLUSIVE), + (STANDARD_FREQUENCY_AND_TIME_SIGNAL, None), + (SPACE_RESEARCH, SHARED), + ], + ), + Band( + 14.0 * GHZ, + 14.2 * GHZ, + [ + (LAND_MOBILE_SATELLITE, None), + (FIXED_SATELLITE, NON_EXCLUSIVE), + (RADIONAVIGATION, None), + (SPACE_RESEARCH, SHARED), + ], + ), + Band( + 14.2 * GHZ, + 14.4 * GHZ, + [(LAND_MOBILE, None), (FIXED_SATELLITE, None), (MOBILE, NON_EXCLUSIVE)], + ), + Band( + 14.4 * GHZ, + 14.47 * GHZ, + [ + (LAND_MOBILE_SATELLITE, None), + (FIXED_SATELLITE, NON_EXCLUSIVE), + (MOBILE, None), + (FIXED, EXCLUSIVE), + ], + ), + Band( + 14.47 * GHZ, + 14.5 * GHZ, + [ + (LAND_MOBILE_SATELLITE, None), + (FIXED_SATELLITE, NON_EXCLUSIVE), + (MOBILE, None), + (FIXED, EXCLUSIVE), + ], + ), + Band( + 14.5 * GHZ, + 14.7145 * GHZ, + [(SPACE_RESEARCH, None), (MOBILE, None), (FIXED, EXCLUSIVE)], + ), + Band( + 14.7145 * GHZ, + 15.1365 * GHZ, + [(SPACE_RESEARCH, None), (FIXED, None), (MOBILE, EXCLUSIVE)], + ), + Band( + 15.1365 * GHZ, + 15.35 * GHZ, + [(SPACE_RESEARCH, None), (MOBILE, None), (FIXED, EXCLUSIVE)], + ), + Band( + 15.35 * GHZ, + 15.4 * GHZ, + [ + (EARTH_EXPLORATION_SATELLITE, None), + (SPACE_RESEARCH, None), + (RADIO_ASTRONOMY, SHARED), + ], + ), + Band(15.4 * GHZ, 15.43 * GHZ, [(AERONAUTICAL_RADIONAVIGATION, None)]), + Band( + 15.43 * GHZ, + 15.63 * GHZ, + [(FIXED_SATELLITE, NON_EXCLUSIVE), (AERONAUTICAL_RADIONAVIGATION, SHARED)], + ), + Band(15.63 * GHZ, 15.7 * GHZ, [(AERONAUTICAL_RADIONAVIGATION, SHARED)]), + Band( + 15.7 * GHZ, + 16.6 * GHZ, + [(RADIOLOCATION, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)], + ), + Band( + 16.6 * GHZ, + 17.1 * GHZ, + [ + (RADIOLOCATION, NON_EXCLUSIVE), + (SPACE_RESEARCH, None), + (RADIOLOCATION, EXCLUSIVE), + ], + ), + Band( + 17.1 * GHZ, + 17.2 * GHZ, + [ + (RADIOLOCATION, NON_EXCLUSIVE), + (RADIOLOCATION, EXCLUSIVE), + ], + ), + Band( + 17.2 * GHZ, + 17.3 * GHZ, + [ + (RADIOLOCATION, NON_EXCLUSIVE), + (RADIOLOCATION, EXCLUSIVE), + (SPACE_RESEARCH, None), + (EARTH_EXPLORATION_SATELLITE, SHARED), + ], + ), + Band( + 17.3 * GHZ, + 17.7 * GHZ, + [ + (RADIOLOCATION, EXCLUSIVE), + (FIXED_SATELLITE, None), + (BROADCASTING_SATELLITE, NON_EXCLUSIVE), + ], + ), + Band(17.7 * GHZ, 17.8 * GHZ, [(FIXED, None), (FIXED_SATELLITE, NON_EXCLUSIVE)]), + Band( + 17.8 * GHZ, 18.3 * GHZ, [(FIXED, NON_EXCLUSIVE), (FIXED_SATELLITE, EXCLUSIVE)] + ), + Band(18.3 * GHZ, 18.6 * GHZ, [(FIXED_SATELLITE, SHARED)]), + Band( + 18.6 * GHZ, + 18.8 * GHZ, + [ + (EARTH_EXPLORATION_SATELLITE, None), + (FIXED_SATELLITE, None), + (SPACE_RESEARCH, SHARED), + ], + ), + Band(18.8 * GHZ, 19.3 * GHZ, [(FIXED_SATELLITE, SHARED)]), + Band(19.3 * GHZ, 19.7 * GHZ, [(FIXED, NON_EXCLUSIVE), (FIXED_SATELLITE, SHARED)]), + Band( + 19.7 * GHZ, + 20.1 * GHZ, + [(MOBILE_SATELLITE, NON_EXCLUSIVE), (FIXED_SATELLITE, SHARED)], + ), + Band( + 20.1 * GHZ, + 20.2 * GHZ, + [(MOBILE_SATELLITE, NON_EXCLUSIVE), (FIXED_SATELLITE, SHARED)], + ), + Band( + 20.2 * GHZ, + 21.2 * GHZ, + [ + (MOBILE_SATELLITE, None), + (FIXED_SATELLITE, EXCLUSIVE), + (STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED), + ], + ), + Band( + 21.2 * GHZ, + 21.4 * GHZ, + [ + (EARTH_EXPLORATION_SATELLITE, None), + (MOBILE, None), + (FIXED, None), + (SPACE_RESEARCH, SHARED), + ], + ), + Band(21.4 * GHZ, 22.0 * GHZ, [(MOBILE, None), (FIXED, SHARED)]), + Band(22.0 * GHZ, 22.21 * GHZ, [(MOBILE, None), (FIXED, SHARED)]), + Band( + 22.21 * GHZ, + 22.5 * GHZ, + [ + (EARTH_EXPLORATION_SATELLITE, None), + (FIXED, None), + (MOBILE, None), + (RADIO_ASTRONOMY, None), + (SPACE_RESEARCH, SHARED), + ], + ), + Band(22.5 * GHZ, 22.55 * GHZ, [(FIXED, None), (MOBILE, SHARED)]), + Band( + 22.55 * GHZ, + 23.55 * GHZ, + [(INTER_SATELLITE, None), (MOBILE, None), (FIXED, SHARED)], + ), + Band(23.55 * GHZ, 23.6 * GHZ, [(MOBILE, None), (FIXED, SHARED)]), + Band( + 23.6 * GHZ, + 24.0 * GHZ, + [ + (EARTH_EXPLORATION_SATELLITE, None), + (SPACE_RESEARCH, None), + (RADIO_ASTRONOMY, SHARED), + ], + ), + Band( + 24.0 * GHZ, 24.05 * GHZ, [(AMATEUR_SATELLITE, None), (AMATEUR, NON_EXCLUSIVE)] + ), + Band( + 24.05 * GHZ, + 24.25 * GHZ, + [ + (RADIOLOCATION, None), + (AMATEUR, NON_EXCLUSIVE), + (RADIOLOCATION, EXCLUSIVE), + (EARTH_EXPLORATION_SATELLITE, SHARED), + ], + ), + Band(24.25 * GHZ, 24.45 * GHZ, [(FIXED, NON_EXCLUSIVE)]), + Band( + 24.45 * GHZ, 24.65 * GHZ, [(INTER_SATELLITE, None), (RADIONAVIGATION, SHARED)] + ), + Band( + 24.65 * GHZ, + 24.75 * GHZ, + [(RADIOLOCATION_SATELLITE, None), (INTER_SATELLITE, SHARED)], + ), + Band( + 24.75 * GHZ, + 25.05 * GHZ, + [(FIXED_SATELLITE, NON_EXCLUSIVE), (RADIONAVIGATION, SHARED)], + ), + Band(25.05 * GHZ, 25.25 * GHZ, [(FIXED_SATELLITE, None), (FIXED, NON_EXCLUSIVE)]), + Band( + 25.25 * GHZ, + 25.5 * GHZ, + [ + (MOBILE, None), + (INTER_SATELLITE, None), + (FIXED, EXCLUSIVE), + (EARTH_EXPLORATION_SATELLITE, NON_EXCLUSIVE), + (STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED), + ], + ), + Band( + 25.5 * GHZ, + 27.0 * GHZ, + [ + (MOBILE, None), + (INTER_SATELLITE, None), + (FIXED, EXCLUSIVE), + (EARTH_EXPLORATION_SATELLITE, None), + (STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED), + ], + ), + Band( + 27.0 * GHZ, + 27.5 * GHZ, + [ + (MOBILE, None), + (INTER_SATELLITE, None), + (FIXED, EXCLUSIVE), + (EARTH_EXPLORATION_SATELLITE, NON_EXCLUSIVE), + ], + ), + Band( + 27.5 * GHZ, + 29.5 * GHZ, + [(FIXED_SATELLITE, None), (MOBILE, None), (FIXED, NON_EXCLUSIVE)], + ), + Band( + 29.5 * GHZ, + 29.9 * GHZ, + [(MOBILE_SATELLITE, None), (FIXED_SATELLITE, NON_EXCLUSIVE)], + ), + Band( + 29.9 * GHZ, + 30.0 * GHZ, + [(MOBILE_SATELLITE, None), (FIXED_SATELLITE, NON_EXCLUSIVE)], + ), +] + +band_30ghz_300ghz = [ +] + + +def hz(amount: float) -> str: + if amount < KHZ: + return f"{amount} hz" + elif amount < MHZ: + return f"{amount / KHZ} khz" + elif amount < GHZ: + return f"{amount / MHZ} mhz" + else: + return f"{amount / GHZ} ghz" + + +def to_svg( + bands: list[Band], width: int, height: int, activity_code_height: int, y_offset: int +) -> str: + + start = bands[0].start + end = bands[-1].end + scale = end / start + + svg = "" + for band in bands: + pos_start = int((math.log(band.start / start) / math.log(scale)) * width) + pos_end = int((math.log(band.end / start) / math.log(scale)) * width) + + shape_width = pos_end - pos_start + usage_len = len(band.usages) + shape_height = height / usage_len + for i, (color_fill, color_bottom) in enumerate(band.usages): + y = i * shape_height + y_offset + # print(y) + svg += ( + f' \n' + ) + # Add mini-rectangle below it, if it's part of this band usage + if color_bottom: + bottom_y = y + shape_height - activity_code_height + svg += ( + f' \n' + ) + + return svg + + +ACTIVITY_CODE_HEIGHT = 6 +ROW_WIDTH = 2048 +ROW_HEIGHT = 192 + +ALL_BANDS = [ + band_3khz_300khz, + band_300khz_3mhz, + band_3mhz_30mhz, + band_30mhz_300mhz, + band_300mhz_3ghz, + band_3ghz_30ghz, + band_30ghz_300ghz, +] + +width = ROW_WIDTH +height = ROW_HEIGHT * len(ALL_BANDS) +svg = f'\n' +for i, bands in enumerate(ALL_BANDS): + svg += to_svg(bands, ROW_WIDTH, ROW_HEIGHT, ACTIVITY_CODE_HEIGHT, i * ROW_HEIGHT) +svg += "" + + +print(svg)