Tuesday, October 13, 2015

Bug tracking...

Known bugs in EasyATC 2.0...

Requests and clearances
  • When requesting to land after take-off, the ATC gives a clearance to land but does'nt change the flight plan and so still ask for flying away from the airport (climb, heading, etc.)
  • Heading change request is available but is not working properly yet. The clearance is delivered but then things can go wrong in many ways
  • Pilot's requests/Disabled does not work as expected
  • Say again request does not work when asked after the message loop interval if the ATC had nothing to say on last speech)

ATC...

Requests...
To listen the ATC you must request first. See the Requests section for the available requests. If the ATC still not talk, have a look to the FAQ...

ATC Type...
The ATC you talk with can belong to one of the following kind of control areas. The ATC type is edited in the flight planner through a dropdown list.
As in real life, the clearances or information the ATC will give depend on the kind of ATC it is: you cannot have a taxi clearance from a CENTER or DEPARTURE controller!
The ATC Type is also used to build the callsign of the ATC in the messages. ATC callsign (for example Dallas) and ATC Type (Departure) are concatenated to build the whole callsign (Dallas Departure).

APPROACH or DEPARTURE
At this stage there is no much difference in terms of ATC behaviour between Approach and Departure. Select the one you want for the spoken callsign. When talking to that type of ATC...
  • VFR flight becomes VFR special 
  • Landing information (not clearance) can be delivered
  • APPROACH can ask for holding patterns (only IFR)
  • Can deliver flight clearance (see Taxi chart section)
CENTER or FIS
GROUND
INFO

  • Same behaviour than CENTER and FIS
  • Not that this Type is used as a "tag" when editing the runways in a Taxi chart

TMA
TOWER
ATC behavior...
Many things can be improved in the way the ATC gives you clearances. That the most interesting part of the plugin to program! So feel free to give me feedbacks...
WIP...

Debug display...

The debug information is displayed underneath the messages display.
The typical debug display...


Plane states...
To/From
  • To/From - The Identifiers of the waypoints the plane is the closer.
  • Distance - Distance between the plane and the waypoint 
  • Trigger - The radius of the waypoint (when distance is lower than trigger and you fly reasonnably at the waypoint altitude as defined in the flight plan, the next flight segment is activated)
Out the track
  • Indicates if the plane si triggering or not the track between the two waypoints 
 Track altitude
  • Indicates if the plane altitude is between the two waypoints expected altitudes. See Waypoints section for details on how triggering works...
ATC cannot talk...
If the ATC cannot talk to you "ATC COMx CANNOT SPEAK..." is displayed underneath plane state information. The following reasons can be displayed...

Unable to find an ATC with xxx frequency
The frequency you use on your COM1 (COM2 is not implemented yet) is not in the flight plan

 Pilot didn't talk to xxx
You didn't request (or your request has been lost, bug...)

COMx is muted
Make sure your COM1 is not muted

ATC frequency (xxx) is different from plane COMx frequency (xxx)
I think this is deprecated now...

Plane is xxx miles from xxx (xxx miles max.)
You are too far from the closest waypoint that have this frequency (in the flight plan). Note that the altitude matters! The more you fly high, the farther you can talk to ATCs!

Expected state...
Most of the states are labelled the same way than the Plane state but the values can be different! Imagine you have planned to land on a given airport but you fly above it without landing, the ATC will remain stuck on this airport until you land on it! So the Plane state values will indicate the closests waypoints from your plane, but the Expected state will indicate the ATC expectations.
Extra expected states are...

Back on track
  • When the ATC considers the plane is back on the track. Should be removed on next updates (just for me when debugging)...
  • The flight mode the plane is for the ATC
  • This can be temporary. When flying VFR, for example, in some circumstances, the ATC can handle the plane in VFR special mode within a given time frame before setting him back to VFR.
Holding short
  • The name of the holding point you are supposed to taxi before bein cleared to take-off, and the distance between your plane and this point. See Taxi charts...



Charts...

A flight plan is a bunch of waypoints. A quick-start flight plan can be made of one single group of waypoints. A group of waypoints is a chart. A realistic flight plan should be made of three charts at least.
  • The SID
  • The "en-route" chart
  • The STAR
Google that if you are not familiar with those terms. SID and STARS are generally IFR flight stuff but many airports have some VFR approach and departure rules and waypoints. The flight planner allow to edit that kind of realistic procedures.

Let's see first what kind of flight plans you can do. Then we will have a look on how exactly a chart is edited in the flight planner...

Requests and clearances...

Thanks to keyboard inputs you can talk to the ATC.

Affectations...
Clic Settings/Requests
    1. Select the line in the list you want to change then press the key you want to use for the given request. The key you pressed must appear in the Key column.
    2. WARNING!: you must use keys that are not used for any other command in X-Plane!  If not, Assume that "A" key is requesting for take-off clearance in EasyATC and is toggling gears, when you will press this key after take-off to move up gears, the pilot's voice will request for a take-off clearance!
    3. Clic Save button when all affectations are done
How to request...

  1. Press the key of the request
  2. The ATC menu item of EasyATC is turning blue
    • This means the ATC and the AIs let you talk
    • I added this option for people like me who want to request by speaking and not only by pressing a key and using the pilot's synthesized voice.
  3. Then, once you have spoken your request, press the Return key to actually send the request to EasyATC and get an answer... I hope...

Requests...
Awake ATC
The pilot simply announce its situation in short way. This is inspired by what it seems to be usually said in IFR when contacting the first time an approach controller. See this video.

Altitude up or down
This request consists in asking for a given number of feets to climb or descend. The pilot asks for the next waypoint expected altitude more or less the ALTITUDE_CHANGE_REQUEST_FEET value in the constants you can edit as you wish (1000 ft by default).
So, assuming you fly at 10,000 ft, and the next waypoint Altitude is 12,000 ft if you want to fly at 14,000 ft, you have to request twice: a first time to obtain 13,000 ft and a second one to be cleared o 14,000 ft.
This is not very user friendly and will be improved one day, but asking for altitude change is not something you ask every 5 minutes, so...
In some circumstances, the ATC can deny and the will ask you to maintain the expected altitude. The probability of deny can be changed with the ALTITUDE_CHANGE_REQUEST_DENIED_PROBABILITY constant. Note that you cannot change altitude within an approach

Flight
Before asking for a take-off clearance, you must request for a flight clearance. If you don't use a Taxi chart in your flight plan, the TOWER of you start airport will give you this clearance. If you have a Taxi chart, you must contact the controller of the APRON waypoint of the Taxi chart.

Guidance
The ATC gives you vectors to follow precisely the expected track. You must request again each time the controller changes. If you request Guidance whereas you are already in this mode, the ATC stops giving you vectors.
Note that the flight mode does not change. If you are lost and wants your flight to be handled til the next landing you can request for an IFR flight.

Heading left or right
Request for a new heading of a given angle offset toward the left or the right. I never use this request so it's probably buggy. Actually, the ATC inserts a new waypoint at 20 miles from the plane in the requested direction (the plane heading +/- the given angle).
The angle can be edited with the HEADING_CHANGE_REQUEST_DEGREES constant (30 degrees by default)

Landing
The pilot asks for landing instructions. Pay attention on the frequency you use! If you talk to Paris Tower while approaching Bordeaux, Paris will give you a clearance for HIS airport and not for Bordeaux... The ATC should warning in the following updates with some confirmation or whatever...

Landing pattern
This is not really a request. The pilot just says (or should say...) the appropriate Traffic pattern speech.

IFR
If you are flying in VFR, the pilot will request for IFR flight. This option can be used like in real life if you had a wrong timing in your flight and night falls before you reach your airfield, or if you feel lost and want to be vectored by the ATC.
If you fly IFR, the IFR flight will be cancelled and you will be in VFR mode.

Readback
The pilot readback the last ATC message he received. If you want to handle the readback by yourself, make sure the Pilot auto-readback option is disabled (Settings/Pilot's readback).

Repeat
The pilot asks the ATC to repeat its last message.

Report
The pilot says the current state and position of the plane. Use this request (not a request actually, but well...) to report after the ATC has previously asked for a "report over...". After report, the ATC is supposed to validate the next flight segment even if you don't trigger the waypoint.

Runway vacated
For coming 2.3 version...
After landing, you can make the pilot announcing the runway vacation. The ATC will then answer to contact ground if a Taxi chart is available or to taxi to general aviation apron if no Taxi chart is available.

Say again
The ATC repeats exactly the last speech

Speed up or down
Same comments than Altitude up or down. The constant is SPEED_CHANGE_REQUEST_KNOTS.

Take-off
The pilot asks for a take-off clearance. You must contact the ATC of  the airport waypoint in the flight plan to be cleared for take-off

Taxi
The pilot asks for a taxi clearance from the apron to the expected holding short point. If there is a taxi chart in the flight plan, you must contact the ATC of  the GROUND waypoint(s) to be cleared for the flight. If no taxi chart, any of the airport ATCs (Tower, Departure, Center...) will deliver the flight clearance.

Top-of-descent
The pilot announces he is starting the descent. You don't need to use this request since I added this just to make communication with ATC more realistic: in IFR, the pilots do this, usually. It's a sort of IFR report position in a way.

Transit in
The pilots reports the plane situation and asks for a transit. This is the best and more realistic way to awake the ATC when approaching a controlled area (but any of the other requests can awake the controllers!). Note that if you fly VFR, and you want to land, you should use the Landing request. With the Transit in request, the ATC will just allow you to fly over the airport.

Transit out
The pilots says that he leaves the controlled area. The ATC gives the next frequency and says goodbye. If you are too far from the next waypoint where the frequency changes, the ATC should not approve the transit out and ask you to call later. If you were flying in VFR special you should now be VFR.

Weather
The pilot asks for a weather information update. At this stage the ATC gives the wind direction and speed, the QNH and in some cases the transition altitude and/or the the transition level .

Constants...

The Constants are constant numeric values used by the program to process plane position and states and ATC behaviour, expectations and messages. There can be tweaked by selecting the Settings/Constant item in the EasyATC main window menu and then by changing the values.
That said, you cannot break anything since when EasyATC is re-launched, all the values are reseted to hard coded values.
Detailed definition of those constants should be write here soon...

Flight modes...

When flying the following modes, ATC...

VFR...
  • Can ask for frequency change in some circumstanes (if you have requested for transit for example)
  • Answers to any request
  • Gives local QNH
VFR special...
  • Doesn't correct your heading until you leave the expected track
  • Asks to descend or climb if you are too far above or below the expected altitude (the altitude of the next waypoint in the flight plan). The ATC will not talk if you are climbing/descending, considering you try to reach the expected altitude.
  • Asks for frequency change in many circumstances
  • Ask for reporting if the next waypoint is REPORT type or randomly if you fly inside a SID or a STAR.
  • Ask for a squawk code
IFR...
All VFR Special events and...
  • Asks to follow heading if your heading is too far from the expected one
  • Asks you to climb (or expedite your climb!) if you are below the expected altitude. The ATC will not talk if you are climbing/descending, considering you try to reach the expected altitude.
  • Ask for frequency change on all circumstances (if frequency is available in the flight plan of course...)
  • Asks for holding pattern if waypoint is HOLD type
  • Asks for arc DME correction if the track is a DME arc

EasyATC 2.0 - New features...

Inputs
Voices
  • When ATC frequency changes, the voice change
VFR and VFR Special
  • When enabling the ATC, a two buttons dialog box ask you for the flight mode you want to fly. Depending on the flight mode you choose, the ATC will behave differently. See Flight modes section for more details...
Flight planner auto-complete

Flight planner menu...

Menu

Flight plan
  • New – Reset the display to a blank checkpoints list
  • Load – Open an existing flight plan
  • Save – Save the existing or new flight plan
  • Save as – Create a new flight plan file form the existing one
  • Save as active flight plan – Save the flight plan into the ACTIVE_FlightPlan folder. When enabled, the ATC load the flight plan file which is inside this folder. If it is empty, the ATC will not talk (or even crash...).
Chart(s)
  • New - Reset the display to a blank list
  • Load - Open an existing chart 
  • Add – Add a chart to the list. It will be inserted AFTER the current selected waypoint
  • Save - Save the existing or new chart
  • Save as – Create a copy of the chart (only when editing a single chart)
  • Remove chart – Remove the whole chart the current selected checkpoint belongs to
  • Remove checkpoint – Remove the selected waypoint(s)
  • Insert checkpoint – Insert a new line before the current selected waypoint
Helpers 
  • Converter  - Opens a small window where you can enter a degrees/minutes/seconds coordinates and convert this into decimal coordinates EasyATC can read. Note that this converter is automatically opened when you double-click into a latitude or longitude cell in the list. In this case, when you click on Convert button, the window is closed and the cell filled with the correct value. 
  • Auto Complete - EasyATC try to fill as many cells as possible by looking for information into the different nav data, fix data, apt data files in the X-Plane resources. The modified cells are displayed with red font. When looking for a fix or navaid identifier, some dialog boxes can be displayed to confirm that the item that has been found is the one you need: many fixes and navaids have the same name in different places in the world! 
Playsound
Select two waypoints and press this button to hear the ATC. The state of the plane is supposed to be the first waypoint (altitude, heading, speed, coordinates, frequency, etc.). The ATC gives all the instructions to fly to the second waypoint.

Text boxes and drop down...

Flight plan name
  • The name of the flight plan when previously saved
Chart name
  • The name of the chart of the selected chart when previously saved. When selecting a waypoint row, in a multiple charts flight plan, this dropdown box displays the chart the waypoint belongs to (then you can see, for example, the chart you would remove if you clic on Chart/Remove in the menu)

Monday, October 12, 2015

Triggers...

When you edit waypoints in a chart, you have to pay attention on the following key points about triggering...

Triggering...
A trigger is an area or a volume that releases an event when something enter and/or exit this area or volume.

Waypoints...
The waypoints in EasyATC are cylindric triggers with a variable radius and a constant height auto-generated by EasyATC when the flight plan is built.

Trigger height
The trigger height is the height of the detection cylinder. This value can be changed with the TRIGGER_CHECKPOINT_HEIGHT_TOLERANCE constant. The default value is 10000 ft. That means that if you edit a waypoint at, let say, 6000 ft, EasyATC will consider you are triggering this waypoint if the altitude of your plane is between 1000 and 110000 ft.

Trigger radius
The trigger radius is processed by EasyATC depending on the distance between this waypoint and the two surrounding waypoints. The more a waypoint is close to the one before and/or the one after, the smaller is the radius. This is done to avoid superimposed triggers: if your plane is triggering two waypoints at the same time, EasyATC can deliver inappropriate messages. That said, the processed radius is never smaller than the minimum trigger size constant so the triggers can intersect if you edit two waypoints very close from each other. In this case a message will be displayed when you enable the ATC saying which are the waypoints that are too close.

Track
Between two waypoints/triggers, the ATC expects the plane to fly inside a corridor with a given height and width that fit the altitude and size of the triggers on both side

Plane triggering...
When the plane enters a trigger, the ATC compares the situation of the plane with the last expected track (the line between two waypoints), does some processing and updates or keeps as it is the expected track.

Constraints...
Avoid to close triggers.
The distance between two waypoints should not be lower than twice the minimum trigger radius constant. If not, when in-between the two triggers, the plane can be considered randomly inside the first waypoint or the second one.

Avoid crossings with same altitudes.
To allow crossings, I've added a vertical size on the tracks and waypoints. So if you have one track at, let say, 10,000 ft and another track, exactly below at 5,000 ft everything should work fine, if you keep the vertical trigger and track size constants below 2500 ft (half of the altitude difference).