Skip to content

Commit 4359a1d

Browse files
authored
Merge pull request #43 from arthuwu/at3-uncorrel-tag
AT3 uncorrelated tag items
2 parents 64aa894 + c8115ab commit 4359a1d

File tree

3 files changed

+104
-73
lines changed

3 files changed

+104
-73
lines changed

AT3/AT3Tags.cpp

Lines changed: 86 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ AT3Tags::AT3Tags(COLORREF colorA, COLORREF colorNA, COLORREF colorR) : CPlugIn(E
2525
RegisterTagItemType("AT3 AMC Line 4", TAG_ITEM_AT3_AMC_LINE4);
2626
RegisterTagItemType("AT3 ETA", TAG_ITEM_AT3_ETA);
2727
RegisterTagItemType("AT3 Callsign", TAG_ITEM_AT3_CALLSIGN);
28+
RegisterTagItemType("AT3 ADS-B Callsign", TAG_ITEM_AT3_ADSB_CALLSIGN);
2829
RegisterTagItemType("AT3 ATYP + WTC", TAG_ITEM_AT3_ATYPWTC);
2930
RegisterTagItemType("AT3 VS Indicator", TAG_ITEM_AT3_VS_INDICATOR);
3031
RegisterTagItemType("AT3 Arrival Runway", TAG_ITEM_AT3_ARRIVAL_RWY);
@@ -171,14 +172,17 @@ void AT3Tags::OnFlightPlanControllerAssignedDataUpdate(CFlightPlan FlightPlan, i
171172

172173
void AT3Tags::OnGetTagItem(CFlightPlan FlightPlan, CRadarTarget RadarTarget, int ItemCode, int TagData, char sItemString[16], int* pColorCode, COLORREF* pRGB, double* pFontSize)
173174
{
174-
if (!FlightPlan.IsValid() || !RadarTarget.IsValid()) {
175+
if (!RadarTarget.IsValid()) {
175176
return;
176177
}
177178

178179
bool isAT3Item = true;
179180

180181
*pColorCode = TAG_COLOR_RGB_DEFINED;
181-
switch (FlightPlan.GetState()) {
182+
*pRGB = colorNotAssumed;
183+
184+
if (FlightPlan.IsValid()) {
185+
switch (FlightPlan.GetState()) {
182186
case FLIGHT_PLAN_STATE_NON_CONCERNED:
183187
*pRGB = colorNotAssumed;
184188
break;
@@ -200,65 +204,84 @@ void AT3Tags::OnGetTagItem(CFlightPlan FlightPlan, CRadarTarget RadarTarget, int
200204
case FLIGHT_PLAN_STATE_REDUNDANT:
201205
*pRGB = colorRedundant;
202206
break;
207+
}
203208
}
204209

205-
string tagOutput;
210+
string tagOutput = "";
206211

207212
switch (ItemCode) {
208213
case TAG_ITEM_AT3_ALTITUDE:
209-
tagOutput = GetFormattedAltitude(FlightPlan, RadarTarget);
210-
break;
211-
case TAG_ITEM_AT3_ALTITUDE_ASSIGNED:
212-
tagOutput = GetFormattedAltitudedAssigned(FlightPlan, RadarTarget);
214+
tagOutput = GetFormattedAltitude(RadarTarget);
213215
break;
214216
case TAG_ITEM_AT3_TRACK:
215-
tagOutput = GetFormattedTrack(FlightPlan, RadarTarget);
216-
break;
217-
case TAG_ITEM_AT3_HEADING_ASSIGNED:
218-
tagOutput = GetFormattedHeadingAssigned(FlightPlan, RadarTarget);
217+
tagOutput = GetFormattedTrack(RadarTarget);
219218
break;
220219
case TAG_ITEM_AT3_SPEED:
221-
tagOutput = GetFormattedGroundspeed(FlightPlan, RadarTarget);
222-
break;
223-
case TAG_ITEM_AT3_SPEED_ASSIGNED:
224-
tagOutput = GetFormattedSpeedAssigned(FlightPlan, RadarTarget);
225-
break;
226-
case TAG_ITEM_AT3_ROUTE_CODE:
227-
tagOutput = GetRouteCodeLine4(FlightPlan, RadarTarget);
228-
break;
229-
case TAG_ITEM_AT3_APPDEP_LINE4:
230-
tagOutput = GetAPPDEPLine4(FlightPlan, RadarTarget);
231-
break;
232-
case TAG_ITEM_AT3_AMC_LINE4:
233-
tagOutput = GetAMCLine4(FlightPlan, RadarTarget);
234-
break;
235-
case TAG_ITEM_AT3_ETA:
236-
tagOutput = GetFormattedETA(FlightPlan, RadarTarget, minu);
237-
break;
238-
case TAG_ITEM_AT3_DELAY:
239-
tagOutput = GetAMANDelay(FlightPlan, RadarTarget);
240-
break;
241-
case TAG_ITEM_AT3_CALLSIGN:
242-
tagOutput = GetCallsign(FlightPlan, RadarTarget);
243-
break;
244-
case TAG_ITEM_AT3_ATYPWTC:
245-
tagOutput = GetATYPWTC(FlightPlan, RadarTarget);
220+
tagOutput = GetFormattedGroundspeed(RadarTarget);
246221
break;
247222
case TAG_ITEM_AT3_VS_INDICATOR:
248-
tagOutput = GetVSIndicator(FlightPlan, RadarTarget);
223+
tagOutput = GetVSIndicator(RadarTarget);
249224
break;
250-
case TAG_ITEM_AT3_ARRIVAL_RWY:
251-
tagOutput = GetFormattedArrivalRwy(FlightPlan, RadarTarget);
252-
break;
253-
case TAG_ITEM_AT3_ALRT:
254-
tagOutput = GetALRT(FlightPlan, RadarTarget);
255-
*pRGB = colorRedundant;
225+
case TAG_ITEM_AT3_ADSB_CALLSIGN:
226+
tagOutput = GetADSBCallsign(RadarTarget);
256227
break;
257228
default:
258229
tagOutput = "";
259230
isAT3Item = false;
260231
}
261232

233+
if (isAT3Item) {
234+
strcpy_s(sItemString, 16, tagOutput.substr(0, 15).c_str());
235+
return;
236+
}
237+
238+
if (FlightPlan.IsValid()) {
239+
isAT3Item = true;
240+
241+
switch (ItemCode) {
242+
case TAG_ITEM_AT3_ALTITUDE_ASSIGNED:
243+
tagOutput = GetFormattedAltitudedAssigned(FlightPlan, RadarTarget);
244+
break;
245+
case TAG_ITEM_AT3_HEADING_ASSIGNED:
246+
tagOutput = GetFormattedHeadingAssigned(FlightPlan);
247+
break;
248+
case TAG_ITEM_AT3_SPEED_ASSIGNED:
249+
tagOutput = GetFormattedSpeedAssigned(FlightPlan);
250+
break;
251+
case TAG_ITEM_AT3_ROUTE_CODE:
252+
tagOutput = GetRouteCodeLine4(FlightPlan);
253+
break;
254+
case TAG_ITEM_AT3_APPDEP_LINE4:
255+
tagOutput = GetAPPDEPLine4(FlightPlan);
256+
break;
257+
case TAG_ITEM_AT3_AMC_LINE4:
258+
tagOutput = GetAMCLine4(FlightPlan);
259+
break;
260+
case TAG_ITEM_AT3_ETA:
261+
tagOutput = GetFormattedETA(FlightPlan, minu);
262+
break;
263+
case TAG_ITEM_AT3_DELAY:
264+
tagOutput = GetAMANDelay(FlightPlan);
265+
break;
266+
case TAG_ITEM_AT3_CALLSIGN:
267+
tagOutput = GetCallsign(FlightPlan);
268+
break;
269+
case TAG_ITEM_AT3_ATYPWTC:
270+
tagOutput = GetATYPWTC(FlightPlan);
271+
break;
272+
case TAG_ITEM_AT3_ARRIVAL_RWY:
273+
tagOutput = GetFormattedArrivalRwy(FlightPlan);
274+
break;
275+
case TAG_ITEM_AT3_ALRT:
276+
tagOutput = GetALRT(FlightPlan);
277+
*pRGB = colorRedundant;
278+
break;
279+
default:
280+
tagOutput = "";
281+
isAT3Item = false;
282+
}
283+
}
284+
262285
// Convert string output to character array
263286
if (isAT3Item) {
264287
strcpy_s(sItemString, 16, tagOutput.substr(0, 15).c_str());
@@ -495,7 +518,7 @@ void AT3Tags::OnFunctionCall(int FunctionId, const char* sItemString, POINT Pt,
495518
}
496519
}
497520

498-
string AT3Tags::GetFormattedAltitude(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
521+
string AT3Tags::GetFormattedAltitude(CRadarTarget& RadarTarget)
499522
{
500523
int altitude = RadarTarget.GetPosition().GetPressureAltitude();
501524
int transAlt = GetTransitionAltitude();
@@ -585,7 +608,7 @@ string AT3Tags::GetFormattedAltitudedAssigned(CFlightPlan& FlightPlan, CRadarTar
585608
return formattedAltAssigned;
586609
}
587610

588-
string AT3Tags::GetFormattedTrack(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
611+
string AT3Tags::GetFormattedTrack(CRadarTarget& RadarTarget)
589612
{
590613
string track = to_string(static_cast<int>(trunc(RadarTarget.GetTrackHeading())));
591614

@@ -599,7 +622,7 @@ string AT3Tags::GetFormattedTrack(CFlightPlan& FlightPlan, CRadarTarget& RadarTa
599622
return track;
600623
}
601624

602-
string AT3Tags::GetFormattedHeadingAssigned(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
625+
string AT3Tags::GetFormattedHeadingAssigned(CFlightPlan& FlightPlan)
603626
{
604627
string headingAssigned = to_string(FlightPlan.GetControllerAssignedData().GetAssignedHeading());
605628
if (headingAssigned == "0") {
@@ -613,7 +636,7 @@ string AT3Tags::GetFormattedHeadingAssigned(CFlightPlan& FlightPlan, CRadarTarge
613636
return headingAssigned;
614637
}
615638

616-
string AT3Tags::GetFormattedGroundspeed(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
639+
string AT3Tags::GetFormattedGroundspeed(CRadarTarget& RadarTarget)
617640
{
618641
string groundSpeed = to_string((RadarTarget.GetGS() + 5) / 10);
619642
if (groundSpeed.length() <= 2) {
@@ -622,7 +645,7 @@ string AT3Tags::GetFormattedGroundspeed(CFlightPlan& FlightPlan, CRadarTarget& R
622645
return groundSpeed;
623646
}
624647

625-
string AT3Tags::GetFormattedSpeedAssigned(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
648+
string AT3Tags::GetFormattedSpeedAssigned(CFlightPlan& FlightPlan)
626649
{
627650
string speedAssigned;
628651

@@ -675,7 +698,7 @@ void AT3Tags::GetRouteCode(CFlightPlan& FlightPlan) {
675698
}
676699
}
677700

678-
string AT3Tags::GetRouteCodeLine4(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
701+
string AT3Tags::GetRouteCodeLine4(CFlightPlan& FlightPlan)
679702
{
680703
string spadCurrent = FlightPlan.GetControllerAssignedData().GetScratchPadString();
681704
string flightStrip = FlightPlan.GetControllerAssignedData().GetFlightStripAnnotation(3);
@@ -739,7 +762,7 @@ void AT3Tags::GetAssignedAPP(CFlightPlan& FlightPlan) {
739762
}
740763
}
741764

742-
string AT3Tags::GetAPPDEPLine4(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
765+
string AT3Tags::GetAPPDEPLine4(CFlightPlan& FlightPlan)
743766
{
744767
string flightStrip = FlightPlan.GetControllerAssignedData().GetFlightStripAnnotation(2);
745768
string lineStr;
@@ -777,7 +800,7 @@ string AT3Tags::GetAPPDEPLine4(CFlightPlan& FlightPlan, CRadarTarget& RadarTarge
777800
return lineStr;
778801
}
779802

780-
string AT3Tags::GetAMCLine4(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
803+
string AT3Tags::GetAMCLine4(CFlightPlan& FlightPlan)
781804
{
782805
string flightStrip = FlightPlan.GetControllerAssignedData().GetFlightStripAnnotation(2);
783806
string lineStr;
@@ -810,7 +833,7 @@ string AT3Tags::GetAMCLine4(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
810833
return lineStr;
811834
}
812835

813-
string AT3Tags::GetFormattedETA(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget, int minutes)
836+
string AT3Tags::GetFormattedETA(CFlightPlan& FlightPlan, int minutes)
814837
{
815838
try {
816839
string runway = FlightPlan.GetFlightPlanData().GetArrivalRwy();
@@ -867,7 +890,7 @@ string AT3Tags::GetFormattedETA(CFlightPlan& FlightPlan, CRadarTarget& RadarTarg
867890
}
868891
}
869892

870-
string AT3Tags::GetAMANDelay(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
893+
string AT3Tags::GetAMANDelay(CFlightPlan& FlightPlan)
871894
{
872895
int delay = trunc(GetCurrentDelay(FlightPlan.GetCallsign()));
873896
if (delay == 0) {
@@ -880,7 +903,7 @@ string AT3Tags::GetAMANDelay(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
880903
}
881904
}
882905

883-
string AT3Tags::GetCallsign(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
906+
string AT3Tags::GetCallsign(CFlightPlan& FlightPlan)
884907
{
885908
string flightStrip = FlightPlan.GetControllerAssignedData().GetFlightStripAnnotation(5); //find TopSky "/cpdlc/" annotations
886909

@@ -892,15 +915,20 @@ string AT3Tags::GetCallsign(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
892915
}
893916
}
894917

895-
string AT3Tags::GetATYPWTC(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
918+
string AT3Tags::GetADSBCallsign(CRadarTarget& RadarTarget)
919+
{
920+
return RadarTarget.GetCallsign();
921+
}
922+
923+
string AT3Tags::GetATYPWTC(CFlightPlan& FlightPlan)
896924
{
897925
string ATYPWTC = "";
898926
ATYPWTC += FlightPlan.GetFlightPlanData().GetAircraftFPType();
899927
ATYPWTC += FlightPlan.GetFlightPlanData().GetAircraftWtc();
900928
return ATYPWTC;
901929
}
902930

903-
string AT3Tags::GetVSIndicator(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
931+
string AT3Tags::GetVSIndicator(CRadarTarget& RadarTarget)
904932
{
905933
string vsIndicator;
906934
if (RadarTarget.GetVerticalSpeed() > 200) {
@@ -913,7 +941,7 @@ string AT3Tags::GetVSIndicator(CFlightPlan& FlightPlan, CRadarTarget& RadarTarge
913941
return vsIndicator;
914942
}
915943

916-
string AT3Tags::GetFormattedArrivalRwy(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
944+
string AT3Tags::GetFormattedArrivalRwy(CFlightPlan& FlightPlan)
917945
{
918946
if (arptSet.find(FlightPlan.GetFlightPlanData().GetDestination()) != arptSet.end()) {
919947
string runway = FlightPlan.GetFlightPlanData().GetArrivalRwy();
@@ -926,7 +954,7 @@ string AT3Tags::GetFormattedArrivalRwy(CFlightPlan& FlightPlan, CRadarTarget& Ra
926954
}
927955
}
928956

929-
string AT3Tags::GetALRT(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget)
957+
string AT3Tags::GetALRT(CFlightPlan& FlightPlan)
930958
{
931959
// HOW warning
932960
if (FlightPlan.GetState() == FLIGHT_PLAN_STATE_TRANSFER_FROM_ME_INITIATED) {

AT3/AT3Tags.hpp

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -54,41 +54,43 @@ class AT3Tags :
5454

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

57-
string GetFormattedAltitude(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
57+
string GetFormattedAltitude(CRadarTarget& RadarTarget);
5858

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

61-
string GetFormattedTrack(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
61+
string GetFormattedTrack(CRadarTarget& RadarTarget);
6262

63-
string GetFormattedHeadingAssigned(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
63+
string GetFormattedHeadingAssigned(CFlightPlan& FlightPlan);
6464

65-
string GetFormattedGroundspeed(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
65+
string GetFormattedGroundspeed(CRadarTarget& RadarTarget);
6666

67-
string GetFormattedSpeedAssigned(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
67+
string GetFormattedSpeedAssigned(CFlightPlan& FlightPlan);
6868

6969
void GetRouteCode(CFlightPlan& FlightPlan);
7070

71-
string GetRouteCodeLine4(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
71+
string GetRouteCodeLine4(CFlightPlan& FlightPlan);
7272

7373
void GetAssignedAPP(CFlightPlan& FlightPlan);
7474

75-
string GetAPPDEPLine4(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
75+
string GetAPPDEPLine4(CFlightPlan& FlightPlan);
7676

77-
string GetAMCLine4 (CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
77+
string GetAMCLine4 (CFlightPlan& FlightPlan);
7878

79-
string GetFormattedETA(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget, int minutes);
79+
string GetFormattedETA(CFlightPlan& FlightPlan, int minutes);
8080

81-
string GetAMANDelay(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
81+
string GetAMANDelay(CFlightPlan& FlightPlan);
8282

83-
string GetCallsign(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
83+
string GetCallsign(CFlightPlan& FlightPlan);
8484

85-
string GetATYPWTC(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
85+
string GetADSBCallsign(CRadarTarget& RadarTarget);
8686

87-
string GetVSIndicator(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
87+
string GetATYPWTC(CFlightPlan& FlightPlan);
8888

89-
string GetFormattedArrivalRwy(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
89+
string GetVSIndicator(CRadarTarget& RadarTarget);
9090

91-
string GetALRT(CFlightPlan& FlightPlan, CRadarTarget& RadarTarget);
91+
string GetFormattedArrivalRwy(CFlightPlan& FlightPlan);
92+
93+
string GetALRT(CFlightPlan& FlightPlan);
9294

9395
protected:
9496
int minu;

Constant.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ const int TAG_ITEM_AT3_VS_INDICATOR = 22;
3030
const int TAG_ITEM_AT3_ARRIVAL_RWY = 23;
3131
const int TAG_ITEM_AT3_DELAY = 24;
3232
const int TAG_ITEM_AT3_ALRT = 25;
33+
const int TAG_ITEM_AT3_ADSB_CALLSIGN = 26;
3334

3435
const int TAG_FUNC_APP_SEL_MENU = 200;
3536
const int TAG_FUNC_APP_SEL_ITEM_1 = 201;

0 commit comments

Comments
 (0)