Glovebox.IoT.Devices.Sensors.BMP180.GetPressure C# (CSharp) 메소드

GetPressure() 개인적인 메소드

private GetPressure ( ) : double
리턴 double
        double GetPressure()
        {
            lock (pressureLock)
            {
                Initialise();

                int ut = 0, up = 0, compp = 0;
                int x1, x2, b5, b6, x3, b3, p;
                uint b4, b7;

                /* Get the raw pressure and temperature values */
                ut = readRawTemperature().Result;
                up = readRawPressure().Result;

                /* Temperature compensation */
                b5 = computeB5(ut);

                /* Pressure compensation */
                b6 = b5 - 4000;
                x1 = (_bmp085_coeffs.b2 * ((b6 * b6) >> 12)) >> 11;
                x2 = (_bmp085_coeffs.ac2 * b6) >> 11;
                x3 = x1 + x2;
                b3 = (((((int)_bmp085_coeffs.ac1) * 4 + x3) << (byte)_bmp085Mode) + 2) >> 2;
                x1 = (_bmp085_coeffs.ac3 * b6) >> 13;
                x2 = (_bmp085_coeffs.b1 * ((b6 * b6) >> 12)) >> 16;
                x3 = ((x1 + x2) + 2) >> 2;
                b4 = (_bmp085_coeffs.ac4 * (uint)(x3 + 32768)) >> 15;
                b7 = ((uint)(up - b3) * (uint)(50000 >> (byte)_bmp085Mode));

                if (b7 < 0x80000000)
                {
                    p = (int)((b7 << 1) / b4);
                }
                else
                {
                    p = (int)((b7 / b4) << 1);
                }

                x1 = (p >> 8) * (p >> 8);
                x1 = (x1 * 3038) >> 16;
                x2 = (-7357 * p) >> 16;
                compp = p + ((x1 + x2 + 3791) >> 4);

                /* Assign compensated pressure value */
                return compp;
            }
        }