public PerformanceResults Calculate(string filename, SymbolCollection symbols)
{
// do the math!
PerformanceResults pr = new PerformanceResults();
FillComboBoxBankSelection();
SymbolHelper driverWishHelper = GetSymbolLike(symbols, "Driver wish", selectedBank);
int[] pedalrequestmap = readIntdatafromfile(filename, (int)driverWishHelper.Flash_start_address, driverWishHelper.Length);
limitermap = new int[pedalrequestmap.Length];
int[] resulttable = new int[pedalrequestmap.Length]; // result
rows = driverWishHelper.Y_axis_length;
columns = driverWishHelper.X_axis_length;
int[] pedalXAxis = readIntdatafromfile(filename, driverWishHelper.Y_axis_address, driverWishHelper.Y_axis_length * 2);
int[] pedalYAxis = readIntdatafromfile(filename, driverWishHelper.X_axis_address, driverWishHelper.X_axis_length * 2);
y_axisvalues = pedalYAxis;
x_axisvalues = pedalXAxis;
for (int colcount = 0; colcount < columns; colcount++)
{
for (int rowcount = 0; rowcount < rows; rowcount++)
{
// get the current value from the request map
if (_ECUType.Contains("EDC16"))
{
int requestedTorque = (int)pedalrequestmap.GetValue((colcount * rows) + rowcount);
limitType limiterType = limitType.None;
int resultingAirMass = CalculateMaxAirmassforcell(symbols, filename, (int)pedalXAxis.GetValue(rowcount), ((int)pedalYAxis.GetValue(colcount)), requestedTorque, checkEdit1.Checked, out limiterType, true);
resulttable.SetValue(resultingAirMass, (colcount * rows) + rowcount);
limitermap.SetValue(limiterType, (colcount * rows) + rowcount);
}
else
{
int InjectedQuantity = (int)pedalrequestmap.GetValue((colcount * rows) + rowcount);
limitType limiterType = limitType.None;
int resultingAirMass = CalculateMaxAirmassforcell(symbols, filename, (int)pedalXAxis.GetValue(rowcount), ((int)pedalYAxis.GetValue(colcount)), InjectedQuantity, checkEdit1.Checked, out limiterType, false);
resulttable.SetValue(resultingAirMass, (colcount * rows) + rowcount);
limitermap.SetValue(limiterType, (colcount * rows) + rowcount);
}
}
}
// now show resulttable
DataTable dt = new DataTable();
foreach (int xvalue in pedalYAxis)
{
dt.Columns.Add(xvalue.ToString());
}
// now fill the table rows
m_MaxValueInTable = 0;
for (int r = 0; r < pedalXAxis.Length ; r++)
{
object[] values = new object[columns];
for (int t = 0; t < pedalYAxis.Length; t++)
{
int currValue = (int)resulttable.GetValue( (((t + 1) * rows) - 1) - r );
if (currValue > m_MaxValueInTable) m_MaxValueInTable = currValue;
values.SetValue(currValue, t);
}
dt.Rows.Add(values);
}
gridControl1.DataSource = dt;
if (xtraTabControl1.SelectedTabPage.Name == xtraTabPage2.Name)
{
LoadGraphWithDetails();
}
try
{
for (int i = 0; i < dt.Rows[0].ItemArray.Length; i++)
{
double o = Convert.ToDouble(dt.Rows[0].ItemArray.GetValue(i));
// convert to hp
int rpm = Convert.ToInt32(y_axisvalues.GetValue(i));
int torque = Tools.Instance.IQToTorque(Convert.ToInt32(o), rpm, m_numberCylinders);
if (_ECUType.Contains("EDC16"))
{
torque = Convert.ToInt32(o);
torque *= 10; // correction to keep the code identical from here
double temptorque = torque * Tools.Instance.GetCorrectionFactorForRpm(rpm, m_numberCylinders);
torque = Convert.ToInt32(temptorque);
}
int horsepower = Tools.Instance.TorqueToPower(torque, rpm);
// if (checkEdit5.Checked) horsepower = Tools.Instance.TorqueToPowerkW(torque, rpm);
// if (checkEdit6.Checked) torque = Tools.Instance.IQToTorque(Convert.ToInt32(o), rpm, m_numberCylinders);//AirmassToTorqueLbft(Convert.ToInt32(o), rpm);
horsepower /= 100;
torque /= 100;
if (torque > pr.Torque) pr.Torque = torque;
if (horsepower > pr.Horsepower) pr.Horsepower = horsepower;
}
}
catch (Exception)
{
}
return pr;
}