public static void DecodeCAT48I002(byte[] Data)
{
// Decode 020
if (CAT48.I048DataItems[CAT48.ItemIDToIndex("020")].HasBeenPresent == true)
{
// First define CAT48I002 class
CAT48I020UserData MyI002UserData = new CAT48I020UserData();
// Get an instance of bit ops
Bit_Ops BO = new Bit_Ops();
//Extract the first octet
BO.DWord[Bit_Ops.Bits0_7_Of_DWord] = Data[CAT48.CurrentDataBufferOctalIndex];
///////////////////////////////////////////////////////////////////////////////////////////////////
//
int Type_Result = BitExtractor.GetIntFromThreeBits(BO.DWord[CAT48I020Types.Word1_TYP_Index_1], BO.DWord[CAT48I020Types.Word1_TYP_Index_2], BO.DWord[CAT48I020Types.Word1_TYP_Index_3]);
switch (Type_Result)
{
// Monoradar Data Target Reports, from a Radar Surveillance System to an SDPS
// (plots and tracks from PSRs, SSRs, MSSRs, excluding Mode S and ground surveillance)
case 0:
MyI002UserData.Type_Of_Report = CAT48I020Types.Type_Of_Report_Type.No_Detection;
break;
case 1:
MyI002UserData.Type_Of_Report = CAT48I020Types.Type_Of_Report_Type.Single_PSR;
break;
case 2:
MyI002UserData.Type_Of_Report = CAT48I020Types.Type_Of_Report_Type.Single_SSR;
break;
case 3:
MyI002UserData.Type_Of_Report = CAT48I020Types.Type_Of_Report_Type.SSR_PSR_Detection;
break;
case 4:
MyI002UserData.Type_Of_Report = CAT48I020Types.Type_Of_Report_Type.Single_Mode_S_All_Call;
break;
case 5:
MyI002UserData.Type_Of_Report = CAT48I020Types.Type_Of_Report_Type.Single_Mode_S_Roll_Call;
break;
case 6:
MyI002UserData.Type_Of_Report = CAT48I020Types.Type_Of_Report_Type.Mode_S_All_Call_PSR;
break;
case 7:
MyI002UserData.Type_Of_Report = CAT48I020Types.Type_Of_Report_Type.Mode_S_Roll_Call_PSR;
break;
// Handle unsupported data/categories
default:
break;
}
if (BO.DWord[CAT48I020Types.Word1_SIM_Index] == true)
MyI002UserData.Simulated_Or_Actual = CAT48I020Types.Simulated_Or_Actual_Type.Simulated;
else
MyI002UserData.Simulated_Or_Actual = CAT48I020Types.Simulated_Or_Actual_Type.Actual;
if (BO.DWord[CAT48I020Types.Word1_RDP_Index] == true)
MyI002UserData.RDP_Chain = CAT48I020Types.RDP_Chain_Type.RDP_2;
else
MyI002UserData.RDP_Chain = CAT48I020Types.RDP_Chain_Type.RDP_1;
if (BO.DWord[CAT48I020Types.Word1_SPI_Index] == true)
MyI002UserData.Special_Position_Ind = CAT48I020Types.Special_Position_Ind_Type.SPI;
else
MyI002UserData.Special_Position_Ind = CAT48I020Types.Special_Position_Ind_Type.NO_SPI;
if (BO.DWord[CAT48I020Types.Word1_FFT_Index] == true)
MyI002UserData.Data_From_FFT = CAT48I020Types.Data_From_FFT_Type.From_FFT;
else
MyI002UserData.Data_From_FFT = CAT48I020Types.Data_From_FFT_Type.Not_from_FFT;
///////////////////////////////////////////////////////////////////////////////////////////////////
//
if (BO.DWord[CAT48I020Types.Word1_FX_Index] == false)
MyI002UserData.Next_Extension_1 = CAT48I020Types.Next_Extension_Type.No;
else
{
// OK we have a filed extension, so lets first move the data buffer to the next
// octet
CAT48.CurrentDataBufferOctalIndex = CAT48.CurrentDataBufferOctalIndex + 1;
//Extract the next octet
BO.DWord[Bit_Ops.Bits0_7_Of_DWord] = Data[CAT48.CurrentDataBufferOctalIndex];
if (BO.DWord[CAT48I020Types.Word2_TST_Index] == true)
MyI002UserData.Test_Target_Indicator = CAT48I020Types.Test_Target_Indicator_Type.Test_Target_Indicator;
else
MyI002UserData.Test_Target_Indicator = CAT48I020Types.Test_Target_Indicator_Type.Real_Target_Indicator;
if (BO.DWord[CAT48I020Types.Word2_MI_Index] == true)
MyI002UserData.Military_Emergency = CAT48I020Types.Military_Emergency_Type.Unknown_Data;
else
MyI002UserData.Military_Emergency = CAT48I020Types.Military_Emergency_Type.Unknown_Data;
if (BO.DWord[CAT48I020Types.Word2_ME_Index] == true)
MyI002UserData.Military_Identification = CAT48I020Types.Military_Identification_Type.Unknown_Data;
else
MyI002UserData.Military_Identification = CAT48I020Types.Military_Identification_Type.Unknown_Data;
if ((BO.DWord[CAT48I020Types.Word2_FOE_FRI_Start_Index] == true) && (BO.DWord[CAT48I020Types.Word2_FOE_FRI_End_Index] == true))
{
MyI002UserData.FOE_or_FRI = CAT48I020Types.FOE_or_FRI_Type.No_Replay;
}
else if (BO.DWord[CAT48I020Types.Word2_FOE_FRI_Start_Index] == true)
{
MyI002UserData.FOE_or_FRI = CAT48I020Types.FOE_or_FRI_Type.Frendly_Target;
}
else if (BO.DWord[CAT48I020Types.Word2_FOE_FRI_End_Index] == true)
{
MyI002UserData.FOE_or_FRI = CAT48I020Types.FOE_or_FRI_Type.Unknown_Target;
}
else
MyI002UserData.FOE_or_FRI = CAT48I020Types.FOE_or_FRI_Type.No_Mode_4;
}
//////////////////////////////////////////////////////////////////////////////////
// Now assign it to the generic list
CAT48.I048DataItems[CAT48.ItemIDToIndex("020")].value = MyI002UserData;
//////////////////////////////////////////////////////////////////////////////////
}
}