AsterixDisplayAnalyser.CAT48I090UserData.DecodeFlightLevel C# (CSharp) Метод

DecodeFlightLevel() статический приватный Метод

static private DecodeFlightLevel ( Bit_Ops BO_In ) : double
BO_In Bit_Ops
Результат double
        static double DecodeFlightLevel(Bit_Ops BO_In)
        {
            double Result = 0.0;

            // First check if this is a negative altitude.
            // and then handle it properly
            if (BO_In.DWord[Bit_Ops.Bit13] == true)
            {
                BO_In.DWord[Bit_Ops.Bit0] = !BO_In.DWord[Bit_Ops.Bit0];
                BO_In.DWord[Bit_Ops.Bit1] = !BO_In.DWord[Bit_Ops.Bit1];
                BO_In.DWord[Bit_Ops.Bit2] = !BO_In.DWord[Bit_Ops.Bit2];
                BO_In.DWord[Bit_Ops.Bit3] = !BO_In.DWord[Bit_Ops.Bit3];
                BO_In.DWord[Bit_Ops.Bit4] = !BO_In.DWord[Bit_Ops.Bit4];
                BO_In.DWord[Bit_Ops.Bit5] = !BO_In.DWord[Bit_Ops.Bit5];
                BO_In.DWord[Bit_Ops.Bit6] = !BO_In.DWord[Bit_Ops.Bit6];
                BO_In.DWord[Bit_Ops.Bit7] = !BO_In.DWord[Bit_Ops.Bit7];
                BO_In.DWord[Bit_Ops.Bit8] = !BO_In.DWord[Bit_Ops.Bit8];
                BO_In.DWord[Bit_Ops.Bit9] = !BO_In.DWord[Bit_Ops.Bit9];
                BO_In.DWord[Bit_Ops.Bit10] = !BO_In.DWord[Bit_Ops.Bit10];
                BO_In.DWord[Bit_Ops.Bit11] = !BO_In.DWord[Bit_Ops.Bit11];
                BO_In.DWord[Bit_Ops.Bit12] = !BO_In.DWord[Bit_Ops.Bit12];
                BO_In.DWord[Bit_Ops.Bit13] = false;
                BO_In.DWord[Bit_Ops.Bit14] = false;
                BO_In.DWord[Bit_Ops.Bit15] = false;

                BO_In.DWord[Bit_Ops.Bits0_15_Of_DWord] = BO_In.DWord[Bit_Ops.Bits0_15_Of_DWord] + 1;

                if (BO_In.DWord[Bit_Ops.Bit0] == true)
                    Result = Result + 0.25;
                if (BO_In.DWord[Bit_Ops.Bit1] == true)
                    Result = Result + 0.50;
                if (BO_In.DWord[Bit_Ops.Bit2] == true)
                    Result = Result + 1.00;
                if (BO_In.DWord[Bit_Ops.Bit3] == true)
                    Result = Result + 2.00;
                if (BO_In.DWord[Bit_Ops.Bit4] == true)
                    Result = Result + 4.00;
                if (BO_In.DWord[Bit_Ops.Bit5] == true)
                    Result = Result + 8.00;
                if (BO_In.DWord[Bit_Ops.Bit6] == true)
                    Result = Result + 16.00;
                if (BO_In.DWord[Bit_Ops.Bit7] == true)
                    Result = Result + 32.00;
                if (BO_In.DWord[Bit_Ops.Bit8] == true)
                    Result = Result + 64.00;
                if (BO_In.DWord[Bit_Ops.Bit9] == true)
                    Result = Result + 128.00;
                if (BO_In.DWord[Bit_Ops.Bit10] == true)
                    Result = Result + 256.00;
                if (BO_In.DWord[Bit_Ops.Bit11] == true)
                    Result = Result + 512.00;
                if (BO_In.DWord[Bit_Ops.Bit12] == true)
                    Result = Result + 1024.00;

                Result = -Result;
            }
            else
            { // A positive value

                if (BO_In.DWord[Bit_Ops.Bit0] == true)
                    Result = Result + 0.25;
                if (BO_In.DWord[Bit_Ops.Bit1] == true)
                    Result = Result + 0.50;
                if (BO_In.DWord[Bit_Ops.Bit2] == true)
                    Result = Result + 1.00;
                if (BO_In.DWord[Bit_Ops.Bit3] == true)
                    Result = Result + 2.00;
                if (BO_In.DWord[Bit_Ops.Bit4] == true)
                    Result = Result + 4.00;
                if (BO_In.DWord[Bit_Ops.Bit5] == true)
                    Result = Result + 8.00;
                if (BO_In.DWord[Bit_Ops.Bit6] == true)
                    Result = Result + 16.00;
                if (BO_In.DWord[Bit_Ops.Bit7] == true)
                    Result = Result + 32.00;
                if (BO_In.DWord[Bit_Ops.Bit8] == true)
                    Result = Result + 64.00;
                if (BO_In.DWord[Bit_Ops.Bit9] == true)
                    Result = Result + 128.00;
                if (BO_In.DWord[Bit_Ops.Bit10] == true)
                    Result = Result + 256.00;
                if (BO_In.DWord[Bit_Ops.Bit11] == true)
                    Result = Result + 512.00;
                if (BO_In.DWord[Bit_Ops.Bit12] == true)
                    Result = Result + 1024.00;
            }

            return Result;
        }