@@ -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
172173void 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) {
0 commit comments