Skip to content

Commit

Permalink
feat(releases): Add electronic departure releases (#272)
Browse files Browse the repository at this point in the history
* feat(curl): Include User Agent In cURL

* feat(graphics): Add standard graphics components (#267)

* feat(graphics): Add standard graphics components

* Add system clock and timer displays

* Add To Project

* Move To Right Project

* Add Missing Matchers

* feat(controllers): Implement controller positions V2 dependency (#268)

* feat(controllers): Implement controller positions V2 dependency

* Add Missing Change

* test(misc): Bring across changes from more tests

* feat(releases): Add API calls for departure releases (#269)

* feat(euroscope): Add additional EuroScope interfaces (#271)

* feat(euroscope): Add additional EuroScope interfaces

* Update Base Plugin

* Departure release features (#281)

* Add departure release docs

* Departure release resources

* Update Release Module Bootstrap

* Merge in release bits

* Add Missing Override

* Add Missing Solution Items

* Fix linting

* Change Wording
  • Loading branch information
AndyTWF committed Jul 2, 2021
1 parent 36aaf68 commit 9754ad5
Show file tree
Hide file tree
Showing 126 changed files with 9,217 additions and 668 deletions.
8 changes: 6 additions & 2 deletions docs/TAG_FUNCTIONS.md
Expand Up @@ -10,5 +10,9 @@
9007 - Open Stand Assignment Selection Menu
9008 - Open Stand Assignment Edit Box
9009 - Open UK Flight Information Services Menu
9010 - Open Oceanic Clearance Diaog
9011 - Recycle Initial Heading
9010 - Open Oceanic Clearance Dialog
9011 - Recycle Initial Heading
9012 - Open Request Departure Release Dialog
9013 - Open Departure Release Decision Menu
9014 - Open Departure Release Request Status View
9015 - Open Departure Release Cancellation Menu
3 changes: 3 additions & 0 deletions docs/TAG_ITEMS.md
Expand Up @@ -23,3 +23,6 @@
121 - Nattrak Oceanic Clearance Entry Point
122 - Nattrak Oceanic Clearance Track Identifier
123 - Nattrak Oceanic Clearance Entry Estimate
124 - Departure Release Status Indicator
125 - Departure Release Countdown
126 - Departure Release Requesting Controller
111 changes: 111 additions & 0 deletions docs/UserGuide/Features/DepartureReleases.md
@@ -0,0 +1,111 @@
# Departure Releases

Part of controlling Tower positions at most if not all UK airports is requesting a release for departure, that is, asking
the above controller such an Radar or Area Control unit for permission to depart an aircraft. Some airfields do this for every
departure, whereas others have a "free flow" agreement, whereby normally a release would not be required except under
special circumstances such as after a missed approach.

As an alternative to coordinating this via TeamSpeak, the UK Controller Plugin provides a way to achieve this electronically.

## Who Can Request Releases?

Only positions of TWR and above can request departure releases. Ground and Delivery positions will not be able to open
the request release dialog. To be able to request a release, you must be recognised by the plugin as an active controller.

## Who Can Be Targeted For A Release Request?

Only positions of APP and above can be selected as a target controller for a departure release. Tower, Ground and Delivery
will not appear in the target list.

## How Do I Request A Release?

A release for a given aircraft can be requested using the `Open Request Departure Release Dialog` TAG function (see below).
Activate this using the aircrafts TAG or a EuroScope list, select the controller you wish to target from the dropdown and
click request.

Release requests are active for five minutes, before automatically expiring.

## Can I Have Multiple Requests At Once?

For a given aircraft, there may be one "active" release request for a single controller position at any given time.
In this context, "active" is defined to mean not rejected or request expired. It is therefore possible to request a release
from several controller positions at once.

## How Can I Check The Status Of My Release Requests?

There are two options for viewing the status of releases that you have requested. You may either use the Status Indicator
and Countdown TAG items described below, or you can use the `Open Departure Release Status View` TAG function to popup
a temporary display for a given aircrafts releases.

## How Do I Respond To A Release Request?

If you are the target of a release request, you can use the `Departure Release Decision List` to make decisions on individual
releases. This may be toggled on a per-ASR basis using the `OP` menu.

If there is a pending release request for you, the header bar of the list will flash *_Red_*.

To make a decision in the aforementioned list, left click on the aircrafts callsign and select your decision from the menu.

If you click "Approve", you will be presented with another dialog that allows you to specify additional constraints, such
as the "released at" time, as well as an approval expiry time.

Alternatively, you can use the `Open Departure Release Decision Menu` TAG function in aircraft TAGs or EuroScope lists.

## TAG Items

Several TAG items are provided for Departure Releases.

### Departure Release Status Indicator

This TAG item displays the current status of any releases that are in progress for a given aircraft. It does this by
displaying in the format of `X/Y` where `X` is the number of approved releases and `Y` is the total number of active release
requests.

The indicator will show as *_Green_* if all active release requests have been approved and not subject to any "released at"
conditions. If all active release requests have been approved but are subject to a "released at" condition, the indicator
will display in *_Pink_*.

The indicator will show as *_Red_* if any active release requests have been rejected.

The indicator will show as *_Orange_* if any active release requests have been approved but since expired.

### Departure Release Countdown

This TAG item displays two types of countdown.

The first type of countdown is the time until release expiry when all release requests are approved.
This indicates how long it will be before the first active release request expires (if applicable). This timer will start
in *_White_*, transitioning to *_Yellow_* and finally *_Red_* as it gets closer to zero.

If the timer displays in *_Pink_*, it is indicating how long it will be until all the active release requests have met
their "released at" conditions, which give you an indicator of how long it will be until the aircraft can depart.

### Departure Release Requesting Controller

This can be used by controllers that are able to approve departure releases. It will display the callsign of the controller
requesting the release.

## TAG Functions

Several TAG functions are available for departure releases.

### Open Request Departure Release Dialog

This TAG function triggers the request release dialog, through which you can select a controller to ask for
a release.

### Open Departure Release Decision Menu

This TAG function opens up the departure release decision menu. Controllers who are the target of a departure release
can use this to make a decision on the release request.

### Open Departure Release Status View

This TAG function toggles (for a brief period) a small view of the outstanding departure release requests for a given
aircraft. It displays the target controller, a countdown until any "released at" times, as well as a countdown until
any release expiry times.

### Open Departure Release Cancellation Menu

This TAG function opens a menu that allows you to select a target controller for whom to cancel a release request. Use
this if you want to withdraw your request at any time.
1 change: 1 addition & 0 deletions docs/UserGuide/Features/Features.md
Expand Up @@ -25,3 +25,4 @@ dynamically to the plugin.
- Stand assignment
- RECAT-EU Wake Categories
- [VATSIM Nattrak Integration](Nattrak.md)
- [Electronic Departure Releases](DepartureReleases.md)
33 changes: 33 additions & 0 deletions msvc/UKControllerPlugin/UKControllerPlugin.vcxproj
Expand Up @@ -30,6 +30,11 @@
<ClInclude Include="..\..\src\bootstrap\PostInit.h" />
<ClInclude Include="..\..\src\command\CommandHandlerCollection.h" />
<ClInclude Include="..\..\src\command\CommandHandlerInterface.h" />
<ClInclude Include="..\..\src\components\BrushSwitcher.h" />
<ClInclude Include="..\..\src\components\Button.h" />
<ClInclude Include="..\..\src\components\ClickableArea.h" />
<ClInclude Include="..\..\src\components\StandardButtons.h" />
<ClInclude Include="..\..\src\components\TitleBar.h" />
<ClInclude Include="..\..\src\controller\ActiveCallsign.h" />
<ClInclude Include="..\..\src\controller\ActiveCallsignCollection.h" />
<ClInclude Include="..\..\src\controller\ActiveCallsignEventHandlerInterface.h" />
Expand Down Expand Up @@ -70,6 +75,8 @@
<ClInclude Include="..\..\src\euroscope\EuroScopeCRadarTargetInterface.h" />
<ClInclude Include="..\..\src\euroscope\EuroScopeCRadarTargetPositionDataInterface.h" />
<ClInclude Include="..\..\src\euroscope\EuroScopeCRadarTargetWrapper.h" />
<ClInclude Include="..\..\src\euroscope\EuroscopeFlightplanListInterface.h" />
<ClInclude Include="..\..\src\euroscope\EuroscopeFlightplanListWrapper.h" />
<ClInclude Include="..\..\src\euroscope\EuroscopeSectorFileElementInterface.h" />
<ClInclude Include="..\..\src\euroscope\EuroscopeExtractedRouteInterface.h" />
<ClInclude Include="..\..\src\euroscope\EuroscopePluginLoopbackInterface.h" />
Expand Down Expand Up @@ -263,12 +270,21 @@
<ClInclude Include="..\..\src\regional\RegionalPressureRenderer.h" />
<ClInclude Include="..\..\src\regional\RegionalPressureRendererConfiguration.h" />
<ClInclude Include="..\..\src\regional\RegionalPressure.h" />
<ClInclude Include="..\..\src\releases\ApproveDepartureReleaseDialog.h" />
<ClInclude Include="..\..\src\releases\CompareDepartureReleases.h" />
<ClInclude Include="..\..\src\releases\CompareEnrouteReleaseTypes.h" />
<ClInclude Include="..\..\src\releases\DepartureReleaseCountdownColours.h" />
<ClInclude Include="..\..\src\releases\DepartureReleaseDecisionList.h" />
<ClInclude Include="..\..\src\releases\DepartureReleaseEventHandler.h" />
<ClInclude Include="..\..\src\releases\DepartureReleaseRequest.h" />
<ClInclude Include="..\..\src\releases\DepartureReleaseRequestView.h" />
<ClInclude Include="..\..\src\releases\EnrouteRelease.h" />
<ClInclude Include="..\..\src\releases\EnrouteReleaseEventHandler.h" />
<ClInclude Include="..\..\src\releases\EnrouteReleaseType.h" />
<ClInclude Include="..\..\src\releases\EnrouteReleaseTypesSerializer.h" />
<ClInclude Include="..\..\src\releases\ReleaseModule.h" />
<ClInclude Include="..\..\src\releases\RequestDepartureReleaseDialog.h" />
<ClInclude Include="..\..\src\releases\ToggleDepartureReleaseDecisionList.h" />
<ClInclude Include="..\..\src\sectorfile\Runway.h" />
<ClInclude Include="..\..\src\sectorfile\RunwayCollection.h" />
<ClInclude Include="..\..\src\sectorfile\SectorFileBootstrap.h" />
Expand Down Expand Up @@ -304,6 +320,7 @@
<ClInclude Include="..\..\src\timedevent\DeferredEvent.h" />
<ClInclude Include="..\..\src\timedevent\DeferredEventBootstrap.h" />
<ClInclude Include="..\..\src\timedevent\TimedEventCollection.h" />
<ClInclude Include="..\..\src\timer\TimerDisplay.h" />
<ClInclude Include="..\..\src\time\ParseTimeStrings.h" />
<ClInclude Include="..\..\src\wake\CacheItem.h" />
<ClInclude Include="..\..\src\wake\CreateWakeMappings.h" />
Expand All @@ -329,6 +346,11 @@
<ClCompile Include="..\..\src\bootstrap\InitialisePlugin.cpp" />
<ClCompile Include="..\..\src\bootstrap\PostInit.cpp" />
<ClCompile Include="..\..\src\command\CommandHandlerCollection.cpp" />
<ClCompile Include="..\..\src\components\BrushSwitcher.cpp" />
<ClCompile Include="..\..\src\components\Button.cpp" />
<ClCompile Include="..\..\src\components\ClickableArea.cpp" />
<ClCompile Include="..\..\src\components\StandardButtons.cpp" />
<ClCompile Include="..\..\src\components\TitleBar.cpp" />
<ClCompile Include="..\..\src\controller\ActiveCallsign.cpp" />
<ClCompile Include="..\..\src\controller\ActiveCallsignCollection.cpp" />
<ClCompile Include="..\..\src\controller\ActiveCallsignMonitor.cpp" />
Expand Down Expand Up @@ -360,6 +382,7 @@
<ClCompile Include="..\..\src\euroscope\EuroScopeCFlightPlanWrapper.cpp" />
<ClCompile Include="..\..\src\euroscope\EuroScopeCRadarTargetWrapper.cpp" />
<ClCompile Include="..\..\src\euroscope\EuroscopeExtractedRouteInterface.cpp" />
<ClCompile Include="..\..\src\euroscope\EuroscopeFlightplanListWrapper.cpp" />
<ClCompile Include="..\..\src\euroscope\EuroscopeSectorFileElementWrapper.cpp" />
<ClCompile Include="..\..\src\euroscope\GeneralSettingsConfiguration.cpp" />
<ClCompile Include="..\..\src\euroscope\GeneralSettingsConfigurationBootstrap.cpp" />
Expand Down Expand Up @@ -520,10 +543,19 @@
<ClCompile Include="..\..\src\regional\RegionalPressureModule.cpp" />
<ClCompile Include="..\..\src\regional\RegionalPressureRenderer.cpp" />
<ClCompile Include="..\..\src\regional\RegionalPressureRendererConfiguration.cpp" />
<ClCompile Include="..\..\src\releases\ApproveDepartureReleaseDialog.cpp" />
<ClCompile Include="..\..\src\releases\CompareDepartureReleases.cpp" />
<ClCompile Include="..\..\src\releases\CompareEnrouteReleaseTypes.cpp" />
<ClCompile Include="..\..\src\releases\DepartureReleaseCountdownColours.cpp" />
<ClCompile Include="..\..\src\releases\DepartureReleaseDecisionList.cpp" />
<ClCompile Include="..\..\src\releases\DepartureReleaseEventHandler.cpp" />
<ClCompile Include="..\..\src\releases\DepartureReleaseRequest.cpp" />
<ClCompile Include="..\..\src\releases\DepartureReleaseRequestView.cpp" />
<ClCompile Include="..\..\src\releases\EnrouteReleaseEventHandler.cpp" />
<ClCompile Include="..\..\src\releases\EnrouteReleaseTypesSerializer.cpp" />
<ClCompile Include="..\..\src\releases\ReleaseModule.cpp" />
<ClCompile Include="..\..\src\releases\RequestDepartureReleaseDialog.cpp" />
<ClCompile Include="..\..\src\releases\ToggleDepartureReleaseDecisionList.cpp" />
<ClCompile Include="..\..\src\sectorfile\Runway.cpp" />
<ClCompile Include="..\..\src\sectorfile\RunwayCollection.cpp" />
<ClCompile Include="..\..\src\sectorfile\SectorFileBootstrap.cpp" />
Expand Down Expand Up @@ -555,6 +587,7 @@
<ClCompile Include="..\..\src\task\TaskRunner.cpp" />
<ClCompile Include="..\..\src\timedevent\DeferredEventBootstrap.cpp" />
<ClCompile Include="..\..\src\timedevent\TimedEventCollection.cpp" />
<ClCompile Include="..\..\src\timer\TimerDisplay.cpp" />
<ClCompile Include="..\..\src\time\ParseTimeStrings.cpp" />
<ClCompile Include="..\..\src\wake\CreateWakeMappings.cpp" />
<ClCompile Include="..\..\src\wake\WakeCategoryEventHandler.cpp" />
Expand Down
115 changes: 110 additions & 5 deletions msvc/UKControllerPlugin/UKControllerPlugin.vcxproj.filters
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="resource">
Expand Down Expand Up @@ -94,6 +94,9 @@
<Filter Include="src\hold">
<UniqueIdentifier>{93c29766-c3d5-47e0-8cfd-5d71d115cd0e}</UniqueIdentifier>
</Filter>
<Filter Include="src\push">
<UniqueIdentifier>{ae5b89fa-f548-48d4-9a2a-f651295aeeb4}</UniqueIdentifier>
</Filter>
<Filter Include="src\sectorfile">
<UniqueIdentifier>{61c300dc-1834-4381-b018-2c7380756930}</UniqueIdentifier>
</Filter>
Expand Down Expand Up @@ -142,8 +145,11 @@
<Filter Include="src\initialheading">
<UniqueIdentifier>{a732eccf-1336-457a-8597-2f558558027c}</UniqueIdentifier>
</Filter>
<Filter Include="src\push">
<UniqueIdentifier>{ae5b89fa-f548-48d4-9a2a-f651295aeeb4}</UniqueIdentifier>
<Filter Include="src\components">
<UniqueIdentifier>{bb7c490c-3f8f-4f8f-b927-0c6fd6683ffd}</UniqueIdentifier>
</Filter>
<Filter Include="src\timer">
<UniqueIdentifier>{6450b077-67f8-46e3-a43d-2fbe69517379}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
Expand Down Expand Up @@ -1001,7 +1007,31 @@
<ClInclude Include="..\..\src\plugin\ForceUpdate.h">
<Filter>src\plugin</Filter>
</ClInclude>
<ClInclude Include="..\..\src\push\PushEventProcessorCollection.h">
<ClInclude Include="..\..\src\euroscope\EuroscopeFlightplanListWrapper.h">
<Filter>src\euroscope</Filter>
</ClInclude>
<ClInclude Include="..\..\src\euroscope\EuroscopeFlightplanListInterface.h">
<Filter>src\euroscope</Filter>
</ClInclude>
<ClInclude Include="..\..\src\components\ClickableArea.h">
<Filter>src\components</Filter>
</ClInclude>
<ClInclude Include="..\..\src\components\StandardButtons.h">
<Filter>src\components</Filter>
</ClInclude>
<ClInclude Include="..\..\src\components\TitleBar.h">
<Filter>src\components</Filter>
</ClInclude>
<ClInclude Include="..\..\src\components\BrushSwitcher.h">
<Filter>src\components</Filter>
</ClInclude>
<ClInclude Include="..\..\src\components\Button.h">
<Filter>src\components</Filter>
</ClInclude>
<ClInclude Include="..\..\src\timer\TimerDisplay.h">
<Filter>src\timer</Filter>
</ClInclude>
<ClInclude Include="..\..\src\push\PushEventProcessorCollection.h">
<Filter>src\push</Filter>
</ClInclude>
<ClInclude Include="..\..\src\push\PushEventProcessorInterface.h">
Expand Down Expand Up @@ -1036,6 +1066,33 @@
</ClInclude>
<ClInclude Include="..\..\src\push\PushEventConnectionInterface.h">
<Filter>src\push</Filter>
</ClInclude>
<ClInclude Include="..\..\src\releases\CompareDepartureReleases.h">
<Filter>src\releases</Filter>
</ClInclude>
<ClInclude Include="..\..\src\releases\ApproveDepartureReleaseDialog.h">
<Filter>src\releases</Filter>
</ClInclude>
<ClInclude Include="..\..\src\releases\DepartureReleaseRequest.h">
<Filter>src\releases</Filter>
</ClInclude>
<ClInclude Include="..\..\src\releases\DepartureReleaseRequestView.h">
<Filter>src\releases</Filter>
</ClInclude>
<ClInclude Include="..\..\src\releases\DepartureReleaseCountdownColours.h">
<Filter>src\releases</Filter>
</ClInclude>
<ClInclude Include="..\..\src\releases\DepartureReleaseDecisionList.h">
<Filter>src\releases</Filter>
</ClInclude>
<ClInclude Include="..\..\src\releases\DepartureReleaseEventHandler.h">
<Filter>src\releases</Filter>
</ClInclude>
<ClInclude Include="..\..\src\releases\RequestDepartureReleaseDialog.h">
<Filter>src\releases</Filter>
</ClInclude>
<ClInclude Include="..\..\src\releases\ToggleDepartureReleaseDecisionList.h">
<Filter>src\releases</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
Expand Down Expand Up @@ -1752,6 +1809,27 @@
<ClCompile Include="..\..\src\plugin\ForceUpdate.cpp">
<Filter>src\plugin</Filter>
</ClCompile>
<ClCompile Include="..\..\src\euroscope\EuroscopeFlightplanListWrapper.cpp">
<Filter>src\euroscope</Filter>
</ClCompile>
<ClCompile Include="..\..\src\components\ClickableArea.cpp">
<Filter>src\components</Filter>
</ClCompile>
<ClCompile Include="..\..\src\components\StandardButtons.cpp">
<Filter>src\components</Filter>
</ClCompile>
<ClCompile Include="..\..\src\components\TitleBar.cpp">
<Filter>src\components</Filter>
</ClCompile>
<ClCompile Include="..\..\src\components\BrushSwitcher.cpp">
<Filter>src\components</Filter>
</ClCompile>
<ClCompile Include="..\..\src\components\Button.cpp">
<Filter>src\components</Filter>
</ClCompile>
<ClCompile Include="..\..\src\timer\TimerDisplay.cpp">
<Filter>src\timer</Filter>
</ClCompile>
<ClCompile Include="..\..\src\push\PushEventProxyConnection.cpp">
<Filter>src\push</Filter>
</ClCompile>
Expand All @@ -1778,6 +1856,33 @@
</ClCompile>
<ClCompile Include="..\..\src\push\PushEventProcessorCollection.cpp">
<Filter>src\push</Filter>
</ClCompile>
<ClCompile Include="..\..\src\releases\ApproveDepartureReleaseDialog.cpp">
<Filter>src\releases</Filter>
</ClCompile>
<ClCompile Include="..\..\src\releases\CompareDepartureReleases.cpp">
<Filter>src\releases</Filter>
</ClCompile>
<ClCompile Include="..\..\src\releases\DepartureReleaseRequest.cpp">
<Filter>src\releases</Filter>
</ClCompile>
<ClCompile Include="..\..\src\releases\DepartureReleaseRequestView.cpp">
<Filter>src\releases</Filter>
</ClCompile>
<ClCompile Include="..\..\src\releases\DepartureReleaseDecisionList.cpp">
<Filter>src\releases</Filter>
</ClCompile>
<ClCompile Include="..\..\src\releases\DepartureReleaseEventHandler.cpp">
<Filter>src\releases</Filter>
</ClCompile>
<ClCompile Include="..\..\src\releases\ToggleDepartureReleaseDecisionList.cpp">
<Filter>src\releases</Filter>
</ClCompile>
<ClCompile Include="..\..\src\releases\RequestDepartureReleaseDialog.cpp">
<Filter>src\releases</Filter>
</ClCompile>
<ClCompile Include="..\..\src\releases\DepartureReleaseCountdownColours.cpp">
<Filter>src\releases</Filter>
</ClCompile>
</ItemGroup>
</Project>
</Project>

0 comments on commit 9754ad5

Please sign in to comment.