mirror of https://github.com/rusefi/rusefi-1.git
auto-sync
This commit is contained in:
parent
2d393151f6
commit
64e3e2e488
|
@ -198,7 +198,7 @@ void Engine::periodicFastCallback(DECLARE_ENGINE_PARAMETER_F) {
|
||||||
/**
|
/**
|
||||||
* *0.01 because of https://sourceforge.net/p/rusefi/tickets/153/
|
* *0.01 because of https://sourceforge.net/p/rusefi/tickets/153/
|
||||||
*/
|
*/
|
||||||
engine->engineState.currentVE = veMap.getValue(map, rpm) * 0.01;
|
engine->engineState.currentVE = engine->engineState.baroCorrection * veMap.getValue(map, rpm) * 0.01;
|
||||||
engine->engineState.targerAFR = afrMap.getValue(map, rpm);
|
engine->engineState.targerAFR = afrMap.getValue(map, rpm);
|
||||||
} else {
|
} else {
|
||||||
float engineLoad = getEngineLoadT(PASS_ENGINE_PARAMETER_F);
|
float engineLoad = getEngineLoadT(PASS_ENGINE_PARAMETER_F);
|
||||||
|
|
|
@ -3,14 +3,14 @@ package com.rusefi;
|
||||||
|
|
||||||
import com.rusefi.core.Sensor;
|
import com.rusefi.core.Sensor;
|
||||||
import com.rusefi.core.SensorCentral;
|
import com.rusefi.core.SensorCentral;
|
||||||
import com.rusefi.waves.WaveChart;
|
import com.rusefi.waves.EngineChart;
|
||||||
import com.rusefi.waves.WaveReport;
|
import com.rusefi.waves.EngineReport;
|
||||||
|
|
||||||
import static com.rusefi.TestingUtils.nextChart;
|
import static com.rusefi.TestingUtils.nextChart;
|
||||||
import static com.rusefi.IoUtil.sendCommand;
|
import static com.rusefi.IoUtil.sendCommand;
|
||||||
import static com.rusefi.IoUtil.sleep;
|
import static com.rusefi.IoUtil.sleep;
|
||||||
import static com.rusefi.TestingUtils.*;
|
import static com.rusefi.TestingUtils.*;
|
||||||
import static com.rusefi.waves.WaveReport.isCloseEnough;
|
import static com.rusefi.waves.EngineReport.isCloseEnough;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* rusEfi firmware simulator functional test suite
|
* rusEfi firmware simulator functional test suite
|
||||||
|
@ -50,20 +50,20 @@ public class AutoTest {
|
||||||
setEngineType(25);
|
setEngineType(25);
|
||||||
sendCommand("chart 1");
|
sendCommand("chart 1");
|
||||||
String msg = "BMW";
|
String msg = "BMW";
|
||||||
WaveChart chart;
|
EngineChart chart;
|
||||||
IoUtil.changeRpm(200);
|
IoUtil.changeRpm(200);
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
double x = 173.988;
|
double x = 173.988;
|
||||||
assertWave(msg, chart, WaveChart.SPARK_1, 0.0199666, x, x + 180, x + 360, x + 540);
|
assertWave(msg, chart, EngineChart.SPARK_1, 0.0199666, x, x + 180, x + 360, x + 540);
|
||||||
|
|
||||||
|
|
||||||
IoUtil.changeRpm(1200);
|
IoUtil.changeRpm(1200);
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
|
|
||||||
x = 688.464;
|
x = 688.464;
|
||||||
assertWave(msg, chart, WaveChart.SPARK_1, 0.0597999999, x, x + 180, x + 360, x + 540);
|
assertWave(msg, chart, EngineChart.SPARK_1, 0.0597999999, x, x + 180, x + 360, x + 540);
|
||||||
|
|
||||||
assertWave(msg, chart, WaveChart.MAP_AVERAGING, 0.139, 17.784);
|
assertWave(msg, chart, EngineChart.MAP_AVERAGING, 0.139, 17.784);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void testMitsu() {
|
private static void testMitsu() {
|
||||||
|
@ -93,75 +93,75 @@ public class AutoTest {
|
||||||
setEngineType(28);
|
setEngineType(28);
|
||||||
String msg = "mazda 626 default cranking";
|
String msg = "mazda 626 default cranking";
|
||||||
IoUtil.changeRpm(200);
|
IoUtil.changeRpm(200);
|
||||||
WaveChart chart;
|
EngineChart chart;
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
|
|
||||||
double x = 102;
|
double x = 102;
|
||||||
assertWave(msg, chart, WaveChart.SPARK_1, 0.1944, x, x + 180, x + 360, x + 540);
|
assertWave(msg, chart, EngineChart.SPARK_1, 0.1944, x, x + 180, x + 360, x + 540);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void test2003DodgeNeon() {
|
private static void test2003DodgeNeon() {
|
||||||
setEngineType(23);
|
setEngineType(23);
|
||||||
WaveChart chart;
|
EngineChart chart;
|
||||||
String msg = "2003 Neon cranking ";
|
String msg = "2003 Neon cranking ";
|
||||||
IoUtil.changeRpm(200);
|
IoUtil.changeRpm(200);
|
||||||
|
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
double x = 100;
|
double x = 100;
|
||||||
assertWave(true, msg, chart, WaveChart.SPARK_1, 0.194433, 0.01, WaveReport.RATIO, x + 180, x + 540);
|
assertWave(true, msg, chart, EngineChart.SPARK_1, 0.194433, 0.01, EngineReport.RATIO, x + 180, x + 540);
|
||||||
assertWaveNull(msg, chart, WaveChart.SPARK_2);
|
assertWaveNull(msg, chart, EngineChart.SPARK_2);
|
||||||
assertWave(true, msg, chart, WaveChart.SPARK_3, 0.194433, 0.01, WaveReport.RATIO, x, x + 360);
|
assertWave(true, msg, chart, EngineChart.SPARK_3, 0.194433, 0.01, EngineReport.RATIO, x, x + 360);
|
||||||
assertWaveNull(msg, chart, WaveChart.SPARK_4);
|
assertWaveNull(msg, chart, EngineChart.SPARK_4);
|
||||||
|
|
||||||
x = 176.856;
|
x = 176.856;
|
||||||
// todo: why is width precision so low here? is that because of loaded Windows with 1ms precision?
|
// todo: why is width precision so low here? is that because of loaded Windows with 1ms precision?
|
||||||
double widthRatio = 0.25;
|
double widthRatio = 0.25;
|
||||||
assertWave(true, msg, chart, WaveChart.INJECTOR_1, 0.006266666666, 0.01, widthRatio, x, x + 180, x + 360, x + 540);
|
assertWave(true, msg, chart, EngineChart.INJECTOR_1, 0.006266666666, 0.01, widthRatio, x, x + 180, x + 360, x + 540);
|
||||||
assertWave(true, msg, chart, WaveChart.INJECTOR_2, 0.006266666666, 0.01, widthRatio, x, x + 180, x + 360, x + 540);
|
assertWave(true, msg, chart, EngineChart.INJECTOR_2, 0.006266666666, 0.01, widthRatio, x, x + 180, x + 360, x + 540);
|
||||||
assertWave(true, msg, chart, WaveChart.INJECTOR_3, 0.006266666666, 0.01, widthRatio, x, x + 180, x + 360, x + 540);
|
assertWave(true, msg, chart, EngineChart.INJECTOR_3, 0.006266666666, 0.01, widthRatio, x, x + 180, x + 360, x + 540);
|
||||||
assertWave(true, msg, chart, WaveChart.INJECTOR_4, 0.006266666666, 0.01, widthRatio, x, x + 180, x + 360, x + 540);
|
assertWave(true, msg, chart, EngineChart.INJECTOR_4, 0.006266666666, 0.01, widthRatio, x, x + 180, x + 360, x + 540);
|
||||||
|
|
||||||
msg = "2003 Neon running";
|
msg = "2003 Neon running";
|
||||||
IoUtil.changeRpm(2000);
|
IoUtil.changeRpm(2000);
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
x = 113.28;
|
x = 113.28;
|
||||||
assertWave(true, msg, chart, WaveChart.SPARK_1, 0.13299999999999998, 0.005, WaveReport.RATIO, x + 180, x + 540);
|
assertWave(true, msg, chart, EngineChart.SPARK_1, 0.13299999999999998, 0.005, EngineReport.RATIO, x + 180, x + 540);
|
||||||
assertWaveNull(msg, chart, WaveChart.SPARK_2);
|
assertWaveNull(msg, chart, EngineChart.SPARK_2);
|
||||||
assertWave(true, msg, chart, WaveChart.SPARK_3, 0.13299999999999998, 0.005, WaveReport.RATIO, x, x + 360);
|
assertWave(true, msg, chart, EngineChart.SPARK_3, 0.13299999999999998, 0.005, EngineReport.RATIO, x, x + 360);
|
||||||
assertWaveNull(msg, chart, WaveChart.SPARK_4);
|
assertWaveNull(msg, chart, EngineChart.SPARK_4);
|
||||||
|
|
||||||
x = 168.12;
|
x = 168.12;
|
||||||
assertWave(true, msg, chart, WaveChart.INJECTOR_1, 0.03333333333333302, 0.01, 0.1, x + 360);
|
assertWave(true, msg, chart, EngineChart.INJECTOR_1, 0.03333333333333302, 0.01, 0.1, x + 360);
|
||||||
assertWave(true, msg, chart, WaveChart.INJECTOR_2, 0.03333333333333302, 0.01, 0.1, x + 180);
|
assertWave(true, msg, chart, EngineChart.INJECTOR_2, 0.03333333333333302, 0.01, 0.1, x + 180);
|
||||||
assertWave(true, msg, chart, WaveChart.INJECTOR_3, 0.03333333333333302, 0.01, 0.1, x + 540);
|
assertWave(true, msg, chart, EngineChart.INJECTOR_3, 0.03333333333333302, 0.01, 0.1, x + 540);
|
||||||
assertWave(true, msg, chart, WaveChart.INJECTOR_4, 0.03333333333333302, 0.01, 0.1, x);
|
assertWave(true, msg, chart, EngineChart.INJECTOR_4, 0.03333333333333302, 0.01, 0.1, x);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void testMazdaProtege() {
|
private static void testMazdaProtege() {
|
||||||
setEngineType(14);
|
setEngineType(14);
|
||||||
WaveChart chart;
|
EngineChart chart;
|
||||||
IoUtil.changeRpm(200);
|
IoUtil.changeRpm(200);
|
||||||
String msg = "ProtegeLX cranking";
|
String msg = "ProtegeLX cranking";
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
double x = 107;
|
double x = 107;
|
||||||
assertWave(msg, chart, WaveChart.SPARK_1, 0.194433, x, x + 180, x + 360, x + 540);
|
assertWave(msg, chart, EngineChart.SPARK_1, 0.194433, x, x + 180, x + 360, x + 540);
|
||||||
x = 0;
|
x = 0;
|
||||||
assertWaveFall(msg, chart, WaveChart.INJECTOR_1, 0.004666666666, x, x + 180, x + 360, x + 540);
|
assertWaveFall(msg, chart, EngineChart.INJECTOR_1, 0.004666666666, x, x + 180, x + 360, x + 540);
|
||||||
assertWaveFall(msg, chart, WaveChart.INJECTOR_2, 0.004666666666, x, x + 180, x + 360, x + 540);
|
assertWaveFall(msg, chart, EngineChart.INJECTOR_2, 0.004666666666, x, x + 180, x + 360, x + 540);
|
||||||
|
|
||||||
msg = "ProtegeLX running";
|
msg = "ProtegeLX running";
|
||||||
IoUtil.changeRpm(2000);
|
IoUtil.changeRpm(2000);
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
x = 127.92;
|
x = 127.92;
|
||||||
assertWave(msg, chart, WaveChart.SPARK_1, 0.13333333333333333, x, x + 180, x + 360, x + 540);
|
assertWave(msg, chart, EngineChart.SPARK_1, 0.13333333333333333, x, x + 180, x + 360, x + 540);
|
||||||
x = 0;
|
x = 0;
|
||||||
assertWaveFall(msg, chart, WaveChart.INJECTOR_1, 0.09766666666666689, x + 180, x + 540);
|
assertWaveFall(msg, chart, EngineChart.INJECTOR_1, 0.09766666666666689, x + 180, x + 540);
|
||||||
assertWaveFall(msg, chart, WaveChart.INJECTOR_2, 0.09766666666666689, x, x + 360);
|
assertWaveFall(msg, chart, EngineChart.INJECTOR_2, 0.09766666666666689, x, x + 360);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void test1995DodgeNeon() {
|
private static void test1995DodgeNeon() {
|
||||||
setEngineType(2);
|
setEngineType(2);
|
||||||
WaveChart chart;
|
EngineChart chart;
|
||||||
sendComplexCommand("set_whole_fuel_map 3");
|
sendComplexCommand("set_whole_fuel_map 3");
|
||||||
sendComplexCommand("set_ignition_mode 1");
|
sendComplexCommand("set_ignition_mode 1");
|
||||||
/**
|
/**
|
||||||
|
@ -172,16 +172,16 @@ public class AutoTest {
|
||||||
|
|
||||||
String msg = "1995 Neon";
|
String msg = "1995 Neon";
|
||||||
double x = -70;
|
double x = -70;
|
||||||
assertWaveFall(msg, chart, WaveChart.INJECTOR_4, 0.133, x + 540);
|
assertWaveFall(msg, chart, EngineChart.INJECTOR_4, 0.133, x + 540);
|
||||||
assertWaveFall(msg, chart, WaveChart.INJECTOR_2, 0.133, x + 720);
|
assertWaveFall(msg, chart, EngineChart.INJECTOR_2, 0.133, x + 720);
|
||||||
assertWaveFall(msg, chart, WaveChart.INJECTOR_1, 0.133, x + 180);
|
assertWaveFall(msg, chart, EngineChart.INJECTOR_1, 0.133, x + 180);
|
||||||
assertWaveFall(msg, chart, WaveChart.INJECTOR_3, 0.133, x + 360);
|
assertWaveFall(msg, chart, EngineChart.INJECTOR_3, 0.133, x + 360);
|
||||||
|
|
||||||
x = 115.92;
|
x = 115.92;
|
||||||
assertWave(msg, chart, WaveChart.SPARK_4, 0.13333, x + 540);
|
assertWave(msg, chart, EngineChart.SPARK_4, 0.13333, x + 540);
|
||||||
assertWave(msg, chart, WaveChart.SPARK_2, 0.13333, x);
|
assertWave(msg, chart, EngineChart.SPARK_2, 0.13333, x);
|
||||||
assertWave(msg, chart, WaveChart.SPARK_1, 0.13333, x + 180);
|
assertWave(msg, chart, EngineChart.SPARK_1, 0.13333, x + 180);
|
||||||
assertWave(msg, chart, WaveChart.SPARK_3, 0.13333, x + 360);
|
assertWave(msg, chart, EngineChart.SPARK_3, 0.13333, x + 360);
|
||||||
|
|
||||||
// switching to Speed Density
|
// switching to Speed Density
|
||||||
if (!TestingUtils.isRealHardware)
|
if (!TestingUtils.isRealHardware)
|
||||||
|
@ -189,44 +189,44 @@ public class AutoTest {
|
||||||
sendComplexCommand("set_algorithm 3");
|
sendComplexCommand("set_algorithm 3");
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
x = -70;
|
x = -70;
|
||||||
assertWaveFall(msg, chart, WaveChart.INJECTOR_4, 0.463, x + 540);
|
assertWaveFall(msg, chart, EngineChart.INJECTOR_4, 0.463, x + 540);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void testFordFiesta() {
|
private static void testFordFiesta() {
|
||||||
setEngineType(4);
|
setEngineType(4);
|
||||||
WaveChart chart;
|
EngineChart chart;
|
||||||
IoUtil.changeRpm(2000);
|
IoUtil.changeRpm(2000);
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
|
|
||||||
String msg = "Fiesta";
|
String msg = "Fiesta";
|
||||||
double x = 312;
|
double x = 312;
|
||||||
assertWave("wasted spark #1 with Fiesta", chart, WaveChart.SPARK_1, 0.1333333, x, x + 360);
|
assertWave("wasted spark #1 with Fiesta", chart, EngineChart.SPARK_1, 0.1333333, x, x + 360);
|
||||||
assertWaveNull(chart, WaveChart.SPARK_2);
|
assertWaveNull(chart, EngineChart.SPARK_2);
|
||||||
assertWave("wasted spark #3 with Fiesta", chart, WaveChart.SPARK_3, 0.1333333, x + 180, x + 540);
|
assertWave("wasted spark #3 with Fiesta", chart, EngineChart.SPARK_3, 0.1333333, x + 180, x + 540);
|
||||||
assertWaveNull(msg, chart, WaveChart.SPARK_4);
|
assertWaveNull(msg, chart, EngineChart.SPARK_4);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void testFord6() {
|
private static void testFord6() {
|
||||||
setEngineType(7);
|
setEngineType(7);
|
||||||
WaveChart chart;
|
EngineChart chart;
|
||||||
IoUtil.changeRpm(2000);
|
IoUtil.changeRpm(2000);
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
|
|
||||||
String msg = "ford 6";
|
String msg = "ford 6";
|
||||||
|
|
||||||
double x = 12.84;
|
double x = 12.84;
|
||||||
assertWave(msg, chart, WaveChart.SPARK_1, 0.01666, x, x + 120, x + 240, x + 360, x + 480, x + 600);
|
assertWave(msg, chart, EngineChart.SPARK_1, 0.01666, x, x + 120, x + 240, x + 360, x + 480, x + 600);
|
||||||
|
|
||||||
assertWaveNull(msg, chart, WaveChart.TRIGGER_2);
|
assertWaveNull(msg, chart, EngineChart.TRIGGER_2);
|
||||||
sendComplexCommand("set_trigger_type 1"); // TT_FORD_ASPIRE
|
sendComplexCommand("set_trigger_type 1"); // TT_FORD_ASPIRE
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
assertTrue(msg, chart.get(WaveChart.TRIGGER_2) != null);
|
assertTrue(msg, chart.get(EngineChart.TRIGGER_2) != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void testFordAspire() {
|
private static void testFordAspire() {
|
||||||
setEngineType(3);
|
setEngineType(3);
|
||||||
String msg;
|
String msg;
|
||||||
WaveChart chart;
|
EngineChart chart;
|
||||||
// todo: interesting changeRpm(100);
|
// todo: interesting changeRpm(100);
|
||||||
sendComplexCommand("set_cranking_rpm 500");
|
sendComplexCommand("set_cranking_rpm 500");
|
||||||
IoUtil.changeRpm(200);
|
IoUtil.changeRpm(200);
|
||||||
|
@ -234,13 +234,13 @@ public class AutoTest {
|
||||||
double x;
|
double x;
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
x = 55;
|
x = 55;
|
||||||
assertWave("aspire default cranking ", chart, WaveChart.SPARK_1, 0.1944, x, x + 180, x + 360, x + 540);
|
assertWave("aspire default cranking ", chart, EngineChart.SPARK_1, 0.1944, x, x + 180, x + 360, x + 540);
|
||||||
|
|
||||||
|
|
||||||
IoUtil.changeRpm(600);
|
IoUtil.changeRpm(600);
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
x = 76;
|
x = 76;
|
||||||
assertWave("aspire default running ", chart, WaveChart.SPARK_1, 0.04, x, x + 180, x + 360, x + 540);
|
assertWave("aspire default running ", chart, EngineChart.SPARK_1, 0.04, x, x + 180, x + 360, x + 540);
|
||||||
|
|
||||||
IoUtil.changeRpm(200);
|
IoUtil.changeRpm(200);
|
||||||
|
|
||||||
|
@ -249,25 +249,25 @@ public class AutoTest {
|
||||||
|
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
x = 55;
|
x = 55;
|
||||||
assertWave("aspire cranking", chart, WaveChart.SPARK_1, 0.18, x, x + 180, x + 360, x + 540);
|
assertWave("aspire cranking", chart, EngineChart.SPARK_1, 0.18, x, x + 180, x + 360, x + 540);
|
||||||
|
|
||||||
sendCommand("set_cranking_timing_angle -40");
|
sendCommand("set_cranking_timing_angle -40");
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
x = 64;
|
x = 64;
|
||||||
assertWave("aspire", chart, WaveChart.SPARK_1, 0.18, x, x + 180, x + 360, x + 540);
|
assertWave("aspire", chart, EngineChart.SPARK_1, 0.18, x, x + 180, x + 360, x + 540);
|
||||||
sendCommand("set_cranking_timing_angle 149");
|
sendCommand("set_cranking_timing_angle 149");
|
||||||
|
|
||||||
sendCommand("set_cranking_charge_angle 40");
|
sendCommand("set_cranking_charge_angle 40");
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
x = 80;
|
x = 80;
|
||||||
assertWave("aspire", chart, WaveChart.SPARK_1, 40.0 / 360, x, x + 180, x + 360, x + 540);
|
assertWave("aspire", chart, EngineChart.SPARK_1, 40.0 / 360, x, x + 180, x + 360, x + 540);
|
||||||
sendCommand("set_cranking_charge_angle 65");
|
sendCommand("set_cranking_charge_angle 65");
|
||||||
|
|
||||||
IoUtil.changeRpm(600);
|
IoUtil.changeRpm(600);
|
||||||
sendComplexCommand("set_cranking_rpm 700");
|
sendComplexCommand("set_cranking_rpm 700");
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
x = 55;
|
x = 55;
|
||||||
assertWave("cranking@600", chart, WaveChart.SPARK_1, 0.18, x, x + 180, x + 360, x + 540);
|
assertWave("cranking@600", chart, EngineChart.SPARK_1, 0.18, x, x + 180, x + 360, x + 540);
|
||||||
|
|
||||||
IoUtil.changeRpm(2000);
|
IoUtil.changeRpm(2000);
|
||||||
sendCommand("set_whole_fuel_map 1.57");
|
sendCommand("set_whole_fuel_map 1.57");
|
||||||
|
@ -276,13 +276,13 @@ public class AutoTest {
|
||||||
|
|
||||||
msg = "aspire running";
|
msg = "aspire running";
|
||||||
|
|
||||||
assertWaveFall(msg, chart, WaveChart.INJECTOR_1, 0.086, 238.75);
|
assertWaveFall(msg, chart, EngineChart.INJECTOR_1, 0.086, 238.75);
|
||||||
assertWaveFall(msg, chart, WaveChart.INJECTOR_2, 0.086, 53.04);
|
assertWaveFall(msg, chart, EngineChart.INJECTOR_2, 0.086, 53.04);
|
||||||
assertWaveFall(msg, chart, WaveChart.INJECTOR_3, 0.086, 417.04);
|
assertWaveFall(msg, chart, EngineChart.INJECTOR_3, 0.086, 417.04);
|
||||||
assertWaveFall(msg, chart, WaveChart.INJECTOR_4, 0.086, 594.04);
|
assertWaveFall(msg, chart, EngineChart.INJECTOR_4, 0.086, 594.04);
|
||||||
|
|
||||||
x = 22.32;
|
x = 22.32;
|
||||||
assertWave(chart, WaveChart.SPARK_1, 0.133, x, x + 180, x + 360, x + 540);
|
assertWave(chart, EngineChart.SPARK_1, 0.133, x, x + 180, x + 360, x + 540);
|
||||||
|
|
||||||
sendCommand("set_fuel_map 2200 4 15.66");
|
sendCommand("set_fuel_map 2200 4 15.66");
|
||||||
sendCommand("set_fuel_map 2000 4 15.66");
|
sendCommand("set_fuel_map 2000 4 15.66");
|
||||||
|
@ -294,31 +294,31 @@ public class AutoTest {
|
||||||
sendComplexCommand("set_global_trigger_offset_angle 175");
|
sendComplexCommand("set_global_trigger_offset_angle 175");
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
|
|
||||||
assertWaveFall(msg + " fuel", chart, WaveChart.INJECTOR_1, 0.555, 238.75);
|
assertWaveFall(msg + " fuel", chart, EngineChart.INJECTOR_1, 0.555, 238.75);
|
||||||
assertWaveFall(msg + " fuel", chart, WaveChart.INJECTOR_2, 0.555, 53.04);
|
assertWaveFall(msg + " fuel", chart, EngineChart.INJECTOR_2, 0.555, 53.04);
|
||||||
assertWaveFall(msg + " fuel", chart, WaveChart.INJECTOR_3, 0.555, 417.04);
|
assertWaveFall(msg + " fuel", chart, EngineChart.INJECTOR_3, 0.555, 417.04);
|
||||||
assertWaveFall(msg + " fuel", chart, WaveChart.INJECTOR_4, 0.555, 594.04);
|
assertWaveFall(msg + " fuel", chart, EngineChart.INJECTOR_4, 0.555, 594.04);
|
||||||
|
|
||||||
x = 45;
|
x = 45;
|
||||||
assertWave(chart, WaveChart.SPARK_1, 0.133, x, x + 180, x + 360, x + 540);
|
assertWave(chart, EngineChart.SPARK_1, 0.133, x, x + 180, x + 360, x + 540);
|
||||||
assertWaveNull(chart, WaveChart.SPARK_2);
|
assertWaveNull(chart, EngineChart.SPARK_2);
|
||||||
|
|
||||||
sendComplexCommand("set_global_trigger_offset_angle 130");
|
sendComplexCommand("set_global_trigger_offset_angle 130");
|
||||||
sendComplexCommand("set_injection_offset 369");
|
sendComplexCommand("set_injection_offset 369");
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
x = 585;
|
x = 585;
|
||||||
assertWave(chart, WaveChart.SPARK_1, 0.133, x, x + 180, x + 360, x + 540);
|
assertWave(chart, EngineChart.SPARK_1, 0.133, x, x + 180, x + 360, x + 540);
|
||||||
|
|
||||||
// let's enable more channels dynamically
|
// let's enable more channels dynamically
|
||||||
sendComplexCommand("set_ignition_mode 1");
|
sendComplexCommand("set_ignition_mode 1");
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
assertWave("Switching Aspire into INDIVIDUAL_COILS mode", chart, WaveChart.SPARK_2, 0.133, x);
|
assertWave("Switching Aspire into INDIVIDUAL_COILS mode", chart, EngineChart.SPARK_2, 0.133, x);
|
||||||
assertWave(chart, WaveChart.SPARK_3, 0.133, x + 360);
|
assertWave(chart, EngineChart.SPARK_3, 0.133, x + 360);
|
||||||
|
|
||||||
sendCommand("set_whole_timing_map 520");
|
sendCommand("set_whole_timing_map 520");
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
x = 64.8;
|
x = 64.8;
|
||||||
assertWave(chart, WaveChart.SPARK_2, 0.133, x);
|
assertWave(chart, EngineChart.SPARK_2, 0.133, x);
|
||||||
|
|
||||||
|
|
||||||
// switching to Speed Density
|
// switching to Speed Density
|
||||||
|
@ -332,15 +332,15 @@ public class AutoTest {
|
||||||
assertEquals(1, SensorCentral.getInstance().getValue(Sensor.MAP));
|
assertEquals(1, SensorCentral.getInstance().getValue(Sensor.MAP));
|
||||||
//assertEquals(1, SensorCentral.getInstance().getValue(Sensor.));
|
//assertEquals(1, SensorCentral.getInstance().getValue(Sensor.));
|
||||||
x = 8.88;
|
x = 8.88;
|
||||||
assertWaveFall(msg + " fuel SD #1", chart, WaveChart.INJECTOR_1, 0.329, x + 180);
|
assertWaveFall(msg + " fuel SD #1", chart, EngineChart.INJECTOR_1, 0.329, x + 180);
|
||||||
assertWaveFall(msg + " fuel SD #2", chart, WaveChart.INJECTOR_2, 0.329, x);
|
assertWaveFall(msg + " fuel SD #2", chart, EngineChart.INJECTOR_2, 0.329, x);
|
||||||
assertWaveFall(msg + " fuel SD #3", chart, WaveChart.INJECTOR_3, 0.329, x + 360);
|
assertWaveFall(msg + " fuel SD #3", chart, EngineChart.INJECTOR_3, 0.329, x + 360);
|
||||||
assertWaveFall(msg + " fuel SD #4", chart, WaveChart.INJECTOR_4, 0.329, x + 540);
|
assertWaveFall(msg + " fuel SD #4", chart, EngineChart.INJECTOR_4, 0.329, x + 540);
|
||||||
|
|
||||||
// above hard limit
|
// above hard limit
|
||||||
IoUtil.changeRpm(10000);
|
IoUtil.changeRpm(10000);
|
||||||
chart = nextChart();
|
chart = nextChart();
|
||||||
assertWaveNull("hard limit check", chart, WaveChart.INJECTOR_1);
|
assertWaveNull("hard limit check", chart, EngineChart.INJECTOR_1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void assertEquals(double expected, double actual) {
|
private static void assertEquals(double expected, double actual) {
|
||||||
|
@ -356,11 +356,11 @@ public class AutoTest {
|
||||||
sendCommand(command, COMPLEX_COMMAND_RETRY, Timeouts.CMD_TIMEOUT);
|
sendCommand(command, COMPLEX_COMMAND_RETRY, Timeouts.CMD_TIMEOUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void assertWaveNull(WaveChart chart, String key) {
|
private static void assertWaveNull(EngineChart chart, String key) {
|
||||||
assertWaveNull("", chart, key);
|
assertWaveNull("", chart, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void assertWaveNull(String msg, WaveChart chart, String key) {
|
private static void assertWaveNull(String msg, EngineChart chart, String key) {
|
||||||
assertNull(msg + "chart for " + key, chart.get(key));
|
assertNull(msg + "chart for " + key, chart.get(key));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ import jssc.SerialPortList;
|
||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import static com.rusefi.waves.WaveReport.isCloseEnough;
|
import static com.rusefi.waves.EngineReport.isCloseEnough;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Andrey Belomutskiy
|
* @author Andrey Belomutskiy
|
||||||
|
|
|
@ -2,17 +2,17 @@ package com.rusefi;
|
||||||
|
|
||||||
import com.rusefi.core.EngineState;
|
import com.rusefi.core.EngineState;
|
||||||
import com.rusefi.io.LinkManager;
|
import com.rusefi.io.LinkManager;
|
||||||
|
import com.rusefi.waves.EngineChart;
|
||||||
|
import com.rusefi.waves.EngineReport;
|
||||||
import com.rusefi.waves.RevolutionLog;
|
import com.rusefi.waves.RevolutionLog;
|
||||||
import com.rusefi.waves.WaveChart;
|
import com.rusefi.waves.EngineChartParser;
|
||||||
import com.rusefi.waves.WaveChartParser;
|
|
||||||
import com.rusefi.waves.WaveReport;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
import static com.rusefi.waves.WaveReport.isCloseEnough;
|
import static com.rusefi.waves.EngineReport.isCloseEnough;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Andrey Belomutskiy
|
* @author Andrey Belomutskiy
|
||||||
|
@ -58,23 +58,23 @@ public class TestingUtils {
|
||||||
fail("Not true");
|
fail("Not true");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void assertWave(WaveChart chart, String key, double width, double... expectedAngles) {
|
static void assertWave(EngineChart chart, String key, double width, double... expectedAngles) {
|
||||||
assertWave("", chart, key, width, expectedAngles);
|
assertWave("", chart, key, width, expectedAngles);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void assertWave(String msg, WaveChart chart, String key, double width, double... expectedAngles) {
|
static void assertWave(String msg, EngineChart chart, String key, double width, double... expectedAngles) {
|
||||||
assertWave(true, msg, chart, key, width, WaveReport.RATIO, WaveReport.RATIO, expectedAngles);
|
assertWave(true, msg, chart, key, width, EngineReport.RATIO, EngineReport.RATIO, expectedAngles);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void assertWaveFall(WaveChart chart, String key, double width, double... expectedAngles) {
|
static void assertWaveFall(EngineChart chart, String key, double width, double... expectedAngles) {
|
||||||
assertWaveFall("", chart, key, width, expectedAngles);
|
assertWaveFall("", chart, key, width, expectedAngles);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void assertWaveFall(String msg, WaveChart chart, String key, double width, double... expectedAngles) {
|
static void assertWaveFall(String msg, EngineChart chart, String key, double width, double... expectedAngles) {
|
||||||
assertWave(false, msg, chart, key, width, WaveReport.RATIO, WaveReport.RATIO, expectedAngles);
|
assertWave(false, msg, chart, key, width, EngineReport.RATIO, EngineReport.RATIO, expectedAngles);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void assertWave(boolean rise, String msg, WaveChart chart, String key, double expectedWidth, double angleRatio, double widthRatio, double... expectedAngles) {
|
static void assertWave(boolean rise, String msg, EngineChart chart, String key, double expectedWidth, double angleRatio, double widthRatio, double... expectedAngles) {
|
||||||
if (isRealHardware)
|
if (isRealHardware)
|
||||||
return;
|
return;
|
||||||
RevolutionLog revolutionLog = chart.getRevolutionsLog();
|
RevolutionLog revolutionLog = chart.getRevolutionsLog();
|
||||||
|
@ -83,9 +83,9 @@ public class TestingUtils {
|
||||||
|
|
||||||
StringBuilder events = chart.get(key);
|
StringBuilder events = chart.get(key);
|
||||||
assertTrue(msg + " Events not null for " + key, events != null);
|
assertTrue(msg + " Events not null for " + key, events != null);
|
||||||
List<WaveReport.UpDown> wr = WaveReport.parse(events.toString());
|
List<EngineReport.UpDown> wr = EngineReport.parse(events.toString());
|
||||||
assertTrue(msg + " waves for " + key, !wr.isEmpty());
|
assertTrue(msg + " waves for " + key, !wr.isEmpty());
|
||||||
for (WaveReport.UpDown ud : wr) {
|
for (EngineReport.UpDown ud : wr) {
|
||||||
int eventTime = rise ? ud.upTime : ud.downTime;
|
int eventTime = rise ? ud.upTime : ud.downTime;
|
||||||
double angleByTime = revolutionLog.getCrankAngleByTime(eventTime);
|
double angleByTime = revolutionLog.getCrankAngleByTime(eventTime);
|
||||||
assertCloseEnough(msg + " angle for " + key + "@" + eventTime, fixAngle(angleByTime), angleRatio, expectedAngles);
|
assertCloseEnough(msg + " angle for " + key + "@" + eventTime, fixAngle(angleByTime), angleRatio, expectedAngles);
|
||||||
|
@ -104,13 +104,13 @@ public class TestingUtils {
|
||||||
assertTrue(msg, value == null);
|
assertTrue(msg, value == null);
|
||||||
}
|
}
|
||||||
|
|
||||||
static WaveChart nextChart() {
|
static EngineChart nextChart() {
|
||||||
return WaveChartParser.unpackToMap(getNextWaveChart());
|
return EngineChartParser.unpackToMap(getNextWaveChart());
|
||||||
}
|
}
|
||||||
|
|
||||||
static String getNextWaveChart() {
|
static String getNextWaveChart() {
|
||||||
IoUtil.sendCommand("reset_wave_chart");
|
IoUtil.sendCommand("reset_wave_chart");
|
||||||
String result = getWaveChart();
|
String result = getEngineChart();
|
||||||
FileLog.MAIN.logLine("current chart: " + result);
|
FileLog.MAIN.logLine("current chart: " + result);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -120,24 +120,24 @@ public class TestingUtils {
|
||||||
*
|
*
|
||||||
* @return next wave chart in the I/O pipeline
|
* @return next wave chart in the I/O pipeline
|
||||||
*/
|
*/
|
||||||
private static String getWaveChart() {
|
private static String getEngineChart() {
|
||||||
final CountDownLatch waveChartLatch = new CountDownLatch(1);
|
final CountDownLatch engineChartLatch = new CountDownLatch(1);
|
||||||
|
|
||||||
final AtomicReference<String> result = new AtomicReference<>();
|
final AtomicReference<String> result = new AtomicReference<>();
|
||||||
|
|
||||||
FileLog.MAIN.logLine("waiting for next chart");
|
FileLog.MAIN.logLine("waiting for next chart");
|
||||||
LinkManager.engineState.replaceStringValueAction(WaveReport.WAVE_CHART, new EngineState.ValueCallback<String>() {
|
LinkManager.engineState.replaceStringValueAction(EngineReport.ENGINE_CHART, new EngineState.ValueCallback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onUpdate(String value) {
|
public void onUpdate(String value) {
|
||||||
waveChartLatch.countDown();
|
engineChartLatch.countDown();
|
||||||
result.set(value);
|
result.set(value);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
int timeout = 60;
|
int timeout = 60;
|
||||||
long waitStartTime = System.currentTimeMillis();
|
long waitStartTime = System.currentTimeMillis();
|
||||||
IoUtil.wait(waveChartLatch, timeout);
|
IoUtil.wait(engineChartLatch, timeout);
|
||||||
FileLog.MAIN.logLine("got next chart in " + (System.currentTimeMillis() - waitStartTime) + "ms for engine_type " + AutoTest.currentEngineType);
|
FileLog.MAIN.logLine("got next chart in " + (System.currentTimeMillis() - waitStartTime) + "ms for engine_type " + AutoTest.currentEngineType);
|
||||||
LinkManager.engineState.replaceStringValueAction(WaveReport.WAVE_CHART, (EngineState.ValueCallback<String>) EngineState.ValueCallback.VOID);
|
LinkManager.engineState.replaceStringValueAction(EngineReport.ENGINE_CHART, (EngineState.ValueCallback<String>) EngineState.ValueCallback.VOID);
|
||||||
if (result.get() == null)
|
if (result.get() == null)
|
||||||
throw new IllegalStateException("Chart timeout: " + timeout);
|
throw new IllegalStateException("Chart timeout: " + timeout);
|
||||||
return result.get();
|
return result.get();
|
||||||
|
|
|
@ -3,7 +3,6 @@ package com.rusefi.core;
|
||||||
import com.rusefi.FileLog;
|
import com.rusefi.FileLog;
|
||||||
import com.rusefi.SensorConversion;
|
import com.rusefi.SensorConversion;
|
||||||
import com.rusefi.io.LinkManager;
|
import com.rusefi.io.LinkManager;
|
||||||
import com.rusefi.waves.WaveReport;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
|
|
@ -2,7 +2,7 @@ package com.rusefi.core;
|
||||||
|
|
||||||
import com.rusefi.CyclicBuffer;
|
import com.rusefi.CyclicBuffer;
|
||||||
import com.rusefi.SensorConversion;
|
import com.rusefi.SensorConversion;
|
||||||
import com.rusefi.waves.WaveReport;
|
import com.rusefi.waves.EngineReport;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 7/26/13
|
* 7/26/13
|
||||||
|
@ -59,7 +59,7 @@ public class SensorStats {
|
||||||
SensorCentral.getInstance().addListener(input1, new SensorCentral.SensorListener() {
|
SensorCentral.getInstance().addListener(input1, new SensorCentral.SensorListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onSensorUpdate(double value) {
|
public void onSensorUpdate(double value) {
|
||||||
double valueMs = 1.0 * (value - SensorCentral.getInstance().getValue(input2)) / WaveReport.SYS_TICKS_PER_MS;
|
double valueMs = 1.0 * (value - SensorCentral.getInstance().getValue(input2)) / EngineReport.SYS_TICKS_PER_MS;
|
||||||
SensorCentral.getInstance().setValue(valueMs, destination);
|
SensorCentral.getInstance().setValue(valueMs, destination);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -3,16 +3,16 @@ package com.rusefi.waves;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A collection of {@link WaveReport}
|
* A collection of {@link EngineReport}
|
||||||
* <p/>
|
* <p/>
|
||||||
* <p/>
|
* <p/>
|
||||||
*
|
*
|
||||||
* @see WaveChartParser
|
* @see EngineChartParser
|
||||||
* <p/>
|
* <p/>
|
||||||
* Date: 3/17/14
|
* Date: 3/17/14
|
||||||
* (c) Andrey Belomutskiy
|
* (c) Andrey Belomutskiy
|
||||||
*/
|
*/
|
||||||
public class WaveChart {
|
public class EngineChart {
|
||||||
// todo: merge with NameUtil
|
// todo: merge with NameUtil
|
||||||
public static final String INJECTOR_1 = "i1";
|
public static final String INJECTOR_1 = "i1";
|
||||||
public static final String INJECTOR_2 = "i2";
|
public static final String INJECTOR_2 = "i2";
|
||||||
|
@ -33,7 +33,7 @@ public class WaveChart {
|
||||||
|
|
||||||
public final Map<String, StringBuilder> map;
|
public final Map<String, StringBuilder> map;
|
||||||
|
|
||||||
public WaveChart(Map<String, StringBuilder> map) {
|
public EngineChart(Map<String, StringBuilder> map) {
|
||||||
this.map = map;
|
this.map = map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ public class WaveChart {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "WaveChart{" +
|
return "EngineChart{" +
|
||||||
"size=" + map.size() +
|
"size=" + map.size() +
|
||||||
'}';
|
'}';
|
||||||
}
|
}
|
|
@ -9,13 +9,13 @@ import java.util.Map;
|
||||||
* 1/26/14
|
* 1/26/14
|
||||||
* Andrey Belomutskiy (c) 2012-2014
|
* Andrey Belomutskiy (c) 2012-2014
|
||||||
*/
|
*/
|
||||||
public class WaveChartParser {
|
public class EngineChartParser {
|
||||||
private static final String DELI = "!";
|
private static final String DELI = "!";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method unpacks a mixed-key message into a Map of messages by key
|
* This method unpacks a mixed-key message into a Map of messages by key
|
||||||
*/
|
*/
|
||||||
public static WaveChart unpackToMap(String value) {
|
public static EngineChart unpackToMap(String value) {
|
||||||
if (value == null)
|
if (value == null)
|
||||||
throw new NullPointerException("value");
|
throw new NullPointerException("value");
|
||||||
FileLog.MAIN.logLine(": " + value);
|
FileLog.MAIN.logLine(": " + value);
|
||||||
|
@ -40,6 +40,6 @@ public class WaveChartParser {
|
||||||
sb.append(signal).append(DELI).append(val).append(DELI);
|
sb.append(signal).append(DELI).append(val).append(DELI);
|
||||||
index += 3;
|
index += 3;
|
||||||
}
|
}
|
||||||
return new WaveChart(map);
|
return new EngineChart(map);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -15,9 +15,9 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* @see com.rusefi.AnalogChartPanel.AnalogChart
|
* @see com.rusefi.AnalogChartPanel.AnalogChart
|
||||||
*/
|
*/
|
||||||
public class WaveReport implements TimeAxisTranslator {
|
public class EngineReport implements TimeAxisTranslator {
|
||||||
public static final String WAVE_CHART = "wave_chart";
|
public static final String ENGINE_CHART = "wave_chart";
|
||||||
public static final WaveReport MOCK = new WaveReport(Collections.singletonList(new UpDown(0, -1, 1, -1)));
|
public static final EngineReport MOCK = new EngineReport(Collections.singletonList(new UpDown(0, -1, 1, -1)));
|
||||||
/**
|
/**
|
||||||
* number of ChibiOS systicks per ms
|
* number of ChibiOS systicks per ms
|
||||||
*/
|
*/
|
||||||
|
@ -34,11 +34,11 @@ public class WaveReport implements TimeAxisTranslator {
|
||||||
*/
|
*/
|
||||||
private int minTime;
|
private int minTime;
|
||||||
|
|
||||||
public WaveReport(String report) {
|
public EngineReport(String report) {
|
||||||
this(parse(report));
|
this(parse(report));
|
||||||
}
|
}
|
||||||
|
|
||||||
public WaveReport(List<UpDown> list) {
|
public EngineReport(List<UpDown> list) {
|
||||||
this.list = list;
|
this.list = list;
|
||||||
if (!list.isEmpty()) {
|
if (!list.isEmpty()) {
|
||||||
minTime = list.get(0).upTime;
|
minTime = list.get(0).upTime;
|
||||||
|
@ -137,7 +137,7 @@ public class WaveReport implements TimeAxisTranslator {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "WaveReport{" +
|
return "EngineReport{" +
|
||||||
"size=" + list.size() +
|
"size=" + list.size() +
|
||||||
", maxTime=" + maxTime +
|
", maxTime=" + maxTime +
|
||||||
", minTime=" + minTime +
|
", minTime=" + minTime +
|
|
@ -61,7 +61,7 @@ public class RevolutionLog {
|
||||||
double diff = time - entry.getKey();
|
double diff = time - entry.getKey();
|
||||||
|
|
||||||
Integer rpm = entry.getValue();
|
Integer rpm = entry.getValue();
|
||||||
double timeForRevolution = 60000 * WaveReport.SYS_TICKS_PER_MS / rpm;
|
double timeForRevolution = 60000 * EngineReport.SYS_TICKS_PER_MS / rpm;
|
||||||
|
|
||||||
return 360.0 * diff / timeForRevolution;
|
return 360.0 * diff / timeForRevolution;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
package com.rusefi.waves.test;
|
||||||
|
|
||||||
|
import com.rusefi.waves.EngineChart;
|
||||||
|
import com.rusefi.waves.EngineReport;
|
||||||
|
import com.rusefi.waves.RevolutionLog;
|
||||||
|
import com.rusefi.waves.EngineChartParser;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.rusefi.waves.EngineReport.isCloseEnough;
|
||||||
|
import static junit.framework.Assert.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1/26/14
|
||||||
|
* Andrey Belomutskiy (c) 2012-2014
|
||||||
|
*/
|
||||||
|
public class EngineChartParserTest {
|
||||||
|
@Test
|
||||||
|
public void testMultiParser() {
|
||||||
|
EngineChart result = EngineChartParser.unpackToMap("");
|
||||||
|
assertTrue(result.getMap().isEmpty());
|
||||||
|
|
||||||
|
result = EngineChartParser.unpackToMap("wave_chart,c1!u_154!0!c1!d_155!11!c1!u_156!24!spa5!u!36!c1!d_157!39!c1!u_158!49!c1!d_159!61!c1!u_160!74!c1!d_161!86!c1!u_162!99!c1!d_163!111!c1!u_164!124!");
|
||||||
|
assertEquals(3, result.getMap().size());
|
||||||
|
|
||||||
|
String crankReport = result.get("c1").toString();
|
||||||
|
|
||||||
|
List<EngineReport.UpDown> list = EngineReport.parse(crankReport);
|
||||||
|
assertEquals(4, list.size());
|
||||||
|
|
||||||
|
EngineReport.UpDown upDown = list.get(0);
|
||||||
|
assertEquals(24, upDown.upTime);
|
||||||
|
assertEquals(156, upDown.upIndex);
|
||||||
|
|
||||||
|
assertEquals(39, upDown.downTime);
|
||||||
|
assertEquals(157, upDown.downIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDutyCycle() {
|
||||||
|
EngineChart result = EngineChartParser.unpackToMap("r!1199!64224414!crank2!u!64225149_3!Injector 2!u!64225149!Spark 1!u!64225249!Injector 2!d!64225303!Spark 1!d!64225649!crank2!d!64226105_4!crank!d!64226980_5!crank2!u!64227730_6!Injector 1!u!64227730!Spark 1!u!64227830!Injector 1!d!64227884!Spark 1!d!64228230!crank2!d!64228678_7!crank2!u!64230212_8!Injector 3!u!64230212!Spark 1!u!64230312!Injector 3!d!64230366!Spark 1!d!64230712!crank2!d!64231156_9!crank!u!64231982_0!crank2!u!64232672_1!Injector 4!u!64232672!Spark 1!u!64232772!Injector 4!d!64232826!Spark 1!d!64233172!crank2!d!64233626_2!r!1200!64234412!crank2!u!64235150_3!Injector 2!u!64235150!Spark 1!u!64235250!Injector 2!d!64235304!Spark 1!d!64235650!crank2!d!64236106_4!crank!d!64236981_5!crank2!u!64237730_6!Injector 1!u!64237730!Spark 1!u!64237830!Injector 1!d!64237884!Spark 1!d!64238230!crank2!d!64238677_7!crank2!u!64240213_8!Injector 3!u!64240213!Spark 1!u!64240313!Injector 3!d!64240367!Spark 1!d!64240713!crank2!d!64241158_9!crank!u!64241982_0!crank2!u!64242674_1!Injector 4!u!64242674!Spark 1!u!64242774!Injector 4!d!64242828!Spark 1!d!64243174!crank2!d!64243625_2!r!1200!64244412!crank2!u!64245149_3!Injector 2!u!64245149!Spark 1!u!64245249!Injector 2!d!64245303!Spark 1!d!64245649!crank2!d!64246106_4!crank!d!64246980_5!crank2!u!64247728_6!Injector 1!u!64247728!Spark 1!u!64247828!Injector 1!d!64247882!Spark 1!d!64248228!crank2!d!64248679_7!crank2!u!64250212_8!Injector 3!u!64250212!Spark 1!u!64250312!Injector 3!d!64250366!Spark 1!d!64250712!crank2!d!64251158_9!crank!u!64251982_0!crank2!u!64252674_1!Injector 4!u!64252674!Spark 1!u!64252774!Injector 4!d!64252828!Spark 1!d!64253174!crank2!d!64253625_2!r!1200!64254412!crank2!u!64255150_3!Injector 2!u!64255150!Spark 1!u!64255250!Injector 2!d!64255304!Spark 1!d!64255650!crank2!d!64256106_4!crank!d!64256982_5!crank2!u!64257728_6!Injector 1!u!64257728!Spark 1!u!64257828!Injector 1!d!64257882!Spark 1!d!64258228!crank2!d!64258678_7!crank2!u!64260214_8!Injector 3!u!64260214!Spark 1!u!64260314!Injector 3!d!64260368!Spark 1!d!64260714!,");
|
||||||
|
assertFalse(result.getMap().isEmpty());
|
||||||
|
|
||||||
|
StringBuilder revolutions = result.get(RevolutionLog.TOP_DEAD_CENTER_MESSAGE);
|
||||||
|
|
||||||
|
RevolutionLog rl = RevolutionLog.parseRevolutions(revolutions);
|
||||||
|
|
||||||
|
StringBuilder inj1 = result.get("Injector 1");
|
||||||
|
EngineReport wr = new EngineReport(inj1.toString());
|
||||||
|
|
||||||
|
for (EngineReport.UpDown ud : wr.getList()) {
|
||||||
|
assertTrue(isCloseEnough(238.75, rl.getCrankAngleByTime(ud.upTime)));
|
||||||
|
|
||||||
|
assertTrue(ud.getDutyCycle(rl) + "", isCloseEnough(0.0307, ud.getDutyCycle(rl)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpOnly() {
|
||||||
|
List<EngineReport.UpDown> list = EngineReport.parse("up!15500!u!25500!u!35500!u!45500!u!55500!u!65500!u!75500!u!85500!");
|
||||||
|
assertEquals(0, list.size());
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
package com.rusefi.waves.test;
|
package com.rusefi.waves.test;
|
||||||
|
|
||||||
import com.rusefi.waves.WaveReport;
|
import com.rusefi.waves.EngineReport;
|
||||||
import com.rusefi.waves.ZoomProvider;
|
import com.rusefi.waves.ZoomProvider;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
@ -10,12 +10,12 @@ import static junit.framework.Assert.assertEquals;
|
||||||
* Date: 6/23/13
|
* Date: 6/23/13
|
||||||
* (c) Andrey Belomutskiy
|
* (c) Andrey Belomutskiy
|
||||||
*/
|
*/
|
||||||
public class WaveReportTest {
|
public class EngineReportTest {
|
||||||
public static final String report = "u!14679!d!15991!u!16823!d!18134!u!18965!d!20278!u!21108!d!22420!u!23251!d!24563!u!25394!d!26706!u!27536!d!28850!u!29678!d!30991!u!31822!d!33134!u!33965!d!35277!u!36108!d!37420!u!38251!d!39563!u!40394!d!41706!u!42537!d!43849!";
|
public static final String report = "u!14679!d!15991!u!16823!d!18134!u!18965!d!20278!u!21108!d!22420!u!23251!d!24563!u!25394!d!26706!u!27536!d!28850!u!29678!d!30991!u!31822!d!33134!u!33965!d!35277!u!36108!d!37420!u!38251!d!39563!u!40394!d!41706!u!42537!d!43849!";
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testParse() {
|
public void testParse() {
|
||||||
WaveReport wr = new WaveReport(report);
|
EngineReport wr = new EngineReport(report);
|
||||||
assertEquals(14, wr.getList().size());
|
assertEquals(14, wr.getList().size());
|
||||||
|
|
||||||
assertEquals(14679, wr.getMinTime());
|
assertEquals(14679, wr.getMinTime());
|
|
@ -1,64 +0,0 @@
|
||||||
package com.rusefi.waves.test;
|
|
||||||
|
|
||||||
import com.rusefi.waves.RevolutionLog;
|
|
||||||
import com.rusefi.waves.WaveChart;
|
|
||||||
import com.rusefi.waves.WaveChartParser;
|
|
||||||
import com.rusefi.waves.WaveReport;
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static com.rusefi.waves.WaveReport.isCloseEnough;
|
|
||||||
import static junit.framework.Assert.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 1/26/14
|
|
||||||
* Andrey Belomutskiy (c) 2012-2014
|
|
||||||
*/
|
|
||||||
public class WaveChartParserTest {
|
|
||||||
@Test
|
|
||||||
public void testMultiParser() {
|
|
||||||
WaveChart result = WaveChartParser.unpackToMap("");
|
|
||||||
assertTrue(result.getMap().isEmpty());
|
|
||||||
|
|
||||||
result = WaveChartParser.unpackToMap("wave_chart,c1!u_154!0!c1!d_155!11!c1!u_156!24!spa5!u!36!c1!d_157!39!c1!u_158!49!c1!d_159!61!c1!u_160!74!c1!d_161!86!c1!u_162!99!c1!d_163!111!c1!u_164!124!");
|
|
||||||
assertEquals(3, result.getMap().size());
|
|
||||||
|
|
||||||
String crankReport = result.get("c1").toString();
|
|
||||||
|
|
||||||
List<WaveReport.UpDown> list = WaveReport.parse(crankReport);
|
|
||||||
assertEquals(4, list.size());
|
|
||||||
|
|
||||||
WaveReport.UpDown upDown = list.get(0);
|
|
||||||
assertEquals(24, upDown.upTime);
|
|
||||||
assertEquals(156, upDown.upIndex);
|
|
||||||
|
|
||||||
assertEquals(39, upDown.downTime);
|
|
||||||
assertEquals(157, upDown.downIndex);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testDutyCycle() {
|
|
||||||
WaveChart result = WaveChartParser.unpackToMap("r!1199!64224414!crank2!u!64225149_3!Injector 2!u!64225149!Spark 1!u!64225249!Injector 2!d!64225303!Spark 1!d!64225649!crank2!d!64226105_4!crank!d!64226980_5!crank2!u!64227730_6!Injector 1!u!64227730!Spark 1!u!64227830!Injector 1!d!64227884!Spark 1!d!64228230!crank2!d!64228678_7!crank2!u!64230212_8!Injector 3!u!64230212!Spark 1!u!64230312!Injector 3!d!64230366!Spark 1!d!64230712!crank2!d!64231156_9!crank!u!64231982_0!crank2!u!64232672_1!Injector 4!u!64232672!Spark 1!u!64232772!Injector 4!d!64232826!Spark 1!d!64233172!crank2!d!64233626_2!r!1200!64234412!crank2!u!64235150_3!Injector 2!u!64235150!Spark 1!u!64235250!Injector 2!d!64235304!Spark 1!d!64235650!crank2!d!64236106_4!crank!d!64236981_5!crank2!u!64237730_6!Injector 1!u!64237730!Spark 1!u!64237830!Injector 1!d!64237884!Spark 1!d!64238230!crank2!d!64238677_7!crank2!u!64240213_8!Injector 3!u!64240213!Spark 1!u!64240313!Injector 3!d!64240367!Spark 1!d!64240713!crank2!d!64241158_9!crank!u!64241982_0!crank2!u!64242674_1!Injector 4!u!64242674!Spark 1!u!64242774!Injector 4!d!64242828!Spark 1!d!64243174!crank2!d!64243625_2!r!1200!64244412!crank2!u!64245149_3!Injector 2!u!64245149!Spark 1!u!64245249!Injector 2!d!64245303!Spark 1!d!64245649!crank2!d!64246106_4!crank!d!64246980_5!crank2!u!64247728_6!Injector 1!u!64247728!Spark 1!u!64247828!Injector 1!d!64247882!Spark 1!d!64248228!crank2!d!64248679_7!crank2!u!64250212_8!Injector 3!u!64250212!Spark 1!u!64250312!Injector 3!d!64250366!Spark 1!d!64250712!crank2!d!64251158_9!crank!u!64251982_0!crank2!u!64252674_1!Injector 4!u!64252674!Spark 1!u!64252774!Injector 4!d!64252828!Spark 1!d!64253174!crank2!d!64253625_2!r!1200!64254412!crank2!u!64255150_3!Injector 2!u!64255150!Spark 1!u!64255250!Injector 2!d!64255304!Spark 1!d!64255650!crank2!d!64256106_4!crank!d!64256982_5!crank2!u!64257728_6!Injector 1!u!64257728!Spark 1!u!64257828!Injector 1!d!64257882!Spark 1!d!64258228!crank2!d!64258678_7!crank2!u!64260214_8!Injector 3!u!64260214!Spark 1!u!64260314!Injector 3!d!64260368!Spark 1!d!64260714!,");
|
|
||||||
assertFalse(result.getMap().isEmpty());
|
|
||||||
|
|
||||||
StringBuilder revolutions = result.get(RevolutionLog.TOP_DEAD_CENTER_MESSAGE);
|
|
||||||
|
|
||||||
RevolutionLog rl = RevolutionLog.parseRevolutions(revolutions);
|
|
||||||
|
|
||||||
StringBuilder inj1 = result.get("Injector 1");
|
|
||||||
WaveReport wr = new WaveReport(inj1.toString());
|
|
||||||
|
|
||||||
for (WaveReport.UpDown ud : wr.getList()) {
|
|
||||||
assertTrue(isCloseEnough(238.75, rl.getCrankAngleByTime(ud.upTime)));
|
|
||||||
|
|
||||||
assertTrue(ud.getDutyCycle(rl) + "", isCloseEnough(0.0307, ud.getDutyCycle(rl)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testUpOnly() {
|
|
||||||
List<WaveReport.UpDown> list = WaveReport.parse("up!15500!u!25500!u!35500!u!45500!u!55500!u!65500!u!75500!u!85500!");
|
|
||||||
assertEquals(0, list.size());
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -13,10 +13,10 @@ import com.rusefi.ui.storage.Node;
|
||||||
import com.rusefi.ui.util.UiUtils;
|
import com.rusefi.ui.util.UiUtils;
|
||||||
import com.rusefi.ui.widgets.AnyCommand;
|
import com.rusefi.ui.widgets.AnyCommand;
|
||||||
import com.rusefi.ui.util.URLLabel;
|
import com.rusefi.ui.util.URLLabel;
|
||||||
|
import com.rusefi.waves.EngineChart;
|
||||||
|
import com.rusefi.waves.EngineReport;
|
||||||
import com.rusefi.waves.RevolutionLog;
|
import com.rusefi.waves.RevolutionLog;
|
||||||
import com.rusefi.waves.WaveChart;
|
import com.rusefi.waves.EngineChartParser;
|
||||||
import com.rusefi.waves.WaveChartParser;
|
|
||||||
import com.rusefi.waves.WaveReport;
|
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
@ -96,7 +96,7 @@ public class EngineSnifferPanel {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
for (UpDownImage image : images.values())
|
for (UpDownImage image : images.values())
|
||||||
image.setWaveReport(WaveReport.MOCK, null);
|
image.setWaveReport(EngineReport.MOCK, null);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ public class EngineSnifferPanel {
|
||||||
// createSecondaryImage("input2 E5");
|
// createSecondaryImage("input2 E5");
|
||||||
//
|
//
|
||||||
|
|
||||||
LinkManager.engineState.registerStringValueAction(WaveReport.WAVE_CHART, new EngineState.ValueCallback<String>() {
|
LinkManager.engineState.registerStringValueAction(EngineReport.ENGINE_CHART, new EngineState.ValueCallback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onUpdate(String value) {
|
public void onUpdate(String value) {
|
||||||
if (isPaused)
|
if (isPaused)
|
||||||
|
@ -188,7 +188,7 @@ public class EngineSnifferPanel {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void displayChart(String value) {
|
public void displayChart(String value) {
|
||||||
WaveChart map = WaveChartParser.unpackToMap(value);
|
EngineChart map = EngineChartParser.unpackToMap(value);
|
||||||
|
|
||||||
StringBuilder revolutions = map.get(RevolutionLog.TOP_DEAD_CENTER_MESSAGE);
|
StringBuilder revolutions = map.get(RevolutionLog.TOP_DEAD_CENTER_MESSAGE);
|
||||||
|
|
||||||
|
@ -210,8 +210,8 @@ public class EngineSnifferPanel {
|
||||||
String report = sb == null ? "" : sb.toString();
|
String report = sb == null ? "" : sb.toString();
|
||||||
|
|
||||||
image.setRevolutions(revolutions);
|
image.setRevolutions(revolutions);
|
||||||
List<WaveReport.UpDown> list = WaveReport.parse(report);
|
List<EngineReport.UpDown> list = EngineReport.parse(report);
|
||||||
WaveReport wr = new WaveReport(list);
|
EngineReport wr = new EngineReport(list);
|
||||||
image.setWaveReport(wr, revolutions);
|
image.setWaveReport(wr, revolutions);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package com.rusefi.ui.engine;
|
package com.rusefi.ui.engine;
|
||||||
|
|
||||||
import com.rusefi.waves.TimeAxisTranslator;
|
import com.rusefi.waves.TimeAxisTranslator;
|
||||||
import com.rusefi.waves.WaveReport;
|
import com.rusefi.waves.EngineReport;
|
||||||
import com.rusefi.waves.ZoomProvider;
|
import com.rusefi.waves.ZoomProvider;
|
||||||
import com.rusefi.waves.RevolutionLog;
|
import com.rusefi.waves.RevolutionLog;
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ public class EngineSnifferStatusPanel {
|
||||||
private final JLabel timeLabel = new JLabel();
|
private final JLabel timeLabel = new JLabel();
|
||||||
private final JLabel angleLabel = new JLabel();
|
private final JLabel angleLabel = new JLabel();
|
||||||
private final JLabel rpmLabel = new JLabel();
|
private final JLabel rpmLabel = new JLabel();
|
||||||
private TimeAxisTranslator translator = WaveReport.MOCK;
|
private TimeAxisTranslator translator = EngineReport.MOCK;
|
||||||
|
|
||||||
private RevolutionLog time2rpm = RevolutionLog.parseRevolutions(null);
|
private RevolutionLog time2rpm = RevolutionLog.parseRevolutions(null);
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ import java.util.Map;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
|
||||||
|
|
||||||
// todo: merge with WaveChart
|
// todo: merge with EngineChart
|
||||||
public class NameUtil {
|
public class NameUtil {
|
||||||
/**
|
/**
|
||||||
* See also 'CRANK1' in rusEfi firmware code
|
* See also 'CRANK1' in rusEfi firmware code
|
||||||
|
|
|
@ -3,9 +3,9 @@ package com.rusefi.ui.engine;
|
||||||
import com.rusefi.core.Sensor;
|
import com.rusefi.core.Sensor;
|
||||||
import com.rusefi.core.SensorCentral;
|
import com.rusefi.core.SensorCentral;
|
||||||
import com.rusefi.ui.util.UiUtils;
|
import com.rusefi.ui.util.UiUtils;
|
||||||
|
import com.rusefi.waves.EngineReport;
|
||||||
import com.rusefi.waves.RevolutionLog;
|
import com.rusefi.waves.RevolutionLog;
|
||||||
import com.rusefi.waves.TimeAxisTranslator;
|
import com.rusefi.waves.TimeAxisTranslator;
|
||||||
import com.rusefi.waves.WaveReport;
|
|
||||||
import com.rusefi.waves.ZoomProvider;
|
import com.rusefi.waves.ZoomProvider;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
@ -18,14 +18,14 @@ import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is a renderer of an individual {@link WaveReport} - this makes a simple Logical Analyzer
|
* This is a renderer of an individual {@link EngineReport} - this makes a simple Logical Analyzer
|
||||||
* <p/>
|
* <p/>
|
||||||
* <p/>
|
* <p/>
|
||||||
* Date: 6/23/13
|
* Date: 6/23/13
|
||||||
* (c) Andrey Belomutskiy
|
* (c) Andrey Belomutskiy
|
||||||
*
|
*
|
||||||
* @see EngineSnifferPanel
|
* @see EngineSnifferPanel
|
||||||
* @see WaveReport
|
* @see EngineReport
|
||||||
*/
|
*/
|
||||||
public class UpDownImage extends JPanel {
|
public class UpDownImage extends JPanel {
|
||||||
private static final SimpleDateFormat FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss");
|
private static final SimpleDateFormat FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss");
|
||||||
|
@ -35,7 +35,7 @@ public class UpDownImage extends JPanel {
|
||||||
|
|
||||||
private long lastUpdateTime;
|
private long lastUpdateTime;
|
||||||
private ZoomProvider zoomProvider = ZoomProvider.DEFAULT;
|
private ZoomProvider zoomProvider = ZoomProvider.DEFAULT;
|
||||||
private WaveReport wr;
|
private EngineReport wr;
|
||||||
private StringBuilder revolutions;
|
private StringBuilder revolutions;
|
||||||
private final String name;
|
private final String name;
|
||||||
private TimeAxisTranslator translator;
|
private TimeAxisTranslator translator;
|
||||||
|
@ -50,7 +50,7 @@ public class UpDownImage extends JPanel {
|
||||||
});
|
});
|
||||||
|
|
||||||
public UpDownImage(final String name) {
|
public UpDownImage(final String name) {
|
||||||
this(WaveReport.MOCK, name);
|
this(EngineReport.MOCK, name);
|
||||||
setToolTip();
|
setToolTip();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ public class UpDownImage extends JPanel {
|
||||||
this.zoomProvider = zoomProvider;
|
this.zoomProvider = zoomProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
public UpDownImage(WaveReport wr, String name) {
|
public UpDownImage(EngineReport wr, String name) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
setWaveReport(wr, null);
|
setWaveReport(wr, null);
|
||||||
setOpaque(true);
|
setOpaque(true);
|
||||||
|
@ -106,7 +106,7 @@ public class UpDownImage extends JPanel {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setWaveReport(WaveReport wr, StringBuilder revolutions) {
|
public void setWaveReport(EngineReport wr, StringBuilder revolutions) {
|
||||||
this.wr = wr;
|
this.wr = wr;
|
||||||
propagateDwellIntoSensor(wr);
|
propagateDwellIntoSensor(wr);
|
||||||
this.revolutions = revolutions;
|
this.revolutions = revolutions;
|
||||||
|
@ -114,13 +114,13 @@ public class UpDownImage extends JPanel {
|
||||||
UiUtils.trueRepaint(this);
|
UiUtils.trueRepaint(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void propagateDwellIntoSensor(WaveReport wr) {
|
private void propagateDwellIntoSensor(EngineReport wr) {
|
||||||
Sensor sensor = NameUtil.name2sensor.get(name);
|
Sensor sensor = NameUtil.name2sensor.get(name);
|
||||||
if (sensor == null)
|
if (sensor == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!wr.getList().isEmpty()) {
|
if (!wr.getList().isEmpty()) {
|
||||||
WaveReport.UpDown last = wr.getList().get(wr.getList().size() - 1);
|
EngineReport.UpDown last = wr.getList().get(wr.getList().size() - 1);
|
||||||
SensorCentral.getInstance().setValue(last.getDuration(), sensor);
|
SensorCentral.getInstance().setValue(last.getDuration(), sensor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -134,7 +134,7 @@ public class UpDownImage extends JPanel {
|
||||||
g.setColor(getBackground());
|
g.setColor(getBackground());
|
||||||
g.fillRect(0, 0, d.width, d.height);
|
g.fillRect(0, 0, d.width, d.height);
|
||||||
|
|
||||||
for (WaveReport.UpDown upDown : wr.getList())
|
for (EngineReport.UpDown upDown : wr.getList())
|
||||||
paintUpDown(d, upDown, g);
|
paintUpDown(d, upDown, g);
|
||||||
|
|
||||||
paintScaleLines(g2, d);
|
paintScaleLines(g2, d);
|
||||||
|
@ -157,7 +157,7 @@ public class UpDownImage extends JPanel {
|
||||||
}
|
}
|
||||||
|
|
||||||
g.drawString("Tick length: " + duration + "; count=" + wr.getList().size(), 5, ++line * LINE_SIZE);
|
g.drawString("Tick length: " + duration + "; count=" + wr.getList().size(), 5, ++line * LINE_SIZE);
|
||||||
g.drawString("Total seconds: " + (duration / WaveReport.SYS_TICKS_PER_MS / 000.0), 5, ++line * LINE_SIZE);
|
g.drawString("Total seconds: " + (duration / EngineReport.SYS_TICKS_PER_MS / 000.0), 5, ++line * LINE_SIZE);
|
||||||
g.drawString(FORMAT.format(new Date(lastUpdateTime)), 5, ++line * LINE_SIZE);
|
g.drawString(FORMAT.format(new Date(lastUpdateTime)), 5, ++line * LINE_SIZE);
|
||||||
|
|
||||||
drawStartOfRevolution(g2, d);
|
drawStartOfRevolution(g2, d);
|
||||||
|
@ -184,11 +184,11 @@ public class UpDownImage extends JPanel {
|
||||||
* This method draws a vertical line every millisecond
|
* This method draws a vertical line every millisecond
|
||||||
*/
|
*/
|
||||||
private void paintScaleLines(Graphics2D g2, Dimension d) {
|
private void paintScaleLines(Graphics2D g2, Dimension d) {
|
||||||
int fromMs = translator.getMinTime() / WaveReport.mult;
|
int fromMs = translator.getMinTime() / EngineReport.mult;
|
||||||
g2.setStroke(LONG_STROKE);
|
g2.setStroke(LONG_STROKE);
|
||||||
g2.setColor(TIME_SCALE_COLOR);
|
g2.setColor(TIME_SCALE_COLOR);
|
||||||
|
|
||||||
int toMs = translator.getMaxTime() / WaveReport.mult;
|
int toMs = translator.getMaxTime() / EngineReport.mult;
|
||||||
|
|
||||||
if (toMs - fromMs > d.getWidth() / 5) {
|
if (toMs - fromMs > d.getWidth() / 5) {
|
||||||
/**
|
/**
|
||||||
|
@ -200,13 +200,13 @@ public class UpDownImage extends JPanel {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int ms = fromMs; ms <= toMs; ms++) {
|
for (int ms = fromMs; ms <= toMs; ms++) {
|
||||||
int tick = ms * WaveReport.mult;
|
int tick = ms * EngineReport.mult;
|
||||||
int x = translator.timeToScreen(tick, d.width, zoomProvider);
|
int x = translator.timeToScreen(tick, d.width, zoomProvider);
|
||||||
g2.drawLine(x, 0, x, d.height);
|
g2.drawLine(x, 0, x, d.height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void paintUpDown(Dimension d, WaveReport.UpDown upDown, Graphics g) {
|
private void paintUpDown(Dimension d, EngineReport.UpDown upDown, Graphics g) {
|
||||||
|
|
||||||
int x1 = translator.timeToScreen(upDown.upTime, d.width, zoomProvider);
|
int x1 = translator.timeToScreen(upDown.upTime, d.width, zoomProvider);
|
||||||
int x2 = translator.timeToScreen(upDown.downTime, d.width, zoomProvider);
|
int x2 = translator.timeToScreen(upDown.downTime, d.width, zoomProvider);
|
||||||
|
@ -226,7 +226,7 @@ public class UpDownImage extends JPanel {
|
||||||
g.drawLine(x2, y, x2, d.height);
|
g.drawLine(x2, y, x2, d.height);
|
||||||
|
|
||||||
g.setColor(Color.red);
|
g.setColor(Color.red);
|
||||||
String durationString = String.format(" %.2fms", upDown.getDuration() / WaveReport.SYS_TICKS_PER_MS);
|
String durationString = String.format(" %.2fms", upDown.getDuration() / EngineReport.SYS_TICKS_PER_MS);
|
||||||
|
|
||||||
g.drawString(durationString, x1, (int) (0.5 * d.height));
|
g.drawString(durationString, x1, (int) (0.5 * d.height));
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package com.rusefi.ui.engine.test;
|
package com.rusefi.ui.engine.test;
|
||||||
|
|
||||||
import com.rusefi.waves.WaveReport;
|
import com.rusefi.waves.EngineReport;
|
||||||
import com.rusefi.waves.test.WaveReportTest;
|
import com.rusefi.waves.test.EngineReportTest;
|
||||||
import com.rusefi.ui.util.FrameHelper;
|
import com.rusefi.ui.util.FrameHelper;
|
||||||
import com.rusefi.ui.engine.UpDownImage;
|
import com.rusefi.ui.engine.UpDownImage;
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ public class UpDownSandbox extends FrameHelper {
|
||||||
|
|
||||||
public UpDownSandbox() {
|
public UpDownSandbox() {
|
||||||
|
|
||||||
WaveReport wr = new WaveReport(WaveReportTest.report);
|
EngineReport wr = new EngineReport(EngineReportTest.report);
|
||||||
|
|
||||||
showFrame(new UpDownImage(wr, "test"));
|
showFrame(new UpDownImage(wr, "test"));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue