]> git.mxchange.org Git - flightgear.git/blobdiff - src/Airports/groundnetwork.cxx
Added a small and simple dialogbox that allows the user to issue ATC commands.
[flightgear.git] / src / Airports / groundnetwork.cxx
index 3d96ccf7dd4e4723cfaddb27a8bdbc4a3fe165e6..37e9946bfc912f18a437fb17ef4a63b2bd5f3264 100644 (file)
@@ -30,6 +30,7 @@
 #include <simgear/debug/logstream.hxx>
 #include <simgear/route/waypoint.hxx>
 
+#include <Airports/simple.hxx>
 #include <Airports/dynamics.hxx>
 
 #include <AIModel/AIAircraft.hxx>
@@ -459,6 +460,7 @@ void FGGroundNetwork::announcePosition(int id,
                                        double radius, int leg,
                                        FGAIAircraft * aircraft)
 {
+    init();
     TrafficVectorIterator i = activeTraffic.begin();
     // Search search if the current id alread has an entry
     // This might be faster using a map instead of a vector, but let's start by taking a safe route
@@ -509,9 +511,9 @@ void FGGroundNetwork::signOff(int id)
     }
 }
 
-void FGGroundNetwork::update(int id, double lat, double lon,
-                             double heading, double speed, double alt,
-                             double dt)
+void FGGroundNetwork::updateAircraftInformation(int id, double lat, double lon,
+                                                double heading, double speed, double alt,
+                                                double dt)
 {
     // Check whether aircraft are on hold due to a preceding pushback. If so, make sure to 
     // Transmit air-to-ground "Ready to taxi request:
@@ -567,19 +569,19 @@ void FGGroundNetwork::update(int id, double lat, double lon,
             available = true;
         }
         if ((state < 3) && available) {
-             transmit(&(*current), MSG_REQUEST_TAXI_CLEARANCE, ATC_AIR_TO_GROUND);
+             transmit(&(*current), MSG_REQUEST_TAXI_CLEARANCE, ATC_AIR_TO_GROUND, true);
              current->setState(3);
              lastTransmission = now;
              available = false;
         }
         if ((state == 3) && available) {
-            transmit(&(*current), MSG_ISSUE_TAXI_CLEARANCE, ATC_GROUND_TO_AIR);
+            transmit(&(*current), MSG_ISSUE_TAXI_CLEARANCE, ATC_GROUND_TO_AIR, true);
             current->setState(4);
             lastTransmission = now;
             available = false;
         }
         if ((state == 4) && available) {
-            transmit(&(*current), MSG_ACKNOWLEDGE_TAXI_CLEARANCE, ATC_AIR_TO_GROUND);
+            transmit(&(*current), MSG_ACKNOWLEDGE_TAXI_CLEARANCE, ATC_AIR_TO_GROUND, true);
             current->setState(5);
             lastTransmission = now;
             available = false;
@@ -844,11 +846,11 @@ void FGGroundNetwork::checkHoldPosition(int id, double lat,
     if ((origStatus != currStatus) && available) {
         //cerr << "Issueing hold short instrudtion " << currStatus << " " << available << endl;
         if (currStatus == true) { // No has a hold short instruction
-           transmit(&(*current), MSG_HOLD_POSITION, ATC_GROUND_TO_AIR);
+           transmit(&(*current), MSG_HOLD_POSITION, ATC_GROUND_TO_AIR, true);
            //cerr << "Transmittin hold short instrudtion " << currStatus << " " << available << endl;
            current->setState(1);
         } else {
-           transmit(&(*current), MSG_RESUME_TAXI, ATC_GROUND_TO_AIR);
+           transmit(&(*current), MSG_RESUME_TAXI, ATC_GROUND_TO_AIR, true);
            //cerr << "Transmittig resume instrudtion " << currStatus << " " << available << endl;
            current->setState(2);
         }
@@ -863,7 +865,7 @@ void FGGroundNetwork::checkHoldPosition(int id, double lat,
     int state = current->getState();
     if ((state == 1) && (available)) {
         //cerr << "ACKNOWLEDGE HOLD" << endl;
-        transmit(&(*current), MSG_ACKNOWLEDGE_HOLD_POSITION, ATC_AIR_TO_GROUND);
+        transmit(&(*current), MSG_ACKNOWLEDGE_HOLD_POSITION, ATC_AIR_TO_GROUND, true);
         current->setState(0);
         current->setHoldPosition(true);
         lastTransmission = now;
@@ -872,7 +874,7 @@ void FGGroundNetwork::checkHoldPosition(int id, double lat,
     }
     if ((state == 2) && (available)) {
         //cerr << "ACKNOWLEDGE RESUME" << endl;
-        transmit(&(*current), MSG_ACKNOWLEDGE_RESUME_TAXI, ATC_AIR_TO_GROUND);
+        transmit(&(*current), MSG_ACKNOWLEDGE_RESUME_TAXI, ATC_AIR_TO_GROUND, true);
         current->setState(0);
         current->setHoldPosition(false);
         lastTransmission = now;