BMTuneSource/Class12_afrT.cs

1055 lines
44 KiB
C#

//using Dal;
using Data;
using System;
using System.IO;
//using System.Runtime.Serialization;
//using System.Runtime.Serialization.Formatters.Binary;
using System.Windows.Forms;
internal class Class12_afrT
{
private bool[,] bool_0;
private bool[,] bool_1;
private bool[,] bool_2;
private bool[,] bool_3;
private byte[,,] byte_0;
/*public static byte[,] byte_0_DemonA1 = new byte[26, 20];
public static byte[,] byte_0_DemonA2 = new byte[26, 20];
public static byte[,] byte_0_DemonA3 = new byte[26, 20];
public static byte[,] byte_0_DemonA4 = new byte[26, 20];
public static byte[,] byte_0_DemonA5 = new byte[26, 20];
public static byte[,] byte_0_Analog1 = new byte[26, 20];
public static byte[,] byte_0_Analog2 = new byte[26, 20];
public static byte[,] byte_0_Analog3 = new byte[26, 20];
public static float[,] byte_0_IAT = new float[26, 20];
public static float[,] byte_0_ECT = new float[26, 20];
public static float[,] byte_0_Fign = new float[26, 20];
public static float[,] byte_0_Fuelusage = new float[26, 20];
public static float[,] byte_0_inj = new float[26, 20];
public static float[,] byte_0_bat = new float[26, 20];
public static float[,] byte_0_D14 = new float[26, 20];
public static byte[,] byte_0_VTS = new byte[26, 20];
public static float[,] byte_0_BSTDC = new float[26, 20];
public static float[,] byte_0_TPS = new float[26, 20];
public static float FuelUsage = 0f;
private long[,] byte_0_DynoWS;
private long[,] byte_0_DynoHP;
private long[,] byte_0_DynoNM;
private long[,] byte_0_AUX1;
private long[,] byte_0_AUX2;
private long[,] byte_0_AUX3;
private long[,] byte_0_THC;*/
private byte[,] byte_0_Analog1;
private byte[,] byte_0_Analog2;
private byte[,] byte_0_Analog3;
private byte[,,] byte_1;
private byte[,,] byte_2;
private byte[,,] byte_3;
private Class10_settings class10_settings_0;
private Class17 class17_0;
private Class18 class18_0;
/*private float[,,] float_0;
private float[,,] float_1;
private float[,,] float_10;
private float[,,] float_11;
private float[,,] float_2;
private float[,,] float_3;
private float[,,] float_4;
private float[,,] float_5;
private float[,,] float_6;
private float[,,] float_7;
private float[,,] float_8;
private float[,,] float_9;*/
private int int_0;
private int int_1;
/*private int int_2;
private int int_3;
private int int_4;*/
private Struct17 struct17_0;
private TunerAfrGrid tunerAfrGrid_0;
private string ThPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\BMTune\Target_AFR.txt";
private DateTime LastCheck = DateTime.Now;
public Class12_afrT()
{
}
internal void method_0(ref Class18 class18_1, ref Class10_settings class10_1, ref Class17 class17_1)
{
this.class10_settings_0 = class10_1;
this.class10_settings_0.delegate13_0 += new Class10_settings.Delegate13(this.method_1);
this.class18_0 = class18_1;
this.class18_0.delegate58_0 += new Class18.Delegate58(this.method_19);
this.class17_0 = class17_1;
this.class17_0.delegate47_0 += new Class17.Delegate47(this.method_21);
this.class17_0.delegate53_0 += new Class17.Delegate53(this.method_2);
this.class17_0.delegate54_0 += new Class17.Delegate54(this.method_21_Analog);
//this.class17_0.delegate48_0 += new Class17_dtl.Delegate48(this.method_21_Analog);
if (!File.Exists(ThPath))
{
this.tunerAfrGrid_0 = new TunerAfrGrid();
this.method_9(false);
this.method_9(true);
method_Save();
}
}
private void method_1(bool bool_4)
{
this.method_9(bool_4);
method_Save();
}
public bool method_10(int int_5, int int_6)
{
if (!this.class18_0.method_39())
{
if (!this.class18_0.method_36())
{
return this.tunerAfrGrid_0.fuel_low_1_Lock[int_5, int_6];
}
return this.tunerAfrGrid_0.fuel_high_1_Lock[int_5, int_6];
}
if (!this.class18_0.method_36())
{
return this.tunerAfrGrid_0.fuel_low_2_Lock[int_5, int_6];
}
return this.tunerAfrGrid_0.fuel_high_2_Lock[int_5, int_6];
}
private bool IsAnalogOverlay()
{
bool IsAnalog = false;
if (this.class18_0.method_8() == TableOverlay.analog1Reading) IsAnalog = true;
if (this.class18_0.method_8() == TableOverlay.analog2Reading) IsAnalog = true;
if (this.class18_0.method_8() == TableOverlay.analog3Reading) IsAnalog = true;
return IsAnalog;
}
public object method_11(int int_5, int int_6) //Get afr at (row, column)
{
if (!IsAnalogOverlay())
{
if (this.method_10(int_5, int_6))
{
return "-";
}
}
switch (this.class18_0.method_8())
{
case TableOverlay.none:
return null;
case TableOverlay.afTarget:
return this.method_12(int_5, int_6);
case TableOverlay.afReading:
return this.method_17(int_5, int_6);
case TableOverlay.afDiff:
if (this.method_16(int_5, int_6) == null) return null;
return (((double) this.method_16(int_5, int_6)) * -1.0);
case TableOverlay.analog1Reading:
return this.method_17_Analog(int_5, int_6);
case TableOverlay.analog2Reading:
return this.method_17_Analog(int_5, int_6);
case TableOverlay.analog3Reading:
return this.method_17_Analog(int_5, int_6);
}
return null;
}
public double method_12(int int_5, int int_6)
{
if (!this.class18_0.method_39())
{
if (!this.class18_0.method_36())
{
if (this.class10_settings_0.airFuelUnits_0 == AirFuelUnits.afr)
{
return this.class18_0.method_241(this.tunerAfrGrid_0.targetAfr_lo_1[int_5, int_6]);
}
return this.tunerAfrGrid_0.targetAfr_lo_1[int_5, int_6];
}
if (this.class10_settings_0.airFuelUnits_0 == AirFuelUnits.afr)
{
return this.class18_0.method_241(this.tunerAfrGrid_0.targetAfr_hi_1[int_5, int_6]);
}
return this.tunerAfrGrid_0.targetAfr_hi_1[int_5, int_6];
}
if (!this.class18_0.method_36())
{
if (this.class10_settings_0.airFuelUnits_0 == AirFuelUnits.afr)
{
return this.class18_0.method_241(this.tunerAfrGrid_0.targetAfr_lo_2[int_5, int_6]);
}
return this.tunerAfrGrid_0.targetAfr_lo_2[int_5, int_6];
}
if (this.class10_settings_0.airFuelUnits_0 == AirFuelUnits.afr)
{
return this.class18_0.method_241(this.tunerAfrGrid_0.targetAfr_hi_2[int_5, int_6]);
}
return this.tunerAfrGrid_0.targetAfr_hi_2[int_5, int_6];
}
public double method_13(int int_5, int int_6)
{
if (!this.class18_0.method_39())
{
if (!this.class18_0.method_36())
{
return this.tunerAfrGrid_0.targetAfr_lo_1[int_5, int_6];
}
return this.tunerAfrGrid_0.targetAfr_hi_1[int_5, int_6];
}
if (!this.class18_0.method_36())
{
return this.tunerAfrGrid_0.targetAfr_lo_2[int_5, int_6];
}
return this.tunerAfrGrid_0.targetAfr_hi_2[int_5, int_6];
}
public void method_14(int int_5, int int_6, double double_0) //set value
{
if (this.class10_settings_0.airFuelUnits_0 == AirFuelUnits.afr)
{
double_0 = this.class18_0.method_240(double_0);
}
if (!this.class18_0.method_39())
{
if (!this.class18_0.method_36())
{
this.tunerAfrGrid_0.targetAfr_lo_1[int_5, int_6] = double_0;
}
else
{
this.tunerAfrGrid_0.targetAfr_hi_1[int_5, int_6] = double_0;
}
}
else if (!this.class18_0.method_36())
{
this.tunerAfrGrid_0.targetAfr_lo_2[int_5, int_6] = double_0;
}
else
{
this.tunerAfrGrid_0.targetAfr_hi_2[int_5, int_6] = double_0;
}
method_Save();
}
public void method_15(int int_5, int int_6, double double_0) //set value
{
if (!this.class18_0.method_39())
{
if (!this.class18_0.method_36())
{
this.tunerAfrGrid_0.targetAfr_lo_1[int_5, int_6] = double_0;
}
else
{
this.tunerAfrGrid_0.targetAfr_hi_1[int_5, int_6] = double_0;
}
}
else if (!this.class18_0.method_36())
{
this.tunerAfrGrid_0.targetAfr_lo_2[int_5, int_6] = double_0;
}
else
{
this.tunerAfrGrid_0.targetAfr_hi_2[int_5, int_6] = double_0;
}
method_Save();
}
public object method_16(int int_5, int int_6) //used for AF - difference
{
object obj2 = this.method_17(int_5, int_6);
if (obj2 == null)
{
return null;
}
return (((this.method_12(int_5, int_6) / ((double) obj2)) * 100.0) - 100.0);
}
public double method_17_Analog(int int_5, int int_6) //get analog value at
{
byte num = 0;
if (this.class18_0.method_8() == TableOverlay.analog1Reading)
{
num = this.method_23_Analog(this.byte_0_Analog1, int_5, int_6);
if (num == 0) return num;
return this.class18_0.method_201(AnalogInputs.analog1, num);
}
if (this.class18_0.method_8() == TableOverlay.analog2Reading)
{
num = this.method_23_Analog(this.byte_0_Analog2, int_5, int_6);
if (num == 0) return num;
return this.class18_0.method_201(AnalogInputs.analog2, num);
}
if (this.class18_0.method_8() == TableOverlay.analog3Reading)
{
num = this.method_23_Analog(this.byte_0_Analog3, int_5, int_6);
if (num == 0) return num;
return this.class18_0.method_201(AnalogInputs.analog3, num);
}
return 0;
}
public object method_17(int int_5, int int_6) //Get fuel value at (row, column)
{
byte num = 0;
if (!this.class18_0.method_39())
{
if (!this.class18_0.method_36())
{
num = this.method_23(this.byte_0, int_5, int_6);
}
else
{
num = this.method_23(this.byte_1, int_5, int_6);
}
}
else if (!this.class18_0.method_36())
{
num = this.method_23(this.byte_2, int_5, int_6);
}
else
{
num = this.method_23(this.byte_3, int_5, int_6);
}
if (num == 0)
{
return null;
}
return this.class18_0.method_200(num);
}
public bool method_18(int int_5, int int_6)
{
if (!this.class18_0.method_39())
{
if (!this.class18_0.method_36())
{
return this.bool_0[int_5, int_6];
}
return this.bool_1[int_5, int_6];
}
if (!this.class18_0.method_36())
{
return this.bool_2[int_5, int_6];
}
return this.bool_3[int_5, int_6];
}
public void method_Save()
{
if (File.Exists(ThPath)) File.Delete(ThPath);
if (this.tunerAfrGrid_0 != null)
{
string SaveStr = "";
for (int i = 0; i < this.class18_0.method_33(); i++)
{
for (int j = 0; j < this.class18_0.method_32_GetRPM_RowsNumber(); j++)
{
SaveStr += "Column=" + i + ";Row=" + j + ";targetAfr_lo_1=" + this.tunerAfrGrid_0.targetAfr_lo_1[i, j].ToString() + Environment.NewLine;
SaveStr += "Column=" + i + ";Row=" + j + ";targetAfr_hi_1=" + this.tunerAfrGrid_0.targetAfr_hi_1[i, j].ToString() + Environment.NewLine;
SaveStr += "Column=" + i + ";Row=" + j + ";targetAfr_lo_2=" + this.tunerAfrGrid_0.targetAfr_lo_2[i, j].ToString() + Environment.NewLine;
SaveStr += "Column=" + i + ";Row=" + j + ";targetAfr_hi_2=" + this.tunerAfrGrid_0.targetAfr_hi_2[i, j].ToString() + Environment.NewLine;
SaveStr += "Column=" + i + ";Row=" + j + ";fuel_low_1_Lock=" + this.tunerAfrGrid_0.fuel_low_1_Lock[i, j].ToString() + Environment.NewLine;
SaveStr += "Column=" + i + ";Row=" + j + ";fuel_high_1_Lock=" + this.tunerAfrGrid_0.fuel_high_1_Lock[i, j].ToString() + Environment.NewLine;
SaveStr += "Column=" + i + ";Row=" + j + ";fuel_low_2_Lock=" + this.tunerAfrGrid_0.fuel_low_2_Lock[i, j].ToString() + Environment.NewLine;
SaveStr += "Column=" + i + ";Row=" + j + ";fuel_high_2_Lock=" + this.tunerAfrGrid_0.fuel_high_2_Lock[i, j].ToString() + Environment.NewLine;
}
}
StreamWriter writer = new StreamWriter(ThPath, false);
writer.Write(SaveStr);
writer.Close();
writer.Dispose();
writer = null;
}
}
private void method_19()
{
if (this.class18_0.method_30_HasFileLoadedInBMTune())
{
if (!File.Exists(ThPath))
{
this.tunerAfrGrid_0 = new TunerAfrGrid();
this.method_9(false);
this.method_9(true);
method_Save();
}
else
{
try
{
bool DoneAnything = false;
string[] AllLines = File.ReadAllLines(ThPath);
if (AllLines.Length > 0)
{
this.tunerAfrGrid_0 = new TunerAfrGrid();
this.tunerAfrGrid_0.targetAfr_lo_1 = new double[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.tunerAfrGrid_0.targetAfr_hi_1 = new double[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.tunerAfrGrid_0.targetAfr_lo_2 = new double[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.tunerAfrGrid_0.targetAfr_hi_2 = new double[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.tunerAfrGrid_0.fuel_low_1_Lock = new bool[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.tunerAfrGrid_0.fuel_high_1_Lock = new bool[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.tunerAfrGrid_0.fuel_low_2_Lock = new bool[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.tunerAfrGrid_0.fuel_high_2_Lock = new bool[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
for (int i = 0; i < AllLines.Length; i++)
{
if (AllLines[i].Contains("Row") && AllLines[i].Contains("Column"))
{
DoneAnything = true;
string[] SplitCMD = AllLines[i].Split(';');
string[] SplitColumnEnc = SplitCMD[0].Split('=');
string[] SplitRowEnc = SplitCMD[1].Split('=');
string[] SplitCmdEnc = SplitCMD[2].Split('=');
int ThisColumn = int.Parse(SplitColumnEnc[1]);
int ThisRow = int.Parse(SplitRowEnc[1]);
if (SplitCmdEnc[0].Contains("targetAfr_lo_1")) this.tunerAfrGrid_0.targetAfr_lo_1[ThisColumn, ThisRow] = double.Parse(SplitCmdEnc[1]);
if (SplitCmdEnc[0].Contains("targetAfr_hi_1")) this.tunerAfrGrid_0.targetAfr_hi_1[ThisColumn, ThisRow] = double.Parse(SplitCmdEnc[1]);
if (SplitCmdEnc[0].Contains("targetAfr_lo_2")) this.tunerAfrGrid_0.targetAfr_lo_2[ThisColumn, ThisRow] = double.Parse(SplitCmdEnc[1]);
if (SplitCmdEnc[0].Contains("targetAfr_hi_2")) this.tunerAfrGrid_0.targetAfr_hi_2[ThisColumn, ThisRow] = double.Parse(SplitCmdEnc[1]);
if (SplitCmdEnc[0].Contains("fuel_low_1_Lock")) this.tunerAfrGrid_0.fuel_low_1_Lock[ThisColumn, ThisRow] = bool.Parse(SplitCmdEnc[1]);
if (SplitCmdEnc[0].Contains("fuel_high_1_Lock")) this.tunerAfrGrid_0.fuel_high_1_Lock[ThisColumn, ThisRow] = bool.Parse(SplitCmdEnc[1]);
if (SplitCmdEnc[0].Contains("fuel_low_2_Lock")) this.tunerAfrGrid_0.fuel_low_2_Lock[ThisColumn, ThisRow] = bool.Parse(SplitCmdEnc[1]);
if (SplitCmdEnc[0].Contains("fuel_high_2_Lock")) this.tunerAfrGrid_0.fuel_high_2_Lock[ThisColumn, ThisRow] = bool.Parse(SplitCmdEnc[1]);
}
}
}
if (!DoneAnything)
{
this.tunerAfrGrid_0 = new TunerAfrGrid();
this.method_9(false);
this.method_9(true);
method_Save();
}
//#######################################
/*serializationStream = new FileStream(ThPath, FileMode.Open, FileAccess.Read, FileShare.Read);
if (this.tunerAfrGrid_0 == null)
{
this.tunerAfrGrid_0 = (TunerAfrGrid) formatter.Deserialize(serializationStream);
if (((this.tunerAfrGrid_0.targetAfr_hi_1 == null) || (this.tunerAfrGrid_0.targetAfr_hi_2 == null)) || ((this.tunerAfrGrid_0.targetAfr_lo_1 == null) || (this.tunerAfrGrid_0.targetAfr_lo_2 == null)))
{
if (serializationStream != null)
{
serializationStream.Close();
serializationStream.Dispose();
serializationStream = null;
}
formatter = null;
this.method_9(false);
this.method_9(true);
}
}*/
}
catch (Exception mess)
{
LogThis("Error while loading AFR Layout:" + Environment.NewLine + "" + mess);
this.tunerAfrGrid_0 = new TunerAfrGrid();
this.method_9(false);
this.method_9(true);
method_Save();
}
}
if (this.byte_0 == null)
{
this.byte_0 = new byte[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber(), this.class10_settings_0.int_36];
this.byte_0_Analog1 = new byte[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.byte_0_Analog2 = new byte[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.byte_0_Analog3 = new byte[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.byte_1 = new byte[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber(), this.class10_settings_0.int_36];
this.bool_0 = new bool[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.bool_1 = new bool[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.byte_2 = new byte[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber(), this.class10_settings_0.int_36];
this.byte_3 = new byte[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber(), this.class10_settings_0.int_36];
this.bool_2 = new bool[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.bool_3 = new bool[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
}
else if (((this.byte_0.GetUpperBound(0) != (this.class18_0.method_33() - 1)) || (this.byte_0.GetUpperBound(1) != (this.class18_0.method_32_GetRPM_RowsNumber() - 1))) || (this.byte_0.GetUpperBound(2) != (this.class10_settings_0.int_36 - 1)))
{
this.byte_0 = new byte[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber(), this.class10_settings_0.int_36];
this.byte_0_Analog1 = new byte[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.byte_0_Analog2 = new byte[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.byte_0_Analog3 = new byte[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.byte_1 = new byte[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber(), this.class10_settings_0.int_36];
this.bool_0 = new bool[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.bool_1 = new bool[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.byte_2 = new byte[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber(), this.class10_settings_0.int_36];
this.byte_3 = new byte[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber(), this.class10_settings_0.int_36];
this.bool_2 = new bool[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.bool_3 = new bool[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
}
this.method_3();
this.method_5();
}
}
private void LogThis(string string_8)
{
this.class17_0.frmMain_0.LogThis("AFR Target - " + string_8);
}
private void method_2(long long_0, string string_0)
{
if (long_0 == 0L)
{
this.method_3();
this.method_5();
}
}
private void method_20(string string_0, string string_1, string string_2)
{
}
private void method_21_Analog(Struct12 struct12_1)
{
if (!this.class10_settings_0.DatalogThreadEnabled || (this.class10_settings_0.DatalogThreadEnabled && (DateTime.Now - LastCheck).TotalMilliseconds >= this.class10_settings_0.int_ActiveDatalog[0]))
{
LastCheck = DateTime.Now;
if (!this.class10_settings_0.DatalogThreadEnabled || (this.class10_settings_0.DatalogThreadEnabled && this.class10_settings_0.bool_ActiveDatalog[0]))
{
this.byte_0_Analog1[struct12_1.struct24_0.int_1, struct12_1.struct24_0.int_0] = struct12_1.byte_40;
this.byte_0_Analog2[struct12_1.struct24_0.int_1, struct12_1.struct24_0.int_0] = struct12_1.byte_41;
this.byte_0_Analog3[struct12_1.struct24_0.int_1, struct12_1.struct24_0.int_0] = struct12_1.byte_42;
}
}
}
private void method_21(Struct17 struct17_1)
{
if (this.method_22(struct17_1))
{
this.method_8(struct17_1);
if (struct17_1 != this.struct17_0)
{
this.int_0 = 0;
this.struct17_0 = struct17_1;
}
else if (this.int_0 == this.class10_settings_0.int_37)
{
this.int_1++;
if (this.class10_settings_0.bool_47)
{
if (this.struct17_0.byte_0 != struct17_1.byte_0)
{
this.method_27(struct17_1); //set afr bytes
}
this.struct17_0 = struct17_1;
this.int_1 = 0;
}
else
{
this.method_27(struct17_1); //set afr bytes
this.struct17_0 = struct17_1;
this.int_1 = 0;
}
}
else
{
this.int_0++;
this.int_1 = 0;
this.struct17_0 = struct17_1;
}
}
}
private bool method_22(Struct17 struct17_1)
{
if (struct17_1.bool_2)
{
return false;
}
int num = this.class18_0.method_218(struct17_1.long_1);
int num2 = this.class18_0.method_206(struct17_1.byte_2);
this.class18_0.method_198(struct17_1.byte_1);
this.class18_0.method_191(struct17_1.byte_3);
this.class18_0.method_191(struct17_1.byte_4);
double num3 = this.class18_0.method_200(struct17_1.byte_0);
if (this.class10_settings_0.airFuelUnits_0 == AirFuelUnits.afr)
{
num3 = this.class18_0.method_240(num3);
}
bool flag = this.class10_settings_0.bool_46[struct17_1.byte_5];
//return true;
if (this.class10_settings_0.OverlayConditionsDisabled) return true;
else return ((((((num >= this.class10_settings_0.int_28) && (num <= this.class10_settings_0.int_29)) && ((num2 >= this.class10_settings_0.int_30) && (num2 <= this.class10_settings_0.int_31))) && (((struct17_1.byte_1 >= this.class10_settings_0.int_26) && (struct17_1.byte_1 <= this.class10_settings_0.int_27)) && ((struct17_1.byte_3 <= this.class10_settings_0.int_32) && (struct17_1.byte_3 >= this.class10_settings_0.int_33)))) && (((struct17_1.byte_4 <= this.class10_settings_0.int_34) && (struct17_1.byte_4 >= this.class10_settings_0.int_35)) && ((num3 >= this.class10_settings_0.double_7) && (num3 <= this.class10_settings_0.double_8)))) && flag);
}
private byte method_23(byte[,,] byte_4, int int_5, int int_6)
{
int num = 0;
int num2 = 0;
for (int i = 0; i < this.class10_settings_0.int_36; i++)
{
if (byte_4[int_5, int_6, i] != 0)
{
num2 += byte_4[int_5, int_6, i];
num++;
}
}
if (num == 0)
{
return 0;
}
return (byte) Math.Round((double) (((float) num2) / ((float) num)), 0);
}
private byte method_23_Analog(byte[,] byte_4, int int_5, int int_6)
{
byte RByte = 0;
try
{
RByte = byte_4[int_5, int_6];
}
catch { }
return RByte;
}
private byte method_24(byte[,,] byte_4, int int_5, int int_6)
{
int num = this.method_23(byte_4, int_5, int_6);
int num2 = 0;
int num3 = 0;
int num4 = 0;
int num5 = 0;
for (int i = 0; i < this.class10_settings_0.int_36; i++)
{
if (byte_4[int_5, int_6, i] != 0)
{
num2 = byte_4[int_5, int_6, i] - num;
num3 = Math.Abs(num2);
num4 += num3;
num5++;
}
}
double d = ((float) num4) / ((float) (num5 - 1));
return (byte) Math.Round(d, 0);
}
private void method_25(byte[,,] byte_4, int int_5, int int_6)
{
for (int i = 0; i < byte_4.GetUpperBound(2); i++)
{
byte_4[int_5, int_6, i] = byte_4[int_5, int_6, i + 1];
}
byte_4[int_5, int_6, byte_4.GetUpperBound(2)] = 0;
}
private int method_26(byte[,,] byte_4, int int_5, int int_6)
{
int num = 0;
for (int i = 0; i < this.class10_settings_0.int_36; i++)
{
if (byte_4[int_5, int_6, i] != 0)
{
num++;
}
}
return num;
}
private void method_27(Struct17 struct17_1)
{
byte[,,] buffer;
bool[,] flagArray;
int num = 0;
byte num2 = 0;
byte num3 = 0;
if (!struct17_1.bool_1)
{
if (!struct17_1.bool_0)
{
buffer = this.byte_0;
flagArray = this.tunerAfrGrid_0.fuel_low_1_Lock;
}
else
{
buffer = this.byte_1;
flagArray = this.tunerAfrGrid_0.fuel_high_1_Lock;
}
}
else if (!struct17_1.bool_0)
{
buffer = this.byte_2;
flagArray = this.tunerAfrGrid_0.fuel_low_2_Lock;
}
else
{
buffer = this.byte_3;
flagArray = this.tunerAfrGrid_0.fuel_high_2_Lock;
}
byte num4 = 0;
if (!flagArray[struct17_1.struct15_0.struct24_0.int_1, struct17_1.struct15_0.struct24_0.int_0])
{
num = this.method_26(buffer, struct17_1.struct15_0.struct24_0.int_1, struct17_1.struct15_0.struct24_0.int_0);
num3 = this.method_23(buffer, struct17_1.struct15_0.struct24_0.int_1, struct17_1.struct15_0.struct24_0.int_0);
if ((num >= this.class10_settings_0.int_41) && this.class10_settings_0.bool_51)
{
num2 = this.method_24(buffer, struct17_1.struct15_0.struct24_0.int_1, struct17_1.struct15_0.struct24_0.int_0);
if ((struct17_1.byte_0 >= (num3 + num2)) || (struct17_1.byte_0 <= (num3 - num2)))
{
goto Label_021E;
}
}
if (num >= (this.class10_settings_0.int_36 - 1))
{
this.method_25(buffer, struct17_1.struct15_0.struct24_0.int_1, struct17_1.struct15_0.struct24_0.int_0);
num--;
}
num4 = struct17_1.byte_0;
if (num3 != 0 && !struct17_1.method_0(struct17_1.struct15_0.struct24_0))
{
num4 = (byte) ((struct17_1.byte_0 * 0.2) + (num3 * 0.8));
}
buffer[struct17_1.struct15_0.struct24_0.int_1, struct17_1.struct15_0.struct24_0.int_0, num] = num4;
}
Label_021E:
if (!flagArray[struct17_1.struct15_0.struct24_1.int_1, struct17_1.struct15_0.struct24_1.int_0])
{
num = this.method_26(buffer, struct17_1.struct15_0.struct24_1.int_1, struct17_1.struct15_0.struct24_1.int_0);
num3 = this.method_23(buffer, struct17_1.struct15_0.struct24_1.int_1, struct17_1.struct15_0.struct24_1.int_0);
if ((num >= this.class10_settings_0.int_41) && this.class10_settings_0.bool_51)
{
num2 = this.method_24(buffer, struct17_1.struct15_0.struct24_1.int_1, struct17_1.struct15_0.struct24_1.int_0);
if ((struct17_1.byte_0 >= (num3 + num2)) || (struct17_1.byte_0 <= (num3 - num2)))
{
goto Label_03BD;
}
}
if (num == (this.class10_settings_0.int_36 - 1))
{
this.method_25(buffer, struct17_1.struct15_0.struct24_1.int_1, struct17_1.struct15_0.struct24_1.int_0);
num--;
}
num4 = struct17_1.byte_0;
if (num3 != 0 && !struct17_1.method_0(struct17_1.struct15_0.struct24_1))
{
num4 = (byte) ((struct17_1.byte_0 * 0.2) + (num3 * 0.8));
}
buffer[struct17_1.struct15_0.struct24_1.int_1, struct17_1.struct15_0.struct24_1.int_0, num] = num4;
}
Label_03BD:
if (!flagArray[struct17_1.struct15_0.struct24_2.int_1, struct17_1.struct15_0.struct24_2.int_0])
{
num = this.method_26(buffer, struct17_1.struct15_0.struct24_2.int_1, struct17_1.struct15_0.struct24_2.int_0);
num3 = this.method_23(buffer, struct17_1.struct15_0.struct24_2.int_1, struct17_1.struct15_0.struct24_2.int_0);
if ((num >= this.class10_settings_0.int_41) && this.class10_settings_0.bool_51)
{
num2 = this.method_24(buffer, struct17_1.struct15_0.struct24_2.int_1, struct17_1.struct15_0.struct24_2.int_0);
if ((struct17_1.byte_0 >= (num3 + num2)) || (struct17_1.byte_0 <= (num3 - num2)))
{
goto Label_055C;
}
}
if (num == (this.class10_settings_0.int_36 - 1))
{
this.method_25(buffer, struct17_1.struct15_0.struct24_2.int_1, struct17_1.struct15_0.struct24_2.int_0);
num--;
}
num4 = struct17_1.byte_0;
if (num3 != 0 && !struct17_1.method_0(struct17_1.struct15_0.struct24_2))
{
num4 = (byte) ((struct17_1.byte_0 * 0.2) + (num3 * 0.8));
}
buffer[struct17_1.struct15_0.struct24_2.int_1, struct17_1.struct15_0.struct24_2.int_0, num] = num4;
}
Label_055C:
if (!flagArray[struct17_1.struct15_0.struct24_3.int_1, struct17_1.struct15_0.struct24_3.int_0])
{
num = this.method_26(buffer, struct17_1.struct15_0.struct24_3.int_1, struct17_1.struct15_0.struct24_3.int_0);
num3 = this.method_23(buffer, struct17_1.struct15_0.struct24_3.int_1, struct17_1.struct15_0.struct24_3.int_0);
if ((num >= this.class10_settings_0.int_41) && this.class10_settings_0.bool_51)
{
num2 = this.method_24(buffer, struct17_1.struct15_0.struct24_3.int_1, struct17_1.struct15_0.struct24_3.int_0);
if ((struct17_1.byte_0 >= (num3 + num2)) || (struct17_1.byte_0 <= (num3 - num2)))
{
goto Label_06FB;
}
}
if (num == (this.class10_settings_0.int_36 - 1))
{
this.method_25(buffer, struct17_1.struct15_0.struct24_3.int_1, struct17_1.struct15_0.struct24_3.int_0);
num--;
}
num4 = struct17_1.byte_0;
if (num3 != 0 && !struct17_1.method_0(struct17_1.struct15_0.struct24_3))
{
num4 = (byte) ((struct17_1.byte_0 * 0.2) + (num3 * 0.8));
}
buffer[struct17_1.struct15_0.struct24_3.int_1, struct17_1.struct15_0.struct24_3.int_0, num] = num4;
}
Label_06FB:
struct17_1.byte_0 = 0;
}
private void method_28(Struct12 struct12_1)
{
}
public void method_3() //clear recordings
{
for (int i = 0; i < this.class18_0.method_33(); i++)
{
for (int j = 0; j < this.class18_0.method_32_GetRPM_RowsNumber(); j++)
{
for (int k = 0; k < this.class10_settings_0.int_36; k++)
{
this.byte_0[i, j, k] = 0;
this.byte_1[i, j, k] = 0;
this.byte_2[i, j, k] = 0;
this.byte_3[i, j, k] = 0;
}
this.byte_0_Analog1[i, j] = 0;
this.byte_0_Analog2[i, j] = 0;
this.byte_0_Analog3[i, j] = 0;
}
}
this.method_5();
this.class18_0.method_53();
}
/*public void method_4_Analog(int int_5, int int_6)
{
this.byte_0_Analog1[int_5, int_6] = 0;
this.byte_0_Analog2[int_5, int_6] = 0;
this.byte_0_Analog3[int_5, int_6] = 0;
}*/
public void method_4(int int_5, int int_6)
{
for (int i = 0; i < this.class10_settings_0.int_36; i++)
{
if (!this.class18_0.method_39())
{
if (!this.class18_0.method_36())
{
this.byte_0[int_5, int_6, i] = 0;
}
else
{
this.byte_1[int_5, int_6, i] = 0;
}
}
else if (!this.class18_0.method_36())
{
this.byte_0[int_5, int_6, i] = 0;
}
else
{
this.byte_1[int_5, int_6, i] = 0;
}
}
this.byte_0_Analog1[int_5, int_6] = 0;
this.byte_0_Analog2[int_5, int_6] = 0;
this.byte_0_Analog3[int_5, int_6] = 0;
}
public void method_5()
{
for (int i = 0; i < this.class18_0.method_33(); i++)
{
for (int j = 0; j < this.class18_0.method_32_GetRPM_RowsNumber(); j++)
{
for (int k = 0; k < this.class10_settings_0.int_36; k++)
{
this.bool_0[i, j] = false;
this.bool_1[i, j] = false;
this.bool_2[i, j] = false;
this.bool_3[i, j] = false;
}
}
}
this.class18_0.method_53();
}
public void method_6(int int_5, int int_6) //filter unaceptable value
{
byte[,,] buffer;
if (!this.class18_0.method_39())
{
if (!this.class18_0.method_36())
{
buffer = this.byte_0;
}
else
{
buffer = this.byte_1;
}
}
else if (!this.class18_0.method_36())
{
buffer = this.byte_2;
}
else
{
buffer = this.byte_3;
}
double num = this.class18_0.method_200(this.method_23(buffer, int_5, int_6));
double num2 = 0.0;
byte num3 = 0;
for (int i = 0; i < this.class10_settings_0.int_36; i++)
{
if (buffer[int_5, int_6, i] != 0)
{
num2 = this.class18_0.method_200(buffer[int_5, int_6, i]);
if (num2 < (num - this.class10_settings_0.double_9))
{
num3 = this.class18_0.method_213(num - this.class10_settings_0.double_9);
buffer[int_5, int_6, i] = num3;
}
else if (num2 > (num + 1.5))
{
num3 = this.class18_0.method_213(num + this.class10_settings_0.double_9);
buffer[int_5, int_6, i] = num3;
}
}
}
}
/*public void method_7(int int_5, int int_6)
{
if (!this.class18_0.method_39())
{
if (!this.class18_0.method_36())
{
this.tunerAfrGrid_0.fuel_low_1_Lock[int_5, int_6] = !this.tunerAfrGrid_0.fuel_low_1_Lock[int_5, int_6];
}
else
{
this.tunerAfrGrid_0.fuel_high_1_Lock[int_5, int_6] = !this.tunerAfrGrid_0.fuel_low_1_Lock[int_5, int_6];
}
}
else if (!this.class18_0.method_36())
{
this.tunerAfrGrid_0.fuel_low_2_Lock[int_5, int_6] = !this.tunerAfrGrid_0.fuel_low_2_Lock[int_5, int_6];
}
else
{
this.tunerAfrGrid_0.fuel_high_2_Lock[int_5, int_6] = !this.tunerAfrGrid_0.fuel_low_2_Lock[int_5, int_6];
}
}*/
private void method_8(Struct17 struct17_1)
{
if (!struct17_1.bool_1)
{
if (struct17_1.bool_0)
{
this.bool_1[struct17_1.struct15_0.struct24_0.int_1, struct17_1.struct15_0.struct24_0.int_0] = true;
this.bool_1[struct17_1.struct15_0.struct24_1.int_1, struct17_1.struct15_0.struct24_1.int_0] = true;
this.bool_1[struct17_1.struct15_0.struct24_2.int_1, struct17_1.struct15_0.struct24_2.int_0] = true;
this.bool_1[struct17_1.struct15_0.struct24_3.int_1, struct17_1.struct15_0.struct24_3.int_0] = true;
}
else
{
this.bool_0[struct17_1.struct15_0.struct24_0.int_1, struct17_1.struct15_0.struct24_0.int_0] = true;
this.bool_0[struct17_1.struct15_0.struct24_1.int_1, struct17_1.struct15_0.struct24_1.int_0] = true;
this.bool_0[struct17_1.struct15_0.struct24_2.int_1, struct17_1.struct15_0.struct24_2.int_0] = true;
this.bool_0[struct17_1.struct15_0.struct24_3.int_1, struct17_1.struct15_0.struct24_3.int_0] = true;
}
}
else if (struct17_1.bool_0)
{
this.bool_3[struct17_1.struct15_0.struct24_0.int_1, struct17_1.struct15_0.struct24_0.int_0] = true;
this.bool_3[struct17_1.struct15_0.struct24_1.int_1, struct17_1.struct15_0.struct24_1.int_0] = true;
this.bool_3[struct17_1.struct15_0.struct24_2.int_1, struct17_1.struct15_0.struct24_2.int_0] = true;
this.bool_3[struct17_1.struct15_0.struct24_3.int_1, struct17_1.struct15_0.struct24_3.int_0] = true;
}
else
{
this.bool_2[struct17_1.struct15_0.struct24_0.int_1, struct17_1.struct15_0.struct24_0.int_0] = true;
this.bool_2[struct17_1.struct15_0.struct24_1.int_1, struct17_1.struct15_0.struct24_1.int_0] = true;
this.bool_2[struct17_1.struct15_0.struct24_2.int_1, struct17_1.struct15_0.struct24_2.int_0] = true;
this.bool_2[struct17_1.struct15_0.struct24_3.int_1, struct17_1.struct15_0.struct24_3.int_0] = true;
}
}
public void method_9(bool bool_4)
{
if (this.tunerAfrGrid_0 != null)
{
if (!bool_4)
{
this.tunerAfrGrid_0.targetAfr_lo_1 = new double[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.tunerAfrGrid_0.targetAfr_hi_1 = new double[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.tunerAfrGrid_0.fuel_low_1_Lock = new bool[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.tunerAfrGrid_0.fuel_high_1_Lock = new bool[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
}
else
{
this.tunerAfrGrid_0.targetAfr_lo_2 = new double[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.tunerAfrGrid_0.targetAfr_hi_2 = new double[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.tunerAfrGrid_0.fuel_low_2_Lock = new bool[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
this.tunerAfrGrid_0.fuel_high_2_Lock = new bool[this.class18_0.method_33(), this.class18_0.method_32_GetRPM_RowsNumber()];
}
for (int i = 0; i < this.class18_0.method_33(); i++)
{
double num2;
int num = this.class18_0.method_163((byte) i);
if (num <= this.class10_settings_0.int_38)
{
num2 = this.class10_settings_0.double_10; //get Low AFR
}
else if ((num > this.class10_settings_0.int_38) && (num < this.class10_settings_0.int_39))
{
num2 = this.class10_settings_0.double_11; //get Mid AFR
}
else
{
if (num < this.class10_settings_0.int_39)
{
this.class18_0.class17_0.frmMain_0.LogThis("set target afr error");
return;
//throw new Exception("set target afr error");
}
num2 = this.class10_settings_0.double_12; //get High AFR
}
for (int j = 0; j < this.class18_0.method_32_GetRPM_RowsNumber(); j++)
{
if (!bool_4)
{
this.tunerAfrGrid_0.targetAfr_lo_1[i, j] = num2;
this.tunerAfrGrid_0.targetAfr_hi_1[i, j] = num2;
}
else
{
this.tunerAfrGrid_0.targetAfr_lo_2[i, j] = num2;
this.tunerAfrGrid_0.targetAfr_hi_2[i, j] = num2;
}
}
}
this.class18_0.method_53();
}
}
}