VAGSuite.ctrlAirmassResult.CheckAgainstAirmassLimiters C# (CSharp) Метод

CheckAgainstAirmassLimiters() приватный Метод

private CheckAgainstAirmassLimiters ( SymbolCollection symbols, string filename, int rpm, int requestedairmass, bool autogearbox, limitType &AirmassLimiter ) : int
symbols SymbolCollection
filename string
rpm int
requestedairmass int
autogearbox bool
AirmassLimiter limitType
Результат int
        private int CheckAgainstAirmassLimiters(SymbolCollection symbols, string filename, int rpm, int requestedairmass, bool autogearbox, ref limitType AirmassLimiter)
        {
            //AirmassLimiter = limitType.None;
            //Y axis = BstKnkCal.n_EngYSP needed for interpolation (16)
            //X axis = BstKnkCal.OffsetXSP needed for length (16)
            // check against BstKnkCal.MaxAirmass
            int cols = GetSymbolLength(symbols, "BstKnkCal.OffsetXSP") / 2;
            int rows = GetSymbolLength(symbols, "BstKnkCal.n_EngYSP") / 2;
            // only the right-most column (no knock)
            int[] bstknk = readIntdatafromfile(filename, (int)GetSymbolAddress(symbols, "BstKnkCal.MaxAirmass"), GetSymbolLength(symbols, "BstKnkCal.MaxAirmass"));
            if (autogearbox)
            {
                bstknk = readIntdatafromfile(filename, (int)GetSymbolAddress(symbols, "BstKnkCal.MaxAirmassAu"), GetSymbolLength(symbols, "BstKnkCal.MaxAirmassAu"));
            }
            int[] xaxis = readIntdatafromfile(filename, (int)GetSymbolAddress(symbols, "BstKnkCal.OffsetXSP"), GetSymbolLength(symbols, "BstKnkCal.OffsetXSP"));
            for (int a = 0; a < xaxis.Length; a++)
            {
                int val = (int)xaxis.GetValue(a);
                if (val > 32000) val = -(65536 - val);
                xaxis.SetValue(val, a);
            }
            int[] yaxis = readIntdatafromfile(filename, (int)GetSymbolAddress(symbols, "BstKnkCal.n_EngYSP"), GetSymbolLength(symbols, "BstKnkCal.n_EngYSP"));
            int airmasslimit = Convert.ToInt32(GetInterpolatedTableValue(bstknk, xaxis, yaxis, rpm, 0));
            if (airmasslimit < requestedairmass)
            {
                requestedairmass = airmasslimit;
                AirmassLimiter = limitType.AirmassLimiter;
                //Console.WriteLine("Reduced airmass because of BstKnkCal.MaxAirmass: " + requestedairmass.ToString() + " rpm: " + rpm.ToString());
            }
            return requestedairmass;
        }