AsterixDisplayAnalyser.DynamicDisplayBuilder.GetDisplayData C# (CSharp) Метод

GetDisplayData() публичный статический Метод

public static GetDisplayData ( bool Return_Buffered, System &TargetList ) : void
Return_Buffered bool
TargetList System
Результат void
        public static void GetDisplayData(bool Return_Buffered, out System.Collections.Generic.List<TargetType> TargetList)
        {
            // First remove all the previous data
            CurrentTargetList.Clear();
            PSRTargetList.Clear();

            if (Return_Buffered == true)
            {
                if (MainASTERIXDataStorage.CAT01Message.Count > 0)
                {
                    for (int Start_Idx = 0; Start_Idx < MainASTERIXDataStorage.CAT01Message.Count; Start_Idx++)
                    {
                        MainASTERIXDataStorage.CAT01Data Msg = MainASTERIXDataStorage.CAT01Message[Start_Idx];

                        // Get Target Descriptor
                        CAT01I020UserData MyCAT01I020UserData = (CAT01I020UserData)Msg.CAT01DataItems[CAT01.ItemIDToIndex("020")].value;
                        // Get Mode3A
                        CAT01I070Types.CAT01070Mode3UserData Mode3AData = (CAT01I070Types.CAT01070Mode3UserData)Msg.CAT01DataItems[CAT01.ItemIDToIndex("070")].value;
                        // Get Lat/Long
                        CAT01I040Types.CAT01I040MeasuredPosInPolarCoordinates LatLongData_40 = (CAT01I040Types.CAT01I040MeasuredPosInPolarCoordinates)Msg.CAT01DataItems[CAT01.ItemIDToIndex("040")].value;
                        CAT01I042Types.CAT01I042CalculatedPositionInCartesianCoordinates LatLongData_42 = (CAT01I042Types.CAT01I042CalculatedPositionInCartesianCoordinates)Msg.CAT01DataItems[CAT01.ItemIDToIndex("042")].value;
                        // Get Flight Level
                        CAT01I090Types.CAT01I090FlightLevelUserData FlightLevelData = (CAT01I090Types.CAT01I090FlightLevelUserData)Msg.CAT01DataItems[CAT01.ItemIDToIndex("090")].value;
                        // Get Time Since Midnight
                        CAT01I141Types.CAT01141ElapsedTimeSinceMidnight TimeSinceMidnight = (CAT01I141Types.CAT01141ElapsedTimeSinceMidnight)Msg.CAT01DataItems[CAT01.ItemIDToIndex("141")].value;

                        // Get Calculated GSPD and HDG_Type
                        CAT01I200Types.CalculatedGSPandHDG_Type CalculatedGSPandHDG = null;
                        if (MyCAT01I020UserData.Type_Of_Report == CAT01I020Types.Type_Of_Report_Type.Track)
                          CalculatedGSPandHDG = (CAT01I200Types.CalculatedGSPandHDG_Type)Msg.CAT01DataItems[CAT01.ItemIDToIndex("200")].value;

                        TargetType Target = new TargetType();
                        if ((MyCAT01I020UserData != null) && (LatLongData_40 != null || LatLongData_42 != null))
                        {
                            double Lat, Lng = 0.0;
                            if (LatLongData_40 != null)
                            {
                                Lat = LatLongData_40.LatLong.GetLatLongDecimal().LatitudeDecimal;
                                Lng = LatLongData_40.LatLong.GetLatLongDecimal().LongitudeDecimal;
                            }
                            else
                            {
                                Lat = LatLongData_42.LatLong.GetLatLongDecimal().LatitudeDecimal;
                                Lng = LatLongData_42.LatLong.GetLatLongDecimal().LongitudeDecimal;
                            }

                            if (MyCAT01I020UserData.Type_Of_Radar_Detection == CAT01I020Types.Radar_Detection_Type.Primary)
                            {
                                Target.ModeA = "PSR";
                                Target.ModeC = "";
                                Target.Lat = Lat;
                                Target.Lon = Lng;
                                Target.TimeSinceMidnight = TimeSinceMidnight.ElapsedTimeSinceMidnight;
                                Target.TrackTerminateTreshold = 0;

                                if (CalculatedGSPandHDG != null)
                                {
                                    if (CalculatedGSPandHDG.Is_Valid)
                                    {
                                        Target.CALC_GSPD = Math.Round(CalculatedGSPandHDG.GSPD, 0).ToString();
                                        Target.CALC_HDG = Math.Round(CalculatedGSPandHDG.HDG, 0).ToString();
                                    }
                                }

                                PSRTargetList.Add(Target);
                            }
                            else if ((MyCAT01I020UserData.Type_Of_Radar_Detection != CAT01I020Types.Radar_Detection_Type.No_Detection) && (MyCAT01I020UserData.Type_Of_Radar_Detection != CAT01I020Types.Radar_Detection_Type.Unknown_Data))
                            {
                                if (Mode3AData != null)
                                {
                                    if (Mode3AData.Code_Validated == CAT01I070Types.Code_Validation_Type.Code_Validated)
                                    {
                                        Target.ModeA = Mode3AData.Mode3A_Code;
                                        if (FlightLevelData != null)
                                            if (FlightLevelData.Code_Validated == CAT01I090Types.Code_Validation_Type.Code_Validated)
                                                Target.ModeC = FlightLevelData.FlightLevel.ToString();
                                            else
                                                Target.ModeC = "---";
                                        else
                                            Target.ModeC = "---";

                                        Target.Lat = Lat;
                                        Target.Lon = Lng;

                                        if (TimeSinceMidnight != null)
                                            Target.TimeSinceMidnight = TimeSinceMidnight.ElapsedTimeSinceMidnight;

                                        if (CalculatedGSPandHDG != null)
                                        {
                                            if (CalculatedGSPandHDG.Is_Valid)
                                            {
                                                Target.CALC_GSPD = Math.Round(CalculatedGSPandHDG.GSPD, 0).ToString();
                                                Target.CALC_HDG = Math.Round(CalculatedGSPandHDG.HDG, 0).ToString();
                                            }
                                        }

                                        CurrentTargetList.Add(Target);
                                    }
                                }
                            }
                        }
                    }
                }
                else if (MainASTERIXDataStorage.CAT48Message.Count > 0)
                {
                    for (int Start_Idx = 0; Start_Idx < MainASTERIXDataStorage.CAT48Message.Count; Start_Idx++)
                    {
                        MainASTERIXDataStorage.CAT48Data Msg = MainASTERIXDataStorage.CAT48Message[Start_Idx];

                        // Get Target Descriptor
                        CAT48I020UserData MyCAT48I020UserData = (CAT48I020UserData)Msg.CAT48DataItems[CAT48.ItemIDToIndex("020")].value;
                        //
                        CAT48I070Types.CAT48I070Mode3UserData Mode3AData = (CAT48I070Types.CAT48I070Mode3UserData)Msg.CAT48DataItems[CAT48.ItemIDToIndex("070")].value;
                        // Get Lat/Long in decimal
                        CAT48I040Types.CAT48I040MeasuredPosInPolarCoordinates LatLongData = (CAT48I040Types.CAT48I040MeasuredPosInPolarCoordinates)Msg.CAT48DataItems[CAT48.ItemIDToIndex("040")].value;
                        // Get Flight Level
                        CAT48I090Types.CAT48I090FlightLevelUserData FlightLevelData = (CAT48I090Types.CAT48I090FlightLevelUserData)Msg.CAT48DataItems[CAT48.ItemIDToIndex("090")].value;
                        // Get Mode S Address
                        CAT48I220Types.CAT48AC_Address_Type Mode_S_Address = (CAT48I220Types.CAT48AC_Address_Type)Msg.CAT48DataItems[CAT48.ItemIDToIndex("220")].value;
                        // Get ACID data for Mode-S
                        CAT48I240Types.CAT48I240ACID_Data ACID_Mode_S = (CAT48I240Types.CAT48I240ACID_Data)Msg.CAT48DataItems[CAT48.ItemIDToIndex("240")].value;
                        // Get Mode-S MB Data
                        CAT48I250Types.CAT48I250DataType CAT48I250Mode_S_MB = (CAT48I250Types.CAT48I250DataType)Msg.CAT48DataItems[CAT48.ItemIDToIndex("250")].value;
                        // Get Time since midnight
                        CAT48I140Types.CAT48140ElapsedTimeSinceMidnight TimeSinceMidnight = (CAT48I140Types.CAT48140ElapsedTimeSinceMidnight)Msg.CAT48DataItems[CAT48.ItemIDToIndex("140")].value;
                        // Get Calculated GSPD and HDG_Type
                        CAT48I200Types.CalculatedGSPandHDG_Type CalculatedGSPandHDG = (CAT48I200Types.CalculatedGSPandHDG_Type)Msg.CAT48DataItems[CAT48.ItemIDToIndex("200")].value;

                        TargetType Target = new TargetType();

                        if (MyCAT48I020UserData != null)
                        {
                            if ((MyCAT48I020UserData.Type_Of_Report == CAT48I020Types.Type_Of_Report_Type.Single_PSR) || (MyCAT48I020UserData.Type_Of_Report == CAT48I020Types.Type_Of_Report_Type.Mode_S_Roll_Call_PSR))
                            {
                                Target.ModeA = "PSR";
                                Target.ModeC = "";
                                Target.ACID_Mode_S = "";
                                Target.Lat = LatLongData.LatLong.GetLatLongDecimal().LatitudeDecimal;
                                Target.Lon = LatLongData.LatLong.GetLatLongDecimal().LongitudeDecimal;
                                Target.TimeSinceMidnight = TimeSinceMidnight.ElapsedTimeSinceMidnight;
                                Target.TrackTerminateTreshold = 0;
                                PSRTargetList.Add(Target);
                            }
                            else if ((MyCAT48I020UserData.Type_Of_Report != CAT48I020Types.Type_Of_Report_Type.No_Detection) &&
                            (MyCAT48I020UserData.Type_Of_Report != CAT48I020Types.Type_Of_Report_Type.Unknown_Data))
                            {
                                if (Mode3AData != null)
                                {
                                    if (Mode3AData.Code_Validated == CAT48I070Types.Code_Validation_Type.Code_Validated)
                                    {
                                        Target.ModeA = Mode3AData.Mode3A_Code;

                                        if (FlightLevelData != null)
                                        {
                                            try
                                            {
                                                if (FlightLevelData.Code_Validated == CAT48I090Types.Code_Validation_Type.Code_Validated)
                                                    Target.ModeC = FlightLevelData.FlightLevel.ToString();
                                                else
                                                    Target.ModeC = "---";
                                            }
                                            catch
                                            {
                                                MessageBox.Show("Dynamic Display Builder, CAT48, Flight Level");
                                            }
                                        }
                                        else
                                            Target.ModeC = "---";

                                        if (ACID_Mode_S != null)
                                            Target.ACID_Mode_S = ACID_Mode_S.ACID;
                                        else
                                            Target.ACID_Mode_S = "N/A";

                                        Target.Lat = LatLongData.LatLong.GetLatLongDecimal().LatitudeDecimal;
                                        Target.Lon = LatLongData.LatLong.GetLatLongDecimal().LongitudeDecimal;
                                        Target.TimeSinceMidnight = TimeSinceMidnight.ElapsedTimeSinceMidnight;

                                        if (Mode_S_Address != null)
                                        {
                                            if (Mode_S_Address.Is_Valid)
                                                Target.Mode_S_Addr = Mode_S_Address.AC_ADDRESS_String;
                                            else
                                                Target.Mode_S_Addr = "N/A";
                                        }
                                        else
                                            Target.Mode_S_Addr = "N/A";

                                        if (CAT48I250Mode_S_MB != null)
                                        {
                                            if (CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.Present_This_Cycle)
                                            {
                                                if (CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.MAG_HDG.Is_Valid)
                                                    Target.DAP_HDG = Math.Round(CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.MAG_HDG.Value).ToString();
                                                else
                                                    Target.DAP_HDG = "N/A";

                                                if (CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.MACH.Is_Valid)
                                                    Target.MACH = Math.Round(CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.MACH.Value, 3).ToString();
                                                else
                                                    Target.MACH = "N/A";

                                                if (CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.IAS.Is_Valid)
                                                    Target.IAS = CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.IAS.Value.ToString();
                                                else
                                                    Target.IAS = "N/A";

                                                if (CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.Inertial_RoC.Is_Valid)
                                                    Target.Rate_Of_Climb = "I:" + CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.Inertial_RoC.Value.ToString();
                                                else
                                                    Target.Rate_Of_Climb = "I:N/A";

                                                if (CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.Baro_RoC.Is_Valid)
                                                    Target.Rate_Of_Climb = Target.Rate_Of_Climb + "/" + "B:" + CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.Baro_RoC.Value.ToString();
                                                else
                                                    Target.Rate_Of_Climb = Target.Rate_Of_Climb + "/" + "B:N/A";
                                            }

                                            if (CAT48I250Mode_S_MB.BDS50_Track_Turn_Report.Present_This_Cycle)
                                            {

                                                if (CAT48I250Mode_S_MB.BDS50_Track_Turn_Report.Roll_Ang.Is_Valid)
                                                    Target.Roll_Ang = Math.Round(CAT48I250Mode_S_MB.BDS50_Track_Turn_Report.Roll_Ang.Value).ToString();
                                                else
                                                    Target.Roll_Ang = "N/A";

                                                if (CAT48I250Mode_S_MB.BDS50_Track_Turn_Report.TAS.Is_Valid)
                                                    Target.TAS = CAT48I250Mode_S_MB.BDS50_Track_Turn_Report.TAS.Value.ToString();
                                                else
                                                    Target.TAS = "N/A";

                                                if (CAT48I250Mode_S_MB.BDS50_Track_Turn_Report.GND_SPD.Is_Valid)
                                                    Target.DAP_GSPD = Math.Round(CAT48I250Mode_S_MB.BDS50_Track_Turn_Report.GND_SPD.Value).ToString();
                                                else
                                                    Target.DAP_GSPD = "N/A";

                                                if (CAT48I250Mode_S_MB.BDS50_Track_Turn_Report.TRUE_TRK.Is_Valid)
                                                    Target.TRK = Math.Round(CAT48I250Mode_S_MB.BDS50_Track_Turn_Report.TRUE_TRK.Value).ToString();
                                                else
                                                    Target.TRK = "N/A";
                                            }

                                            if (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.Present_This_Cycle)
                                            {
                                                switch (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.Status_Data.Target_Altitude_Source)
                                                {
                                                    case CAT48I250Types.BDS40_Selected_Vertical_Intention_Report.Status.Target_Altitude_Mode_Type.Aircraft_Alt:
                                                        Target.SelectedAltitude_ShortTerm = "A/C:" + Target.ModeC;
                                                        break;
                                                    case CAT48I250Types.BDS40_Selected_Vertical_Intention_Report.Status.Target_Altitude_Mode_Type.FCU_MCP_Selected_Alt:
                                                        if (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.MCP_FCU_Sel_ALT.Is_Valid)
                                                            Target.SelectedAltitude_ShortTerm = "MCP:" + CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.MCP_FCU_Sel_ALT.Value.ToString();
                                                        else
                                                            Target.SelectedAltitude_ShortTerm = "MCP:N/A";
                                                        break;
                                                    case CAT48I250Types.BDS40_Selected_Vertical_Intention_Report.Status.Target_Altitude_Mode_Type.FMS_Selected_Alt:
                                                        if (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.FMS_Sel_ALT.Is_Valid)
                                                            Target.SelectedAltitude_ShortTerm = "FMS:" + CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.FMS_Sel_ALT.Value.ToString();
                                                        else
                                                            Target.SelectedAltitude_ShortTerm = "FMS:N/A";
                                                        break;
                                                    case CAT48I250Types.BDS40_Selected_Vertical_Intention_Report.Status.Target_Altitude_Mode_Type.Unknown:
                                                        if (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.MCP_FCU_Sel_ALT.Is_Valid)
                                                            Target.SelectedAltitude_ShortTerm = "UNK:" + CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.FMS_Sel_ALT.Value.ToString();
                                                        else
                                                            Target.SelectedAltitude_ShortTerm = "N/A";
                                                        break;
                                                }

                                                if (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.MCP_FCU_Sel_ALT.Is_Valid)
                                                {
                                                    if (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.Status_Data.MCP_FCU_Mode_Bits_Populated)
                                                    {
                                                        Target.SelectedAltitude_LongTerm = "";
                                                        if (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.Status_Data.ALT_Hold_Active)
                                                            Target.SelectedAltitude_LongTerm = Target.SelectedAltitude_LongTerm + "AH:";
                                                        if (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.Status_Data.APP_Mode_Active)
                                                            Target.SelectedAltitude_LongTerm = Target.SelectedAltitude_LongTerm + "AM:";
                                                        if (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.Status_Data.VNAV_Mode_Active)
                                                            Target.SelectedAltitude_LongTerm = Target.SelectedAltitude_LongTerm + "MV:";
                                                    }
                                                    Target.SelectedAltitude_LongTerm = Target.SelectedAltitude_LongTerm + CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.MCP_FCU_Sel_ALT.Value.ToString();
                                                }
                                                else
                                                    Target.SelectedAltitude_LongTerm = "N/A";

                                                if (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.Baro_Sel_ALT.Is_Valid)
                                                    Target.Barometric_Setting = Math.Round(CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.Baro_Sel_ALT.Value, 1).ToString() + "mb";
                                                else
                                                    Target.Barometric_Setting = "N/A";
                                            }

                                        }

                                        // If GSPD and HDG are available from CAT48/I200 then use it
                                        if (CalculatedGSPandHDG != null)
                                        {
                                            if (CalculatedGSPandHDG.Is_Valid)
                                            {
                                                Target.CALC_GSPD = Math.Round(CalculatedGSPandHDG.GSPD, 0).ToString();
                                                Target.CALC_HDG = Math.Round(CalculatedGSPandHDG.HDG, 0).ToString();
                                            }
                                        }

                                        CurrentTargetList.Add(Target);
                                    }
                                }
                            }
                        }
                    }
                }
                else if (MainASTERIXDataStorage.CAT62Message.Count > 0)
                {

                    for (int Start_Idx = 0; Start_Idx < MainASTERIXDataStorage.CAT62Message.Count; Start_Idx++)
                    {
                        MainASTERIXDataStorage.CAT62Data Msg = MainASTERIXDataStorage.CAT62Message[Start_Idx];
                        CAT62I060Types.CAT62060Mode3UserData Mode3AData = (CAT62I060Types.CAT62060Mode3UserData)Msg.CAT62DataItems[CAT62.ItemIDToIndex("060")].value;
                        GeoCordSystemDegMinSecUtilities.LatLongClass LatLongData = (GeoCordSystemDegMinSecUtilities.LatLongClass)Msg.CAT62DataItems[CAT62.ItemIDToIndex("105")].value;
                        CAT62I380Types.CAT62I380Data CAT62I380Data = (CAT62I380Types.CAT62I380Data)Msg.CAT62DataItems[CAT62.ItemIDToIndex("380")].value;
                        CAT62I220Types.CalculatedRateOfClimbDescent CAT62I220Data = (CAT62I220Types.CalculatedRateOfClimbDescent)Msg.CAT62DataItems[CAT62.ItemIDToIndex("220")].value;
                        CAT62I070Types.CAT62070ElapsedTimeSinceMidnight TimeSinceMidnight = (CAT62I070Types.CAT62070ElapsedTimeSinceMidnight)Msg.CAT62DataItems[CAT62.ItemIDToIndex("070")].value;
                        CAT62I185Types.CalculatedGSPandHDG_Type GSPD_and_HDG = (CAT62I185Types.CalculatedGSPandHDG_Type)Msg.CAT62DataItems[CAT62.ItemIDToIndex("185")].value;

                        TargetType Target = new TargetType();

                        if (Msg.CAT62DataItems[CAT62.ItemIDToIndex("040")].value != null)
                            Target.TrackNumber = (int)Msg.CAT62DataItems[CAT62.ItemIDToIndex("040")].value;

                        if (Mode3AData != null && LatLongData != null)
                        {
                            Target.ModeA = Mode3AData.Mode3A_Code;

                            if (Msg.CAT62DataItems[CAT62.ItemIDToIndex("136")].value != null)
                            {
                                try
                                {
                                    double FlightLevel = (double)Msg.CAT62DataItems[CAT62.ItemIDToIndex("136")].value;
                                    Target.ModeC = FlightLevel.ToString();
                                }
                                catch
                                {
                                    Target.ModeC = "---";
                                }
                            }
                            else
                            {
                                Target.ModeC = "---";
                            }

                            if (CAT62I380Data != null)
                            {
                                if (CAT62I380Data.AC_Address.Is_Valid)
                                    Target.Mode_S_Addr = CAT62I380Data.AC_Address.AC_ADDRESS_String;
                                else
                                    Target.Mode_S_Addr = "N/A";

                                if (CAT62I380Data.ACID.Is_Valid)
                                    Target.ACID_Mode_S = CAT62I380Data.ACID.ACID_String;
                                else
                                    Target.ACID_Mode_S = "N/A";

                                if (CAT62I380Data.TAS.Is_Valid)
                                    Target.TAS = CAT62I380Data.TAS.TAS.ToString();
                                else
                                    Target.TAS = "N/A";

                                if (CAT62I380Data.IAS.Is_Valid)
                                    Target.IAS = CAT62I380Data.IAS.IAS.ToString();
                                else
                                    Target.IAS = "N/A";

                                if (CAT62I380Data.MACH.Is_Valid)
                                    Target.MACH = Math.Round(CAT62I380Data.MACH.MACH, 3).ToString();
                                else
                                    Target.MACH = "N/A";

                                if (CAT62I380Data.M_HDG.Is_Valid)
                                    Target.DAP_HDG = Math.Round(CAT62I380Data.M_HDG.M_HDG).ToString();
                                else
                                    Target.DAP_HDG = "N/A";

                                if (CAT62I380Data.TRK.Is_Valid)
                                    Target.TRK = Math.Round(CAT62I380Data.TRK.TRK).ToString();
                                else
                                    Target.TRK = "N/A";

                                if (CAT62I380Data.GSPD.Is_Valid)
                                    Target.DAP_GSPD = Math.Round(CAT62I380Data.GSPD.GSPD).ToString();
                                else
                                    Target.DAP_GSPD = "N/A";

                                if (CAT62I380Data.Rool_Angle.Is_Valid)
                                    Target.Roll_Ang = Math.Round(CAT62I380Data.Rool_Angle.Rool_Angle, 1).ToString();
                                else
                                    Target.Roll_Ang = "N/A";

                                if (CAT62I380Data.FS_Selected_Altitude.Is_Valid)
                                {
                                    Target.SelectedAltitude_LongTerm = "";
                                    if (CAT62I380Data.FS_Selected_Altitude.Altitude_Hold_Active)
                                        Target.SelectedAltitude_LongTerm = Target.SelectedAltitude_LongTerm + "AH:";
                                    if (CAT62I380Data.FS_Selected_Altitude.Approach_Mode_Active)
                                        Target.SelectedAltitude_LongTerm = Target.SelectedAltitude_LongTerm + "AM:";
                                    if (CAT62I380Data.FS_Selected_Altitude.Manage_Mode_Active)
                                        Target.SelectedAltitude_LongTerm = Target.SelectedAltitude_LongTerm + "MV:";

                                    Target.SelectedAltitude_LongTerm = Target.SelectedAltitude_LongTerm + CAT62I380Data.FS_Selected_Altitude.SelectedAltitude.ToString();
                                }
                                else
                                    Target.SelectedAltitude_LongTerm = "N/A";

                                if (CAT62I380Data.Selected_Altitude.Is_Valid)
                                {
                                    Target.SelectedAltitude_ShortTerm = "";
                                    switch (CAT62I380Data.Selected_Altitude.Source)
                                    {
                                        case CAT62I380Types.CAT62SelectedAltitudeType.SourceType.AircraftAltitude:
                                            Target.SelectedAltitude_ShortTerm = Target.SelectedAltitude_ShortTerm + "A/C:";
                                            break;
                                        case CAT62I380Types.CAT62SelectedAltitudeType.SourceType.FCU_MCP:
                                            Target.SelectedAltitude_ShortTerm = Target.SelectedAltitude_ShortTerm + "MCP:";
                                            break;
                                        case CAT62I380Types.CAT62SelectedAltitudeType.SourceType.FMS_Selected:
                                            Target.SelectedAltitude_ShortTerm = Target.SelectedAltitude_ShortTerm + "FMS:";
                                            break;
                                        case CAT62I380Types.CAT62SelectedAltitudeType.SourceType.Unknown:
                                            Target.SelectedAltitude_ShortTerm = Target.SelectedAltitude_ShortTerm + "UKN:";
                                            break;
                                    }
                                    Target.SelectedAltitude_ShortTerm = Target.SelectedAltitude_ShortTerm + CAT62I380Data.Selected_Altitude.SelectedAltitude.ToString();
                                }
                                else
                                    Target.SelectedAltitude_ShortTerm = "N/A";

                                if (CAT62I380Data.Baro_Press_Setting.Is_Valid)
                                    Target.Barometric_Setting = Math.Round(CAT62I380Data.Baro_Press_Setting.Baro_Pressure_Setting, 1).ToString() + "mb";
                                else
                                    Target.Barometric_Setting = "N/A";
                            }

                            if (CAT62I220Data != null)
                            {
                                if (CAT62I220Data.Is_Valid == true)
                                    Target.Rate_Of_Climb = CAT62I220Data.Value.ToString();
                                else
                                    Target.Rate_Of_Climb = "N/A";
                            }
                            else
                            {
                                Target.Rate_Of_Climb = "N/A";
                            }

                            Target.Lat = LatLongData.GetLatLongDecimal().LatitudeDecimal;
                            Target.Lon = LatLongData.GetLatLongDecimal().LongitudeDecimal;

                            if (TimeSinceMidnight != null)
                                Target.TimeSinceMidnight = TimeSinceMidnight.ElapsedTimeSinceMidnight;

                            if (GSPD_and_HDG != null)
                            {
                                if (GSPD_and_HDG.Is_Valid)
                                {
                                    Target.CALC_GSPD = Math.Round(GSPD_and_HDG.GSPD, 0).ToString();
                                    Target.CALC_HDG = Math.Round(GSPD_and_HDG.HDG, 0).ToString();
                                }
                            }

                            CurrentTargetList.Add(Target);
                        }
                    }
                }
            }
            else
            {
                if (MainASTERIXDataStorage.CAT01Message.Count > 0)
                {
                    for (int Start_Idx = LastDataIndex; Start_Idx < MainASTERIXDataStorage.CAT01Message.Count; Start_Idx++)
                    {
                        LastDataIndex++;
                        MainASTERIXDataStorage.CAT01Data Msg = MainASTERIXDataStorage.CAT01Message[Start_Idx];

                        // Get Target Descriptor
                        CAT01I020UserData MyCAT01I020UserData = (CAT01I020UserData)Msg.CAT01DataItems[CAT01.ItemIDToIndex("020")].value;
                        // Get Mode3A
                        CAT01I070Types.CAT01070Mode3UserData Mode3AData = (CAT01I070Types.CAT01070Mode3UserData)Msg.CAT01DataItems[CAT01.ItemIDToIndex("070")].value;
                        // Get Lat/Long
                        CAT01I040Types.CAT01I040MeasuredPosInPolarCoordinates LatLongData_40 = (CAT01I040Types.CAT01I040MeasuredPosInPolarCoordinates)Msg.CAT01DataItems[CAT01.ItemIDToIndex("040")].value;
                        CAT01I042Types.CAT01I042CalculatedPositionInCartesianCoordinates LatLongData_42 = (CAT01I042Types.CAT01I042CalculatedPositionInCartesianCoordinates)Msg.CAT01DataItems[CAT01.ItemIDToIndex("042")].value;
                        // Get Flight Level
                        CAT01I090Types.CAT01I090FlightLevelUserData FlightLevelData = (CAT01I090Types.CAT01I090FlightLevelUserData)Msg.CAT01DataItems[CAT01.ItemIDToIndex("090")].value;
                        // Get Time Since Midnight
                        CAT01I141Types.CAT01141ElapsedTimeSinceMidnight TimeSinceMidnight = (CAT01I141Types.CAT01141ElapsedTimeSinceMidnight)Msg.CAT01DataItems[CAT01.ItemIDToIndex("141")].value;

                        // Get Calculated GSPD and HDG_Type
                        CAT01I200Types.CalculatedGSPandHDG_Type CalculatedGSPandHDG = null;
                        if (MyCAT01I020UserData.Type_Of_Report == CAT01I020Types.Type_Of_Report_Type.Track)
                            CalculatedGSPandHDG = (CAT01I200Types.CalculatedGSPandHDG_Type)Msg.CAT01DataItems[CAT01.ItemIDToIndex("200")].value;

                        TargetType Target = new TargetType();

                        if ((MyCAT01I020UserData != null) && (LatLongData_40 != null || LatLongData_42 != null))
                        {
                            double Lat, Lng = 0.0;
                            if (LatLongData_40 != null)
                            {
                                Lat = LatLongData_40.LatLong.GetLatLongDecimal().LatitudeDecimal;
                                Lng = LatLongData_40.LatLong.GetLatLongDecimal().LongitudeDecimal;
                            }
                            else
                            {
                                Lat = LatLongData_42.LatLong.GetLatLongDecimal().LatitudeDecimal;
                                Lng = LatLongData_42.LatLong.GetLatLongDecimal().LongitudeDecimal;
                            }

                            if (MyCAT01I020UserData.Type_Of_Radar_Detection == CAT01I020Types.Radar_Detection_Type.Primary)
                            {
                                Target.ModeA = "PSR";
                                Target.ModeC = "";
                                Target.Lat = Lat;
                                Target.Lon = Lng;
                                Target.TimeSinceMidnight = TimeSinceMidnight.ElapsedTimeSinceMidnight;
                                Target.MyMarker.Position = new PointLatLng(Target.Lat, Target.Lon);

                                if (CalculatedGSPandHDG != null)
                                {
                                    if (CalculatedGSPandHDG.Is_Valid)
                                    {
                                        Target.CALC_GSPD = Math.Round(CalculatedGSPandHDG.GSPD, 0).ToString();
                                        Target.CALC_HDG = Math.Round(CalculatedGSPandHDG.HDG, 0).ToString();
                                    }
                                }

                                PSRTargetList.Add(Target);
                            }
                            else if ((MyCAT01I020UserData.Type_Of_Radar_Detection != CAT01I020Types.Radar_Detection_Type.No_Detection) && (MyCAT01I020UserData.Type_Of_Radar_Detection != CAT01I020Types.Radar_Detection_Type.Unknown_Data))
                            {

                                if (Mode3AData != null)
                                {
                                    if (Mode3AData.Code_Validated == CAT01I070Types.Code_Validation_Type.Code_Validated)
                                    {
                                        Target.ModeA = Mode3AData.Mode3A_Code;

                                        if (FlightLevelData != null)
                                            if (FlightLevelData.Code_Validated == CAT01I090Types.Code_Validation_Type.Code_Validated)
                                                Target.ModeC = FlightLevelData.FlightLevel.ToString();
                                            else
                                                Target.ModeC = "---";
                                        else
                                            Target.ModeC = "---";

                                        Target.Lat = Lat;
                                        Target.Lon = Lng;
                                        Target.TimeSinceMidnight = TimeSinceMidnight.ElapsedTimeSinceMidnight;

                                        if (CalculatedGSPandHDG != null)
                                        {
                                            if (CalculatedGSPandHDG.Is_Valid)
                                            {
                                                Target.CALC_GSPD = Math.Round(CalculatedGSPandHDG.GSPD, 0).ToString();
                                                Target.CALC_HDG = Math.Round(CalculatedGSPandHDG.HDG, 0).ToString();
                                            }
                                        }

                                        CurrentTargetList.Add(Target);
                                    }
                                }
                            }
                        }
                    }
                }
                else if (MainASTERIXDataStorage.CAT48Message.Count > 0)
                {
                    for (int Start_Idx = LastDataIndex; Start_Idx < MainASTERIXDataStorage.CAT48Message.Count; Start_Idx++)
                    {
                        LastDataIndex++;

                        MainASTERIXDataStorage.CAT48Data Msg = MainASTERIXDataStorage.CAT48Message[Start_Idx];

                        CAT48I020UserData MyCAT48I020UserData = (CAT48I020UserData)Msg.CAT48DataItems[CAT48.ItemIDToIndex("020")].value;
                        CAT48I070Types.CAT48I070Mode3UserData Mode3AData = (CAT48I070Types.CAT48I070Mode3UserData)Msg.CAT48DataItems[CAT48.ItemIDToIndex("070")].value;
                        // Get Lat/Long in decimal
                        CAT48I040Types.CAT48I040MeasuredPosInPolarCoordinates LatLongData = (CAT48I040Types.CAT48I040MeasuredPosInPolarCoordinates)Msg.CAT48DataItems[CAT48.ItemIDToIndex("040")].value;
                        // Get Flight Level
                        CAT48I090Types.CAT48I090FlightLevelUserData FlightLevelData = (CAT48I090Types.CAT48I090FlightLevelUserData)Msg.CAT48DataItems[CAT48.ItemIDToIndex("090")].value;
                        // Get Mode S Address
                        CAT48I220Types.CAT48AC_Address_Type Mode_S_Address = (CAT48I220Types.CAT48AC_Address_Type)Msg.CAT48DataItems[CAT48.ItemIDToIndex("220")].value;
                        // Get ACID data for Mode-S
                        CAT48I240Types.CAT48I240ACID_Data ACID_Mode_S = (CAT48I240Types.CAT48I240ACID_Data)Msg.CAT48DataItems[CAT48.ItemIDToIndex("240")].value;
                        // Get Mode-S MB Data
                        CAT48I250Types.CAT48I250DataType CAT48I250Mode_S_MB = (CAT48I250Types.CAT48I250DataType)Msg.CAT48DataItems[CAT48.ItemIDToIndex("250")].value;
                        // Get Time since midnight
                        CAT48I140Types.CAT48140ElapsedTimeSinceMidnight TimeSinceMidnight = (CAT48I140Types.CAT48140ElapsedTimeSinceMidnight)Msg.CAT48DataItems[CAT48.ItemIDToIndex("140")].value;
                        // Get Calculated GSPD and HDG_Type
                        CAT48I200Types.CalculatedGSPandHDG_Type CalculatedGSPandHDG = (CAT48I200Types.CalculatedGSPandHDG_Type)Msg.CAT48DataItems[CAT48.ItemIDToIndex("200")].value;

                        TargetType Target = new TargetType();

                        if (MyCAT48I020UserData != null)
                        {
                            if ((MyCAT48I020UserData.Type_Of_Report == CAT48I020Types.Type_Of_Report_Type.Single_PSR) ||
                                (MyCAT48I020UserData.Type_Of_Report == CAT48I020Types.Type_Of_Report_Type.Mode_S_Roll_Call_PSR))
                            {
                                Target.ModeA = "PSR";
                                Target.ModeC = "";
                                Target.ACID_Mode_S = "";
                                Target.Lat = LatLongData.LatLong.GetLatLongDecimal().LatitudeDecimal;
                                Target.Lon = LatLongData.LatLong.GetLatLongDecimal().LongitudeDecimal;
                                Target.TimeSinceMidnight = TimeSinceMidnight.ElapsedTimeSinceMidnight;
                                PSRTargetList.Add(Target);
                            }
                            else if ((MyCAT48I020UserData.Type_Of_Report != CAT48I020Types.Type_Of_Report_Type.No_Detection) &&
                             (MyCAT48I020UserData.Type_Of_Report != CAT48I020Types.Type_Of_Report_Type.Unknown_Data))
                            {

                                if (Mode3AData != null)
                                {
                                    if (Mode3AData.Code_Validated == CAT48I070Types.Code_Validation_Type.Code_Validated)
                                    {
                                        Target.ModeA = Mode3AData.Mode3A_Code;

                                        if (FlightLevelData != null)
                                        {
                                            if (FlightLevelData.Code_Validated == CAT48I090Types.Code_Validation_Type.Code_Validated)
                                                Target.ModeC = FlightLevelData.FlightLevel.ToString();
                                            else
                                                Target.ModeC = "---";
                                        }
                                        else
                                            Target.ModeC = "---";

                                        if (ACID_Mode_S != null)
                                        {
                                            Target.ACID_Mode_S = ACID_Mode_S.ACID;
                                        }
                                        else
                                        {
                                            Target.ACID_Mode_S = "N/A";
                                        }
                                        Target.Lat = LatLongData.LatLong.GetLatLongDecimal().LatitudeDecimal;
                                        Target.Lon = LatLongData.LatLong.GetLatLongDecimal().LongitudeDecimal;
                                        Target.TimeSinceMidnight = TimeSinceMidnight.ElapsedTimeSinceMidnight;

                                        if (Mode_S_Address != null)
                                        {
                                            if (Mode_S_Address.Is_Valid)
                                                Target.Mode_S_Addr = Mode_S_Address.AC_ADDRESS_String;
                                            else
                                                Target.Mode_S_Addr = "N/A";
                                        }
                                        else
                                            Target.Mode_S_Addr = "N/A";

                                        if (CAT48I250Mode_S_MB != null)
                                        {
                                            if (CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.Present_This_Cycle)
                                            {
                                                if (CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.MAG_HDG.Is_Valid)
                                                    Target.DAP_HDG = Math.Round(CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.MAG_HDG.Value).ToString();
                                                else
                                                    Target.DAP_HDG = "N/A";

                                                if (CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.MACH.Is_Valid)
                                                    Target.MACH = Math.Round(CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.MACH.Value, 3).ToString();
                                                else
                                                    Target.MACH = "N/A";

                                                if (CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.IAS.Is_Valid)
                                                    Target.IAS = CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.IAS.Value.ToString();
                                                else
                                                    Target.IAS = "N/A";

                                                if (CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.Inertial_RoC.Is_Valid)
                                                    Target.Rate_Of_Climb = "I:" + CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.Inertial_RoC.Value.ToString();
                                                else
                                                    Target.Rate_Of_Climb = "I:N/A";

                                                if (CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.Baro_RoC.Is_Valid)
                                                    Target.Rate_Of_Climb = Target.Rate_Of_Climb + "/" + "B:" + CAT48I250Mode_S_MB.BDS60_HDG_SPD_Report.Baro_RoC.Value.ToString();
                                                else
                                                    Target.Rate_Of_Climb = Target.Rate_Of_Climb + "/" + "B:N/A";
                                            }

                                            if (CAT48I250Mode_S_MB.BDS50_Track_Turn_Report.Present_This_Cycle)
                                            {

                                                if (CAT48I250Mode_S_MB.BDS50_Track_Turn_Report.Roll_Ang.Is_Valid)
                                                    Target.Roll_Ang = Math.Round(CAT48I250Mode_S_MB.BDS50_Track_Turn_Report.Roll_Ang.Value).ToString();
                                                else
                                                    Target.Roll_Ang = "N/A";

                                                if (CAT48I250Mode_S_MB.BDS50_Track_Turn_Report.TAS.Is_Valid)
                                                    Target.TAS = CAT48I250Mode_S_MB.BDS50_Track_Turn_Report.TAS.Value.ToString();
                                                else
                                                    Target.TAS = "N/A";

                                                if (CAT48I250Mode_S_MB.BDS50_Track_Turn_Report.GND_SPD.Is_Valid)
                                                    Target.DAP_GSPD = Math.Round(CAT48I250Mode_S_MB.BDS50_Track_Turn_Report.GND_SPD.Value).ToString();
                                                else
                                                    Target.DAP_GSPD = "N/A";

                                                if (CAT48I250Mode_S_MB.BDS50_Track_Turn_Report.TRUE_TRK.Is_Valid)
                                                    Target.TRK = Math.Round(CAT48I250Mode_S_MB.BDS50_Track_Turn_Report.TRUE_TRK.Value).ToString();
                                                else
                                                    Target.TRK = "N/A";
                                            }

                                            if (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.Present_This_Cycle)
                                            {
                                                switch (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.Status_Data.Target_Altitude_Source)
                                                {
                                                    case CAT48I250Types.BDS40_Selected_Vertical_Intention_Report.Status.Target_Altitude_Mode_Type.Aircraft_Alt:
                                                        Target.SelectedAltitude_ShortTerm = "A/C:" + Target.ModeC;
                                                        break;
                                                    case CAT48I250Types.BDS40_Selected_Vertical_Intention_Report.Status.Target_Altitude_Mode_Type.FCU_MCP_Selected_Alt:
                                                        if (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.MCP_FCU_Sel_ALT.Is_Valid)
                                                            Target.SelectedAltitude_ShortTerm = "MCP:" + CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.MCP_FCU_Sel_ALT.Value.ToString();
                                                        else
                                                            Target.SelectedAltitude_ShortTerm = "MCP:N/A";
                                                        break;
                                                    case CAT48I250Types.BDS40_Selected_Vertical_Intention_Report.Status.Target_Altitude_Mode_Type.FMS_Selected_Alt:
                                                        if (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.FMS_Sel_ALT.Is_Valid)
                                                            Target.SelectedAltitude_ShortTerm = "FMS:" + CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.FMS_Sel_ALT.Value.ToString();
                                                        else
                                                            Target.SelectedAltitude_ShortTerm = "FMS:N/A";
                                                        break;
                                                    case CAT48I250Types.BDS40_Selected_Vertical_Intention_Report.Status.Target_Altitude_Mode_Type.Unknown:
                                                        if (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.MCP_FCU_Sel_ALT.Is_Valid)
                                                            Target.SelectedAltitude_ShortTerm = "UNK:" + CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.MCP_FCU_Sel_ALT.Value.ToString();
                                                        else
                                                            Target.SelectedAltitude_ShortTerm = "N/A";
                                                        break;
                                                }

                                                if (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.MCP_FCU_Sel_ALT.Is_Valid)
                                                {
                                                    Target.SelectedAltitude_LongTerm = "";
                                                    if (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.Status_Data.MCP_FCU_Mode_Bits_Populated)
                                                    {
                                                        if (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.Status_Data.ALT_Hold_Active)
                                                            Target.SelectedAltitude_LongTerm = Target.SelectedAltitude_LongTerm + "AH:";
                                                        if (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.Status_Data.APP_Mode_Active)
                                                            Target.SelectedAltitude_LongTerm = Target.SelectedAltitude_LongTerm + "AM:";
                                                        if (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.Status_Data.VNAV_Mode_Active)
                                                            Target.SelectedAltitude_LongTerm = Target.SelectedAltitude_LongTerm + "MV:";
                                                    }
                                                    Target.SelectedAltitude_LongTerm = Target.SelectedAltitude_LongTerm + CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.MCP_FCU_Sel_ALT.Value.ToString();
                                                }
                                                else
                                                    Target.SelectedAltitude_LongTerm = "N/A";

                                                if (CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.Baro_Sel_ALT.Is_Valid)
                                                    Target.Barometric_Setting = Math.Round(CAT48I250Mode_S_MB.BDS40_Selected_Vertical_Intention_Report.Baro_Sel_ALT.Value, 1).ToString() + "mb";
                                                else
                                                    Target.Barometric_Setting = "N/A";
                                            }

                                        }

                                        // If GSPD and HDG are available from CAT48/I200 then use it
                                        if (CalculatedGSPandHDG != null)
                                        {
                                            if (CalculatedGSPandHDG.Is_Valid)
                                            {
                                                Target.CALC_GSPD = Math.Round(CalculatedGSPandHDG.GSPD, 0).ToString();
                                                Target.CALC_HDG = Math.Round(CalculatedGSPandHDG.HDG, 0).ToString();
                                            }
                                        }

                                        CurrentTargetList.Add(Target);
                                    }
                                }
                            }
                        }
                    }
                }
                else if (MainASTERIXDataStorage.CAT62Message.Count > 0)
                {

                    for (int Start_Idx = LastDataIndex; Start_Idx < MainASTERIXDataStorage.CAT62Message.Count; Start_Idx++)
                    {
                        LastDataIndex++;

                        MainASTERIXDataStorage.CAT62Data Msg = MainASTERIXDataStorage.CAT62Message[Start_Idx];

                        CAT62I060Types.CAT62060Mode3UserData Mode3AData = (CAT62I060Types.CAT62060Mode3UserData)Msg.CAT62DataItems[CAT62.ItemIDToIndex("060")].value;
                        // Get Lat/Long in decimal
                        GeoCordSystemDegMinSecUtilities.LatLongClass LatLongData = (GeoCordSystemDegMinSecUtilities.LatLongClass)Msg.CAT62DataItems[CAT62.ItemIDToIndex("105")].value;
                        CAT62I220Types.CalculatedRateOfClimbDescent CAT62I220Data = (CAT62I220Types.CalculatedRateOfClimbDescent)Msg.CAT62DataItems[CAT62.ItemIDToIndex("220")].value;
                        CAT62I380Types.CAT62I380Data CAT62I380Data = (CAT62I380Types.CAT62I380Data)Msg.CAT62DataItems[CAT62.ItemIDToIndex("380")].value;
                        CAT62I070Types.CAT62070ElapsedTimeSinceMidnight TimeSinceMidnight = (CAT62I070Types.CAT62070ElapsedTimeSinceMidnight)Msg.CAT62DataItems[CAT62.ItemIDToIndex("070")].value;
                        CAT62I185Types.CalculatedGSPandHDG_Type GSPD_and_HDG = (CAT62I185Types.CalculatedGSPandHDG_Type)Msg.CAT62DataItems[CAT62.ItemIDToIndex("185")].value;

                        TargetType Target = new TargetType();

                        if (Msg.CAT62DataItems[CAT62.ItemIDToIndex("040")].value != null)
                            Target.TrackNumber = (int)Msg.CAT62DataItems[CAT62.ItemIDToIndex("040")].value;

                        if (Mode3AData != null && LatLongData != null)
                        {
                            Target.ModeA = Mode3AData.Mode3A_Code;

                            if (Msg.CAT62DataItems[CAT62.ItemIDToIndex("136")].value != null)
                            {
                                try
                                {
                                    double FlightLevel = (double)Msg.CAT62DataItems[CAT62.ItemIDToIndex("136")].value;
                                    Target.ModeC = FlightLevel.ToString();
                                }
                                catch
                                {
                                    Target.ModeC = "---";
                                }
                            }
                            else
                            {
                                Target.ModeC = "---";
                            }

                            if (CAT62I380Data != null)
                            {
                                if (CAT62I380Data.AC_Address.Is_Valid)
                                    Target.Mode_S_Addr = CAT62I380Data.AC_Address.AC_ADDRESS_String;
                                else
                                    Target.Mode_S_Addr = "N/A";

                                if (CAT62I380Data.ACID.Is_Valid)
                                    Target.ACID_Mode_S = CAT62I380Data.ACID.ACID_String;
                                else
                                    Target.ACID_Mode_S = "N/A";

                                if (CAT62I380Data.TAS.Is_Valid)
                                    Target.TAS = CAT62I380Data.TAS.TAS.ToString();
                                else
                                    Target.TAS = "N/A";

                                if (CAT62I380Data.IAS.Is_Valid)
                                    Target.IAS = CAT62I380Data.IAS.IAS.ToString();
                                else
                                    Target.IAS = "N/A";

                                if (CAT62I380Data.MACH.Is_Valid)
                                    Target.MACH = Math.Round(CAT62I380Data.MACH.MACH, 3).ToString();
                                else
                                    Target.MACH = "N/A";

                                if (CAT62I380Data.M_HDG.Is_Valid)
                                    Target.DAP_HDG = Math.Round(CAT62I380Data.M_HDG.M_HDG).ToString();
                                else
                                    Target.DAP_HDG = "N/A";

                                if (CAT62I380Data.TRK.Is_Valid)
                                    Target.TRK = Math.Round(CAT62I380Data.TRK.TRK).ToString();
                                else
                                    Target.TRK = "N/A";

                                if (CAT62I380Data.GSPD.Is_Valid)
                                    Target.DAP_GSPD = Math.Round(CAT62I380Data.GSPD.GSPD).ToString();
                                else
                                    Target.DAP_GSPD = "N/A";

                                if (CAT62I380Data.Rool_Angle.Is_Valid)
                                    Target.Roll_Ang = Math.Round(CAT62I380Data.Rool_Angle.Rool_Angle, 1).ToString();
                                else
                                    Target.Roll_Ang = "N/A";

                                if (CAT62I380Data.FS_Selected_Altitude.Is_Valid)
                                {
                                    Target.SelectedAltitude_LongTerm = "";
                                    if (CAT62I380Data.FS_Selected_Altitude.Altitude_Hold_Active)
                                        Target.SelectedAltitude_LongTerm = Target.SelectedAltitude_LongTerm + "AH:";
                                    if (CAT62I380Data.FS_Selected_Altitude.Approach_Mode_Active)
                                        Target.SelectedAltitude_LongTerm = Target.SelectedAltitude_LongTerm + "AM:";
                                    if (CAT62I380Data.FS_Selected_Altitude.Manage_Mode_Active)
                                        Target.SelectedAltitude_LongTerm = Target.SelectedAltitude_LongTerm + "MV:";

                                    Target.SelectedAltitude_LongTerm = Target.SelectedAltitude_LongTerm + CAT62I380Data.FS_Selected_Altitude.SelectedAltitude.ToString();
                                }
                                else
                                    Target.SelectedAltitude_LongTerm = "N/A";

                                if (CAT62I380Data.Selected_Altitude.Is_Valid)
                                {
                                    Target.SelectedAltitude_ShortTerm = "";
                                    switch (CAT62I380Data.Selected_Altitude.Source)
                                    {
                                        case CAT62I380Types.CAT62SelectedAltitudeType.SourceType.AircraftAltitude:
                                            Target.SelectedAltitude_ShortTerm = Target.SelectedAltitude_ShortTerm + "A/C:";
                                            break;
                                        case CAT62I380Types.CAT62SelectedAltitudeType.SourceType.FCU_MCP:
                                            Target.SelectedAltitude_ShortTerm = Target.SelectedAltitude_ShortTerm + "MCP:";
                                            break;
                                        case CAT62I380Types.CAT62SelectedAltitudeType.SourceType.FMS_Selected:
                                            Target.SelectedAltitude_ShortTerm = Target.SelectedAltitude_ShortTerm + "FMS:";
                                            break;
                                        case CAT62I380Types.CAT62SelectedAltitudeType.SourceType.Unknown:
                                            Target.SelectedAltitude_ShortTerm = Target.SelectedAltitude_ShortTerm + "UKN:";
                                            break;
                                    }
                                    Target.SelectedAltitude_ShortTerm = Target.SelectedAltitude_ShortTerm + CAT62I380Data.Selected_Altitude.SelectedAltitude.ToString();
                                }
                                else
                                    Target.SelectedAltitude_ShortTerm = "N/A";

                                if (CAT62I380Data.Baro_Press_Setting.Is_Valid)
                                    Target.Barometric_Setting = Math.Round(CAT62I380Data.Baro_Press_Setting.Baro_Pressure_Setting, 1).ToString() + "mb";
                                else
                                    Target.Barometric_Setting = "N/A";
                            }

                            if (CAT62I220Data != null)
                            {
                                if (CAT62I220Data.Is_Valid == true)
                                    Target.Rate_Of_Climb = CAT62I220Data.Value.ToString();
                                else
                                    Target.Rate_Of_Climb = "N/A";
                            }
                            else
                            {
                                Target.Rate_Of_Climb = "N/A";
                            }

                            Target.Lat = LatLongData.GetLatLongDecimal().LatitudeDecimal;
                            Target.Lon = LatLongData.GetLatLongDecimal().LongitudeDecimal;

                            if (TimeSinceMidnight != null)
                                Target.TimeSinceMidnight = TimeSinceMidnight.ElapsedTimeSinceMidnight;

                            if (GSPD_and_HDG != null)
                            {
                                if (GSPD_and_HDG.Is_Valid)
                                {
                                    Target.CALC_GSPD = Math.Round(GSPD_and_HDG.GSPD, 0).ToString();
                                    Target.CALC_HDG = Math.Round(GSPD_and_HDG.HDG, 0).ToString();
                                }
                            }

                            CurrentTargetList.Add(Target);
                        }
                    }
                }
            }

            if (Return_Buffered == false)
            {
                UpdateGlobalList();
            }

            STCA.RUN(ref CurrentTargetList);
            TargetList = CurrentTargetList;
        }