]> git.mxchange.org Git - flightgear.git/blobdiff - src/Scripting/NasalSys.cxx
Expose a radio function (receiveBeacon) to the Nasal subsystem
[flightgear.git] / src / Scripting / NasalSys.cxx
index 3d5bddb538b6b8a728cf4b134bdb851c286cab9c..d9a2cb6ff7753d3b260a18dd818b452734f06e91 100644 (file)
@@ -33,6 +33,7 @@
 #include <Scenery/scenery.hxx>
 #include <Navaids/navlist.hxx>
 #include <Navaids/procedure.hxx>
+#include <Radio/radio.hxx>
 
 
 #include "NasalSys.hxx"
@@ -500,6 +501,26 @@ static naRef f_carttogeod(naContext c, naRef me, int argc, naRef* args)
     return vec;
 }
 
+// Convert a cartesian point to a geodetic lat/lon/altitude.
+static naRef f_radioTransmission(naContext c, naRef me, int argc, naRef* args)
+{
+    double lat, lon, elev, heading, pitch;
+    if(argc != 5) naRuntimeError(c, "radioTransmission() expects 5 arguments");
+    for(int i=0; i<argc; i++) {
+        if(naIsNil(args[i]))
+               return naNil();
+    }
+    lat = naNumValue(args[0]).num;
+    lon = naNumValue(args[1]).num;
+    elev = naNumValue(args[2]).num;
+    heading = naNumValue(args[3]).num;
+    pitch = naNumValue(args[4]).num;
+    FGRadioTransmission *radio = new FGRadioTransmission;
+    double signal = radio->receiveBeacon(lat,lon,elev,heading,pitch);
+    delete radio;
+    return naNum(signal);
+}
+
 // Convert a geodetic lat/lon/altitude to a cartesian point.
 static naRef f_geodtocart(naContext c, naRef me, int argc, naRef* args)
 {
@@ -768,6 +789,7 @@ static naRef f_navinfo(naContext c, naRef me, int argc, naRef* args)
             const_cast<char *>(nav->ident().c_str()), nav->ident().length()));
         HASHSET("name", 4, naStr_fromdata(naNewString(c),
             const_cast<char *>(nav->name().c_str()), nav->name().length()));
+        HASHSET("frequency", 9, naNum(nav->get_freq()));
         HASHSET("lat", 3, naNum(nav->get_lat()));
         HASHSET("lon", 3, naNum(nav->get_lon()));
         HASHSET("elevation", 9, naNum(nav->get_elev_ft() * SG_FEET_TO_METER));
@@ -804,6 +826,7 @@ static struct { const char* name; naCFunction func; } funcs[] = {
     { "geodinfo", f_geodinfo },
     { "airportinfo", f_airportinfo },
     { "navinfo", f_navinfo },
+    { "radioTransmission", f_radioTransmission },
     { 0, 0 }
 };