Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
106 changes: 61 additions & 45 deletions AT3/AT3Tags.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ AT3Tags::AT3Tags(COLORREF colorA, COLORREF colorNA, COLORREF colorR) : CPlugIn(E
RegisterTagItemType("AT3 AMC Line 4", TAG_ITEM_AT3_AMC_LINE4);
RegisterTagItemType("AT3 ETA", TAG_ITEM_AT3_ETA);
RegisterTagItemType("AT3 Callsign", TAG_ITEM_AT3_CALLSIGN);
RegisterTagItemType("AT3 ADS-B Callsign", TAG_ITEM_AT3_ADSB_CALLSIGN);
RegisterTagItemType("AT3 ATYP + WTC", TAG_ITEM_AT3_ATYPWTC);
RegisterTagItemType("AT3 VS Indicator", TAG_ITEM_AT3_VS_INDICATOR);
RegisterTagItemType("AT3 Arrival Runway", TAG_ITEM_AT3_ARRIVAL_RWY);
Expand Down Expand Up @@ -171,14 +172,16 @@ void AT3Tags::OnFlightPlanControllerAssignedDataUpdate(CFlightPlan FlightPlan, i

void AT3Tags::OnGetTagItem(CFlightPlan FlightPlan, CRadarTarget RadarTarget, int ItemCode, int TagData, char sItemString[16], int* pColorCode, COLORREF* pRGB, double* pFontSize)
{
if (!FlightPlan.IsValid() || !RadarTarget.IsValid()) {
if (!RadarTarget.IsValid()) {
return;
}

bool isAT3Item = true;

*pColorCode = TAG_COLOR_RGB_DEFINED;
switch (FlightPlan.GetState()) {
*pRGB = colorNotAssumed;

if (FlightPlan.IsValid()) {
switch (FlightPlan.GetState()) {
case FLIGHT_PLAN_STATE_NON_CONCERNED:
*pRGB = colorNotAssumed;
break;
Expand All @@ -200,69 +203,77 @@ void AT3Tags::OnGetTagItem(CFlightPlan FlightPlan, CRadarTarget RadarTarget, int
case FLIGHT_PLAN_STATE_REDUNDANT:
*pRGB = colorRedundant;
break;
}
}

string tagOutput;
string tagOutput = "";

switch (ItemCode) {
case TAG_ITEM_AT3_ALTITUDE:
tagOutput = GetFormattedAltitude(FlightPlan, RadarTarget);
break;
tagOutput = GetFormattedAltitude(RadarTarget);
goto endSwitch;
case TAG_ITEM_AT3_TRACK:
tagOutput = GetFormattedTrack(RadarTarget);
goto endSwitch;
case TAG_ITEM_AT3_SPEED:
tagOutput = GetFormattedGroundspeed(RadarTarget);
goto endSwitch;
case TAG_ITEM_AT3_VS_INDICATOR:
tagOutput = GetVSIndicator(RadarTarget);
goto endSwitch;
case TAG_ITEM_AT3_ADSB_CALLSIGN:
tagOutput = GetADSBCallsign(RadarTarget);
goto endSwitch;
}

if (FlightPlan.IsValid()) {
switch (ItemCode) {
case TAG_ITEM_AT3_ALTITUDE_ASSIGNED:
tagOutput = GetFormattedAltitudedAssigned(FlightPlan, RadarTarget);
break;
case TAG_ITEM_AT3_TRACK:
tagOutput = GetFormattedTrack(FlightPlan, RadarTarget);
break;
case TAG_ITEM_AT3_HEADING_ASSIGNED:
tagOutput = GetFormattedHeadingAssigned(FlightPlan, RadarTarget);
break;
case TAG_ITEM_AT3_SPEED:
tagOutput = GetFormattedGroundspeed(FlightPlan, RadarTarget);
tagOutput = GetFormattedHeadingAssigned(FlightPlan);
break;
case TAG_ITEM_AT3_SPEED_ASSIGNED:
tagOutput = GetFormattedSpeedAssigned(FlightPlan, RadarTarget);
tagOutput = GetFormattedSpeedAssigned(FlightPlan);
break;
case TAG_ITEM_AT3_ROUTE_CODE:
tagOutput = GetRouteCodeLine4(FlightPlan, RadarTarget);
tagOutput = GetRouteCodeLine4(FlightPlan);
break;
case TAG_ITEM_AT3_APPDEP_LINE4:
tagOutput = GetAPPDEPLine4(FlightPlan, RadarTarget);
tagOutput = GetAPPDEPLine4(FlightPlan);
break;
case TAG_ITEM_AT3_AMC_LINE4:
tagOutput = GetAMCLine4(FlightPlan, RadarTarget);
tagOutput = GetAMCLine4(FlightPlan);
break;
case TAG_ITEM_AT3_ETA:
tagOutput = GetFormattedETA(FlightPlan, RadarTarget, minu);
tagOutput = GetFormattedETA(FlightPlan, minu);
break;
case TAG_ITEM_AT3_DELAY:
tagOutput = GetAMANDelay(FlightPlan, RadarTarget);
tagOutput = GetAMANDelay(FlightPlan);
break;
case TAG_ITEM_AT3_CALLSIGN:
tagOutput = GetCallsign(FlightPlan, RadarTarget);
tagOutput = GetCallsign(FlightPlan);
break;
case TAG_ITEM_AT3_ATYPWTC:
tagOutput = GetATYPWTC(FlightPlan, RadarTarget);
break;
case TAG_ITEM_AT3_VS_INDICATOR:
tagOutput = GetVSIndicator(FlightPlan, RadarTarget);
tagOutput = GetATYPWTC(FlightPlan);
break;
case TAG_ITEM_AT3_ARRIVAL_RWY:
tagOutput = GetFormattedArrivalRwy(FlightPlan, RadarTarget);
tagOutput = GetFormattedArrivalRwy(FlightPlan);
break;
case TAG_ITEM_AT3_ALRT:
tagOutput = GetALRT(FlightPlan, RadarTarget);
tagOutput = GetALRT(FlightPlan);
*pRGB = colorRedundant;
break;
default:
tagOutput = "";
isAT3Item = false;
}
}

endSwitch:;

// Convert string output to character array
if (isAT3Item) {
strcpy_s(sItemString, 16, tagOutput.substr(0, 15).c_str());
}
strcpy_s(sItemString, 16, tagOutput.substr(0, 15).c_str());
}

void AT3Tags::OnTimer(int Counter) {
Expand Down Expand Up @@ -495,7 +506,7 @@ void AT3Tags::OnFunctionCall(int FunctionId, const char* sItemString, POINT Pt,
}
}

string AT3Tags::GetFormattedAltitude(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
string AT3Tags::GetFormattedAltitude(CRadarTarget& RadarTarget)
{
int altitude = RadarTarget.GetPosition().GetPressureAltitude();
int transAlt = GetTransitionAltitude();
Expand Down Expand Up @@ -585,7 +596,7 @@ string AT3Tags::GetFormattedAltitudedAssigned(CFlightPlan& FlightPlan, CRadarTar
return formattedAltAssigned;
}

string AT3Tags::GetFormattedTrack(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
string AT3Tags::GetFormattedTrack(CRadarTarget& RadarTarget)
{
string track = to_string(static_cast<int>(trunc(RadarTarget.GetTrackHeading())));

Expand All @@ -599,7 +610,7 @@ string AT3Tags::GetFormattedTrack(CFlightPlan& FlightPlan, CRadarTarget& RadarTa
return track;
}

string AT3Tags::GetFormattedHeadingAssigned(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
string AT3Tags::GetFormattedHeadingAssigned(CFlightPlan& FlightPlan)
{
string headingAssigned = to_string(FlightPlan.GetControllerAssignedData().GetAssignedHeading());
if (headingAssigned == "0") {
Expand All @@ -613,7 +624,7 @@ string AT3Tags::GetFormattedHeadingAssigned(CFlightPlan& FlightPlan, CRadarTarge
return headingAssigned;
}

string AT3Tags::GetFormattedGroundspeed(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
string AT3Tags::GetFormattedGroundspeed(CRadarTarget& RadarTarget)
{
string groundSpeed = to_string((RadarTarget.GetGS() + 5) / 10);
if (groundSpeed.length() <= 2) {
Expand All @@ -622,7 +633,7 @@ string AT3Tags::GetFormattedGroundspeed(CFlightPlan& FlightPlan, CRadarTarget& R
return groundSpeed;
}

string AT3Tags::GetFormattedSpeedAssigned(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
string AT3Tags::GetFormattedSpeedAssigned(CFlightPlan& FlightPlan)
{
string speedAssigned;

Expand Down Expand Up @@ -675,7 +686,7 @@ void AT3Tags::GetRouteCode(CFlightPlan& FlightPlan) {
}
}

string AT3Tags::GetRouteCodeLine4(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
string AT3Tags::GetRouteCodeLine4(CFlightPlan& FlightPlan)
{
string spadCurrent = FlightPlan.GetControllerAssignedData().GetScratchPadString();
string flightStrip = FlightPlan.GetControllerAssignedData().GetFlightStripAnnotation(3);
Expand Down Expand Up @@ -739,7 +750,7 @@ void AT3Tags::GetAssignedAPP(CFlightPlan& FlightPlan) {
}
}

string AT3Tags::GetAPPDEPLine4(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
string AT3Tags::GetAPPDEPLine4(CFlightPlan& FlightPlan)
{
string flightStrip = FlightPlan.GetControllerAssignedData().GetFlightStripAnnotation(2);
string lineStr;
Expand Down Expand Up @@ -777,7 +788,7 @@ string AT3Tags::GetAPPDEPLine4(CFlightPlan& FlightPlan, CRadarTarget& RadarTarge
return lineStr;
}

string AT3Tags::GetAMCLine4(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
string AT3Tags::GetAMCLine4(CFlightPlan& FlightPlan)
{
string flightStrip = FlightPlan.GetControllerAssignedData().GetFlightStripAnnotation(2);
string lineStr;
Expand Down Expand Up @@ -810,7 +821,7 @@ string AT3Tags::GetAMCLine4(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
return lineStr;
}

string AT3Tags::GetFormattedETA(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget, int minutes)
string AT3Tags::GetFormattedETA(CFlightPlan& FlightPlan, int minutes)
{
try {
string runway = FlightPlan.GetFlightPlanData().GetArrivalRwy();
Expand Down Expand Up @@ -867,7 +878,7 @@ string AT3Tags::GetFormattedETA(CFlightPlan& FlightPlan, CRadarTarget& RadarTarg
}
}

string AT3Tags::GetAMANDelay(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
string AT3Tags::GetAMANDelay(CFlightPlan& FlightPlan)
{
int delay = trunc(GetCurrentDelay(FlightPlan.GetCallsign()));
if (delay == 0) {
Expand All @@ -880,7 +891,7 @@ string AT3Tags::GetAMANDelay(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
}
}

string AT3Tags::GetCallsign(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
string AT3Tags::GetCallsign(CFlightPlan& FlightPlan)
{
string flightStrip = FlightPlan.GetControllerAssignedData().GetFlightStripAnnotation(5); //find TopSky "/cpdlc/" annotations

Expand All @@ -892,15 +903,20 @@ string AT3Tags::GetCallsign(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
}
}

string AT3Tags::GetATYPWTC(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
string AT3Tags::GetADSBCallsign(CRadarTarget& RadarTarget)
{
return RadarTarget.GetCallsign();
}

string AT3Tags::GetATYPWTC(CFlightPlan& FlightPlan)
{
string ATYPWTC = "";
ATYPWTC += FlightPlan.GetFlightPlanData().GetAircraftFPType();
ATYPWTC += FlightPlan.GetFlightPlanData().GetAircraftWtc();
return ATYPWTC;
}

string AT3Tags::GetVSIndicator(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
string AT3Tags::GetVSIndicator(CRadarTarget& RadarTarget)
{
string vsIndicator;
if (RadarTarget.GetVerticalSpeed() > 200) {
Expand All @@ -913,7 +929,7 @@ string AT3Tags::GetVSIndicator(CFlightPlan& FlightPlan, CRadarTarget& RadarTarge
return vsIndicator;
}

string AT3Tags::GetFormattedArrivalRwy(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
string AT3Tags::GetFormattedArrivalRwy(CFlightPlan& FlightPlan)
{
if (arptSet.find(FlightPlan.GetFlightPlanData().GetDestination()) != arptSet.end()) {
string runway = FlightPlan.GetFlightPlanData().GetArrivalRwy();
Expand All @@ -926,7 +942,7 @@ string AT3Tags::GetFormattedArrivalRwy(CFlightPlan& FlightPlan, CRadarTarget& Ra
}
}

string AT3Tags::GetALRT(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
string AT3Tags::GetALRT(CFlightPlan& FlightPlan)
{
// HOW warning
if (FlightPlan.GetState() == FLIGHT_PLAN_STATE_TRANSFER_FROM_ME_INITIATED) {
Expand Down
32 changes: 17 additions & 15 deletions AT3/AT3Tags.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,41 +54,43 @@ class AT3Tags :

vector<string> GetAvailableRtes(string airport, string runway);

string GetFormattedAltitude(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
string GetFormattedAltitude(CRadarTarget& RadarTarget);

string GetFormattedAltitudedAssigned(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);

string GetFormattedTrack(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
string GetFormattedTrack(CRadarTarget& RadarTarget);

string GetFormattedHeadingAssigned(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
string GetFormattedHeadingAssigned(CFlightPlan& FlightPlan);

string GetFormattedGroundspeed(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
string GetFormattedGroundspeed(CRadarTarget& RadarTarget);

string GetFormattedSpeedAssigned(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
string GetFormattedSpeedAssigned(CFlightPlan& FlightPlan);

void GetRouteCode(CFlightPlan& FlightPlan);

string GetRouteCodeLine4(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
string GetRouteCodeLine4(CFlightPlan& FlightPlan);

void GetAssignedAPP(CFlightPlan& FlightPlan);

string GetAPPDEPLine4(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
string GetAPPDEPLine4(CFlightPlan& FlightPlan);

string GetAMCLine4 (CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
string GetAMCLine4 (CFlightPlan& FlightPlan);

string GetFormattedETA(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget, int minutes);
string GetFormattedETA(CFlightPlan& FlightPlan, int minutes);

string GetAMANDelay(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
string GetAMANDelay(CFlightPlan& FlightPlan);

string GetCallsign(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
string GetCallsign(CFlightPlan& FlightPlan);

string GetATYPWTC(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
string GetADSBCallsign(CRadarTarget& RadarTarget);

string GetVSIndicator(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
string GetATYPWTC(CFlightPlan& FlightPlan);

string GetFormattedArrivalRwy(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
string GetVSIndicator(CRadarTarget& RadarTarget);

string GetALRT(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
string GetFormattedArrivalRwy(CFlightPlan& FlightPlan);

string GetALRT(CFlightPlan& FlightPlan);

protected:
int minu;
Expand Down
1 change: 1 addition & 0 deletions Constant.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ const int TAG_ITEM_AT3_VS_INDICATOR = 22;
const int TAG_ITEM_AT3_ARRIVAL_RWY = 23;
const int TAG_ITEM_AT3_DELAY = 24;
const int TAG_ITEM_AT3_ALRT = 25;
const int TAG_ITEM_AT3_ADSB_CALLSIGN = 26;

const int TAG_FUNC_APP_SEL_MENU = 200;
const int TAG_FUNC_APP_SEL_ITEM_1 = 201;
Expand Down