Radio with Red Griffin ATC

Red Griffin ATC adds controllers with voice and text. Background is in the article Red Griffin ATC: Fehler und Funk-Helfer (German).

Controller giving start-up clearance at Erfurt

Installation

Download the add-on from SourceForge and extract it to Addons/RedGriffinATC. Then apply the fixes for version 2.3.0:

cd "$FG_BASIS/downloads"
curl -LO https://codemich.de/medien/redgriffin/redgriffin_patch.zip
unzip -o redgriffin_patch.zip -d redgriffin_patch
find "$FG_BASIS/Addons/RedGriffinATC" -name rgatc.nas

The find command shows where rgatc.nas is. Back it up and replace it with the one from the patch. With another version, better apply the two changes below by hand.

Start

"$FG_BASIS/werkzeuge/starten.sh" --aircraft=c172p --airport=EDDE \
  --addon="$FG_BASIS/Addons/RedGriffinATC" \
  --prop:/rgatc/include-manufacturer=No \
  "--prop:/rgatc/atc-text-position=Bottom Center" \
  --prop:/sim/sound/atc/enabled=false

The two fixes

Station names: “Leipzig/Halle” became “Leipzig/halle”.

var cw = "";
var up = 1;
for(var k = 0; k < size(w); k += 1)
{
    var c = chr(w[k]);
    if(c == "/")
        c = "-";
    cw ~= up ? string.uc(c) : c;
    up = (c == "-");
}
stationName ~= cw;

Nasal error on approach: Without a clearance, approvedCtr is empty.

if(approvedCtr != nil and currentCtr != nil and approvedCtr.ident == currentCtr.ident
    and radioIsTunedToApprovedCtrRadio == 1)

Radio calls from your own scripts

The helper funk_helfer.nas from the patch reacts to two properties. It belongs in the Nasal folder in the overlay:

cd "$FG_BASIS/fgdata-overlay"
rm Nasal && mkdir Nasal
for e in ../fgdata/Nasal/*; do ln -s "$(realpath "$e")" "Nasal/$(basename "$e")"; done
cp "$FG_BASIS/downloads/redgriffin_patch/funk_helfer.nas" Nasal/

Then Python calls like this:

from fg_steuerung import Fg

fg = Fg()
fg.set("/funk/rufzeichen", "D-ABCD")
fg.set("/funk/flughafen", "EDDE")
fg.set("/funk/anfrage", 2)   # 2 start-up, 4 taxi, 5 ready for departure, 8 ILS approach, 12 ILS established

Pitfalls

  • Wrong station: Without a set frequency, Red Griffin takes the nearest one from its list. The helper sets the airport’s station.

  • “inconsistent frequency settings”: A frequency outside the nearby list has no voice. The helper adds it.

  • Callsign: RgATC.initRgATC() loads the last saved callsign on the first radio call. So set the one you want in /funk/rufzeichen first.