diff --git a/gen/aircraft.py b/gen/aircraft.py index 1ff12b33..4911c916 100644 --- a/gen/aircraft.py +++ b/gen/aircraft.py @@ -128,6 +128,19 @@ class ViperChannelNamer(ChannelNamer): return f"COM{radio_id} Ch {channel_id}" +class SCR522ChannelNamer(ChannelNamer): + """ + Channel namer for P-51 & P-47D + """ + + @staticmethod + def channel_name(radio_id: int, channel_id: int) -> str: + if channel_id > 3: + return "?" + else: + return f"Button " + "ABCD"[channel_id - 1] + + @dataclass(frozen=True) class ChannelAssignment: radio_id: int @@ -325,6 +338,19 @@ class ViggenRadioChannelAllocator(RadioChannelAllocator): # TODO: Assign divert to 6 when we support divert airfields. +@dataclass(frozen=True) +class SCR522RadioChannelAllocator(RadioChannelAllocator): + """Preset channel allocator for the SCR522 WW2 radios. (4 channels)""" + + def assign_channels_for_flight(self, flight: FlightData, + air_support: AirSupport) -> None: + radio_id = 1 + flight.assign_channel(radio_id, 1, flight.intra_flight_channel) + flight.assign_channel(radio_id, 2, flight.departure.atc) + flight.assign_channel(radio_id, 3, flight.arrival.atc) + + # TODO : Some GCI on Channel 4 ? + @dataclass(frozen=True) class AircraftData: """Additional aircraft data not exposed by pydcs.""" @@ -427,7 +453,19 @@ AIRCRAFT_DATA: Dict[str, AircraftData] = { ), channel_namer=MirageChannelNamer ), + + "P-51D": AircraftData( + inter_flight_radio=get_radio("SCR522"), + intra_flight_radio=get_radio("SCR522"), + channel_allocator=CommonRadioChannelAllocator( + inter_flight_radio_index=1, + intra_flight_radio_index=1 + ), + channel_namer=SCR522ChannelNamer + ), } +AIRCRAFT_DATA["P-51D-30-NA"] = AIRCRAFT_DATA["P-51D"] +AIRCRAFT_DATA["P-47D-30"] = AIRCRAFT_DATA["P-51D"] class AircraftConflictGenerator: diff --git a/gen/radios.py b/gen/radios.py index 5210ba16..bf4f1447 100644 --- a/gen/radios.py +++ b/gen/radios.py @@ -120,6 +120,10 @@ RADIOS: List[Radio] = [ # Also capable of [103, 156) at 25 kHz intervals, but we can't do gaps. Radio("FR 22", MHz(225), MHz(400), step=kHz(50)), + # P-51 / P-47 Radio + # 4 preset channels (A/B/C/D) + Radio("SCR522", MHz(100), MHz(156), step=kHz(25)), + Radio("R&S M3AR VHF", MHz(108), MHz(174), step=MHz(1)), Radio("R&S M3AR UHF", MHz(225), MHz(400), step=MHz(1)), ]