auto-sync

This commit is contained in:
rusEfi 2016-01-03 01:01:37 -05:00
parent 7d06f003ef
commit d2eb37c2f6
8 changed files with 69 additions and 53 deletions

View File

@ -86,9 +86,13 @@ typedef struct {
float rpmAcceleration; float rpmAcceleration;
float massAirFlowValue; float massAirFlowValue;
float veValue; // current volumetric efficiency, offset 112 float veValue; // current volumetric efficiency, offset 112
float deltaTps; /**
int triggerErrorsCounter; * TPS value delta within specified number of cycles
float currentEngineLoadAccelDelta; * See tpsAccelFuel
*/
float deltaTps; // offset 116
int triggerErrorsCounter; // offset 120
float engineLoadAccelDelta; // offset 124
float tpsAccelFuel; // offset 128 float tpsAccelFuel; // offset 128
float baroCorrection; float baroCorrection;
float pedalPosition; float pedalPosition;

View File

@ -593,25 +593,26 @@ void updateTunerStudioState(TunerStudioOutputChannels *tsOutputChannels DECLARE_
tsOutputChannels->manifold_air_pressure = getMap(); tsOutputChannels->manifold_air_pressure = getMap();
tsOutputChannels->engineLoad = engineLoad; tsOutputChannels->engineLoad = engineLoad;
tsOutputChannels->rpmAcceleration = engine->rpmCalculator.getRpmAcceleration(); tsOutputChannels->rpmAcceleration = engine->rpmCalculator.getRpmAcceleration();
tsOutputChannels->currentEngineLoadAccelDelta = engine->engineLoadAccelEnrichment.getEngineLoadEnrichment(PASS_ENGINE_PARAMETER_F) * 100 / getMap();
tsOutputChannels->tpsAccelFuel = engine->engineState.tpsAccelEnrich;
tsOutputChannels->deltaTps = engine->tpsAccelEnrichment.getDelta(); tsOutputChannels->deltaTps = engine->tpsAccelEnrichment.getDelta();
tsOutputChannels->triggerErrorsCounter = engine->triggerCentral.triggerState.totalTriggerErrorCounter; tsOutputChannels->triggerErrorsCounter = engine->triggerCentral.triggerState.totalTriggerErrorCounter;
tsOutputChannels->baroCorrection = engine->engineState.baroCorrection; tsOutputChannels->baroCorrection = engine->engineState.baroCorrection;
tsOutputChannels->pedalPosition = hasPedalPositionSensor(PASS_ENGINE_PARAMETER_F) ? getPedalPosition(PASS_ENGINE_PARAMETER_F) : 0; tsOutputChannels->pedalPosition = hasPedalPositionSensor(PASS_ENGINE_PARAMETER_F) ? getPedalPosition(PASS_ENGINE_PARAMETER_F) : 0;
tsOutputChannels->knockCount = engine->knockCount; tsOutputChannels->knockCount = engine->knockCount;
tsOutputChannels->knockLevel = engine->knockVolts; tsOutputChannels->knockLevel = engine->knockVolts;
tsOutputChannels->injectorDutyCycle = getInjectorDutyCycle(rpm PASS_ENGINE_PARAMETER);
tsOutputChannels->fuelTankGauge = engine->engineState.fuelTankGauge; tsOutputChannels->fuelTankGauge = engine->engineState.fuelTankGauge;
tsOutputChannels->hasFatalError = hasFirmwareError(); tsOutputChannels->hasFatalError = hasFirmwareError();
tsOutputChannels->totalTriggerErrorCounter = engine->triggerCentral.triggerState.totalTriggerErrorCounter; tsOutputChannels->totalTriggerErrorCounter = engine->triggerCentral.triggerState.totalTriggerErrorCounter;
tsOutputChannels->injectorDutyCycle = getInjectorDutyCycle(rpm PASS_ENGINE_PARAMETER);
tsOutputChannels->runningFuel = ENGINE(engineState.runningFuel);
tsOutputChannels->wallFuelAmount = wallFuel.getWallFuel(0); tsOutputChannels->wallFuelAmount = wallFuel.getWallFuel(0);
tsOutputChannels->wallFuelCorrection = engine->wallFuelCorrection;
tsOutputChannels->engineLoadAccelDelta = engine->engineLoadAccelEnrichment.getEngineLoadEnrichment(PASS_ENGINE_PARAMETER_F) * 100 / getMap();
tsOutputChannels->tpsAccelFuel = engine->engineState.tpsAccelEnrich;
tsOutputChannels->iatCorrection = ENGINE(engineState.iatFuelCorrection); tsOutputChannels->iatCorrection = ENGINE(engineState.iatFuelCorrection);
tsOutputChannels->cltCorrection = ENGINE(engineState.cltFuelCorrection); tsOutputChannels->cltCorrection = ENGINE(engineState.cltFuelCorrection);
tsOutputChannels->runningFuel = ENGINE(engineState.runningFuel);
tsOutputChannels->wallFuelCorrection = engine->wallFuelCorrection;
tsOutputChannels->checkEngine = hasErrorCodes(); tsOutputChannels->checkEngine = hasErrorCodes();
#if EFI_PROD_CODE || defined(__DOXYGEN__) #if EFI_PROD_CODE || defined(__DOXYGEN__)

View File

@ -137,18 +137,18 @@ public:
/** /**
* pre-calculated value from simple fuel lookup * pre-calculated value from simple fuel lookup
*/ */
float baseTableFuel; floatms_t baseTableFuel;
/** /**
* fuel regardless of fuel logic mode * fuel injection duration regardless of fuel logic mode
*/ */
float baseFuel; floatms_t baseFuel;
/** /**
* Fuel with CLT, IAT and TPS acceleration corrections. * Fuel with CLT, IAT and TPS acceleration corrections, as squirt duration.
*/ */
float runningFuel; floatms_t runningFuel;
float tpsAccelEnrich; floatms_t tpsAccelEnrich;
angle_t injectionOffset; angle_t injectionOffset;
}; };
@ -218,6 +218,9 @@ public:
* Fuel injection duration for current engine cycle, without wall wetting * Fuel injection duration for current engine cycle, without wall wetting
*/ */
floatms_t fuelMs; floatms_t fuelMs;
/**
* fuel injection time correction to account for wall wetting effect, for current cycle
*/
floatms_t wallFuelCorrection; floatms_t wallFuelCorrection;
/** /**

View File

@ -275,5 +275,5 @@ int getRusEfiVersion(void) {
return 123; // this is here to make the compiler happy about the unused array return 123; // this is here to make the compiler happy about the unused array
if (UNUSED_CCM_SIZE[0] * 0 != 0) if (UNUSED_CCM_SIZE[0] * 0 != 0)
return 3211; // this is here to make the compiler happy about the unused array return 3211; // this is here to make the compiler happy about the unused array
return 20160101; return 20160102;
} }

View File

@ -687,7 +687,7 @@ fileVersion = { 20151201 }
veValue = scalar, F32, 112, "ratio", 1, 0 veValue = scalar, F32, 112, "ratio", 1, 0
deltaTps = scalar, F32, 116, "ratio", 1, 0 deltaTps = scalar, F32, 116, "ratio", 1, 0
triggerErrorsCounter = scalar, U32,120, "counter", 1, 0 triggerErrorsCounter = scalar, U32,120, "counter", 1, 0
currentEngineLoadAccelDelta = scalar,F32, 124, "%", 1, 0 engineLoadAccelDelta = scalar,F32, 124, "%", 1, 0
tpsAccelFuel = scalar, F32, 128, "ms", 1, 0 tpsAccelFuel = scalar, F32, 128, "ms", 1, 0
baroCorrection = scalar, F32, 132, "%", 1, 0 baroCorrection = scalar, F32, 132, "%", 1, 0
pedalPosition = scalar, F32, 136, "%", 1, 0 pedalPosition = scalar, F32, 136, "%", 1, 0
@ -697,7 +697,7 @@ fileVersion = { 20151201 }
; knockLevel 152 ; knockLevel 152
; totalTriggerErrorCounter 156 ; totalTriggerErrorCounter 156
wallFuelAmount = scalar, F32, 160, "ms", 1, 0 wallFuelAmount = scalar, F32, 160, "ms", 1, 0
tempFuelCorrection = scalar, F32, 164, "%", 1, 0 iatCorrection = scalar, F32, 164, "%", 1, 0
wallFuelCorrection = scalar, F32, 168, "ms", 1, 0 wallFuelCorrection = scalar, F32, 168, "ms", 1, 0
curIdlePosition = scalar, F32, 172, "percent", 1, 0 curIdlePosition = scalar, F32, 172, "percent", 1, 0
egoCorrection = { 100 } egoCorrection = { 100 }
@ -896,9 +896,6 @@ fileVersion = { 20151201 }
tpsADCGauge = tpsADC, "tps ADC", "ADC", 0, 1024, 0, 0, 0, 0, 0, 0 tpsADCGauge = tpsADC, "tps ADC", "ADC", 0, 1024, 0, 0, 0, 0, 0, 0
atmPresCGauge = baroPressure, "Baro", "kPa", 0, 1024, 0, 0, 0, 0, 0, 0 atmPresCGauge = baroPressure, "Baro", "kPa", 0, 1024, 0, 0, 0, 0, 0, 0
mapGaugeValue = MAPValue, "MAP", "kPa", 0, 300, 10, 10, 200, 200, 0, 0 mapGaugeValue = MAPValue, "MAP", "kPa", 0, 300, 10, 10, 200, 200, 0, 0
pulseWidthGauge = pulseWidth, "final fuel squirt, per injection", "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 3, 1
baseFuelGauge = baseFuel, "Base fuel duration, before corr", "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 3, 1
crankingFuelGauge = crankingFuel, "crank Width", "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 3, 1
ignadvGauge = ign_adv, "Ignition Advance 1", "degrees", -100, 100, -999, -999, 999, 999, 1, 1 ignadvGauge = ign_adv, "Ignition Advance 1", "degrees", -100, 100, -999, -999, 999, 999, 1, 1
; warmupEnrichGauge = warmupEnrich, "Warmup Enrichment", "%", 100, 150, -1, -1, 101, 105, 0, 0 ; warmupEnrichGauge = warmupEnrich, "Warmup Enrichment", "%", 100, 150, -1, -1, 101, 105, 0, 0
; accelEnrichGauge = accDecEnrich, "Accel Enrich", "%", 50, 150, -1, -1, 999, 999, 0, 0 ; accelEnrichGauge = accDecEnrich, "Accel Enrich", "%", 50, 150, -1, -1, 999, 999, 0, 0
@ -912,22 +909,27 @@ fileVersion = { 20151201 }
egt7Gauge = egt7, "EGT#7", "C", 0, 2000 egt7Gauge = egt7, "EGT#7", "C", 0, 2000
egt8Gauge = egt8, "EGT#8", "C", 0, 2000 egt8Gauge = egt8, "EGT#8", "C", 0, 2000
vssGauge = vehicleSpeedKph, "Speed", "kmh", 0, 200, 0, 1, 3, 4, 1, 1 vssGauge = vehicleSpeedKph, "Speed", "kmh", 0, 200, 0, 1, 3, 4, 1, 1
rpmAccelerationGa = rpmAcceleration, "rpm d", "dRpm", 0, 3, 0, 1, 3, 4, 1, 1 rpmAccelerationGa = rpmAcceleration, "rpm delta", "dRpm", 0, 3, 0, 1, 3, 4, 1, 1
massAirFlowValueGa = massAirFlowValue,"Air Flow", "kg/hr", 0, 50, -999, -999, 999, 999, 1, 1 massAirFlowValueGa = massAirFlowValue,"Air Flow", "kg/hr", 0, 50, -999, -999, 999, 999, 1, 1
veValueGauge = veValue, "%", "", 0, 120, 10, 10, 100, 100, 1, 1 veValueGauge = veValue, "%", "", 0, 120, 10, 10, 100, 100, 1, 1
deltaTpsGauge = deltaTps, "%", "", 0, 120, 10, 10, 100, 100, 1, 1 deltaTpsGauge = deltaTps, "%", "", 0, 120, 10, 10, 100, 100, 1, 1
; minDeltaGauge = minDelta, "%", "", 0, 120, 10, 10, 100, 100, 1, 1
currentEngineLoadAccelDeltaGauge = currentEngineLoadAccelDelta,"EL enrich","%", 0, 120, 10, 10, 100, 100, 1, 1
tpsAccelFuelGauge = tpsAccelFuel,"TPS enrich", "ms", 0, 120, 10, 10, 100, 100, 1, 1
baroCorrectionGauge = baroCorrection,"BaroCorr", "%", 0, 120, 10, 10, 100, 100, 1, 1 baroCorrectionGauge = baroCorrection,"BaroCorr", "%", 0, 120, 10, 10, 100, 100, 1, 1
pedalPositionGauge = pedalPosition,"Pedal Position", "%", 0, 120, 10, 10, 100, 100, 1, 1 pedalPositionGauge = pedalPosition,"Pedal Position", "%", 0, 120, 10, 10, 100, 100, 1, 1
injectorDutyCycleGauge=injectorDutyCycle, "injectorDutyCycle","%", 0, 120, 10, 10, 100, 100, 1, 1
knockCountGauge = knockCount,"Knock count", "count", 0, 120, 10, 10, 100, 100, 1, 1 knockCountGauge = knockCount,"Knock count", "count", 0, 120, 10, 10, 100, 100, 1, 1
triggerErrorsCounterGauge = triggerErrorsCounter, "trg err", "count", 0, 15000, 0, 0, 6000, 6000, 0, 0 triggerErrorsCounterGauge = triggerErrorsCounter, "trg err", "count", 0, 15000, 0, 0, 6000, 6000, 0, 0
wallFuelAmountGauge = wallFuelAmount, "wall fuel", "ms", 0, 100, 0, 0, 100, 100, 0, 0
tempFuelCorrectionGauge = tempFuelCorrection, "temp fuel corr", "mult", 0, 10, 0, 0, 10, 10, 0, 0 pulseWidthGauge = pulseWidth, "fuel final squirt, per injection", "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 3, 1
wallFuelCorrectionGauge = wallFuelCorrection, "extra fuel", "ms", 0, 100, 0, 0, 100, 100, 0, 0 baseFuelGauge = baseFuel, "fuel: base duration, before corr", "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 3, 1
crankingFuelGauge = crankingFuel, "fuel: crank Width", "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 3, 1
iatCorrectionGauge = iatCorrection, "fuel: IAT corr", "mult", 0, 10, 0, 0, 10, 10, 0, 0
injectorDutyCycleGauge=injectorDutyCycle, "fuel: injectorDutyCycle","%", 0, 120, 10, 10, 100, 100, 1, 1
engineLoadAccelDeltaGauge = engineLoadAccelDelta,"fuel: load enrich","%", 0, 120, 10, 10, 100, 100, 1, 1
tpsAccelFuelGauge = tpsAccelFuel,"fuel: TPS enrich", "ms", 0, 120, 10, 10, 100, 100, 1, 1
wallFuelAmountGauge = wallFuelAmount, "fuel: wall amount", "ms", 0, 100, 0, 0, 100, 100, 0, 0
wallFuelCorrectionGauge = wallFuelCorrection, "fuel: wall correction extra", "ms", 0, 100, 0, 0, 100, 100, 0, 0
curIdlePositionGauge = curIdlePosition, "idle position", "%", 0, 100, 0, 0, 100, 100, 0, 0 curIdlePositionGauge = curIdlePosition, "idle position", "%", 0, 100, 0, 0, 100, 100, 0, 0
[FrontPage] [FrontPage]
@ -989,21 +991,24 @@ fileVersion = { 20151201 }
entry = AFRactual, "AFR", float, "%.2f" entry = AFRactual, "AFR", float, "%.2f"
entry = VBatt, "vBatt", float, "%.2f" entry = VBatt, "vBatt", float, "%.2f"
entry = engineLoad, "Load", float, "%d" entry = engineLoad, "Load", float, "%d"
entry = pulseWidth, "injPulse", float, "%.3f"
entry = baseFuel, "baseFuel", float, "%.2f"
entry = ign_adv, "ignAdv", float, "%.2f" entry = ign_adv, "ignAdv", float, "%.2f"
entry = vehicleSpeedKph, "speed", float, "%.2f" entry = vehicleSpeedKph, "speed", float, "%.2f"
entry = rpmAcceleration, "dRPM", float, "%.3f" entry = rpmAcceleration, "dRPM", float, "%.3f"
entry = massAirFlowValue,"Mass", float, "%.3f" entry = massAirFlowValue,"airMass", float, "%.3f"
entry = veValue, "ratio", float, "%.3f"
entry = currentEngineLoadAccelDelta, "accel",float, "%.3f"
entry = tpsAccelFuel, "tpsAccel", float, "%.3f"
entry = baroCorrection "baroCorrection",float,"%.3f"
entry = pedalPosition, "pedal", float, "%.3f" entry = pedalPosition, "pedal", float, "%.3f"
; entry
entry = triggerErrorsCounter, "trg err",int, "%d" entry = triggerErrorsCounter, "trg err",int, "%d"
entry = tempFuelCorrection, "temp fuel corr", float, "%.3f"
entry = wallFuelCorrection, "wall fuel corr ms", float, "%.3f" entry = pulseWidth, "injPulse", float, "%.3f"
entry = baseFuel, "fuel: base", float, "%.2f"
entry = veValue, "fuel: VE", float, "%.3f"
entry = engineLoadAccelDelta, "fuel: EL accel",float, "%.3f"
entry = tpsAccelFuel, "fuel: tpsAccel", float, "%.3f"
entry = iatCorrection, "fuel: IAT corr", float, "%.3f"
entry = wallFuelCorrection, "fuel: wall corr ms", float, "%.3f"
entry = wallFuelAmount, "fuel: wall amout", float, "%.3f"
entry = baroCorrection "baroCorrection",float,"%.3f"
; tpsADC = U16, "ADC", ; tpsADC = U16, "ADC",

View File

@ -65,14 +65,14 @@ public enum Sensor {
PERIOD0("Period", SensorCategory.SNIFFING, "dg", 0, 400), PERIOD0("Period", SensorCategory.SNIFFING, "dg", 0, 400),
DUTY0("Duty0", SensorCategory.SNIFFING, "%", 0, 100, BackgroundColor.RED), DUTY0("Duty0", SensorCategory.SNIFFING, "%", 0, 100, BackgroundColor.RED),
DUTY1("Duty1", SensorCategory.SNIFFING, "%", 0, 100, BackgroundColor.RED), DUTY1("Duty1", SensorCategory.SNIFFING, "%", 0, 100, BackgroundColor.RED),
FUEL("Fuel", SensorCategory.OPERATIONS, "ms", 0, 30), FUEL("Fuel", SensorCategory.FUEL, "ms", 0, 30),
FUEL_IAT("F IAT", SensorCategory.OPERATIONS, "", 0, 10), FUEL_IAT("F IAT", SensorCategory.FUEL, "", 0, 10),
FUEL_CLT("F CLT", SensorCategory.OPERATIONS, "", 0, 10), FUEL_CLT("F CLT", SensorCategory.FUEL, "", 0, 10),
FUEL_LAG("F Lag", SensorCategory.OPERATIONS, "", 0, 30), FUEL_LAG("F Lag", SensorCategory.FUEL, "", 0, 30),
IDLE_SWITCH("idle switch", SensorCategory.OTHERS), IDLE_SWITCH("idle switch", SensorCategory.OTHERS),
DEFAULT_FUEL("map fuel", SensorCategory.OPERATIONS, "ms", 0, 40), DEFAULT_FUEL("map fuel", SensorCategory.FUEL, "ms", 0, 40),
CHARTSIZE("CHARTSIZE", SensorCategory.OTHERS), CHARTSIZE("CHARTSIZE", SensorCategory.OTHERS),
CHART_STATUS("CHART_STATUS", SensorCategory.OTHERS), CHART_STATUS("CHART_STATUS", SensorCategory.OTHERS),
@ -85,16 +85,18 @@ public enum Sensor {
INJECTOR_3_DWELL("inj #3", SensorCategory.SNIFFING), INJECTOR_3_DWELL("inj #3", SensorCategory.SNIFFING),
INJECTOR_4_DWELL("inj #4", SensorCategory.SNIFFING), INJECTOR_4_DWELL("inj #4", SensorCategory.SNIFFING),
FUEL_BASE(SensorCategory.OPERATIONS, FieldType.FLOAT, 48, BackgroundColor.MUD, 0, 30, "ms"), FUEL_BASE(SensorCategory.FUEL, FieldType.FLOAT, 48, BackgroundColor.MUD, 0, 30, "ms"),
T_CHARGE(SensorCategory.OPERATIONS, FieldType.FLOAT, 52, BackgroundColor.MUD, 30, 140), T_CHARGE(SensorCategory.FUEL, FieldType.FLOAT, 52, BackgroundColor.MUD, 30, 140),
DWELL(SensorCategory.OPERATIONS, FieldType.FLOAT, 60, BackgroundColor.MUD, 1, 10), DWELL(SensorCategory.OPERATIONS, FieldType.FLOAT, 60, BackgroundColor.MUD, 1, 10),
CURRENT_VE(SensorCategory.OPERATIONS, FieldType.FLOAT, 112, BackgroundColor.MUD), CURRENT_VE(SensorCategory.FUEL, FieldType.FLOAT, 112, BackgroundColor.MUD),
MAP_ACCEL_DELTA(SensorCategory.OPERATIONS, FieldType.FLOAT, 124, BackgroundColor.MUD),
TPS_ACCEL_FUEL(SensorCategory.OPERATIONS, FieldType.FLOAT, 128, BackgroundColor.MUD), TPS_DELTA(SensorCategory.FUEL, FieldType.FLOAT, 116, BackgroundColor.MUD),
ENGINE_LOAD_ACCEL_DELTA(SensorCategory.FUEL, FieldType.FLOAT, 124, BackgroundColor.MUD),
TPS_ACCEL_FUEL(SensorCategory.FUEL, FieldType.FLOAT, 128, BackgroundColor.MUD),
Injector_duty(SensorCategory.OPERATIONS, FieldType.FLOAT, 140, BackgroundColor.MUD), Injector_duty(SensorCategory.OPERATIONS, FieldType.FLOAT, 140, BackgroundColor.MUD),
WALL_FUEL(SensorCategory.OPERATIONS, FieldType.FLOAT, 160, BackgroundColor.MUD), WALL_FUEL_AMOUNT(SensorCategory.FUEL, FieldType.FLOAT, 160, BackgroundColor.MUD),
iatCorrection(SensorCategory.OPERATIONS, FieldType.FLOAT, 164, BackgroundColor.MUD, 0, 5), iatCorrection(SensorCategory.FUEL, FieldType.FLOAT, 164, BackgroundColor.MUD, 0, 5),
wallFuelCorrection(SensorCategory.OPERATIONS, FieldType.FLOAT, 168, BackgroundColor.MUD), WALL_FUEL_CORRECTION(SensorCategory.FUEL, FieldType.FLOAT, 168, BackgroundColor.MUD),
idlePosition(SensorCategory.OPERATIONS, FieldType.FLOAT, 172, BackgroundColor.MUD), idlePosition(SensorCategory.OPERATIONS, FieldType.FLOAT, 172, BackgroundColor.MUD),
TARGET_AFR(SensorCategory.OPERATIONS, FieldType.FLOAT, 176, BackgroundColor.MUD), TARGET_AFR(SensorCategory.OPERATIONS, FieldType.FLOAT, 176, BackgroundColor.MUD),
CHARGE_AIR_MASS(SensorCategory.OPERATIONS, FieldType.FLOAT, 180, BackgroundColor.MUD), CHARGE_AIR_MASS(SensorCategory.OPERATIONS, FieldType.FLOAT, 180, BackgroundColor.MUD),

View File

@ -2,6 +2,7 @@ package com.rusefi.core;
public enum SensorCategory { public enum SensorCategory {
OPERATIONS("Operations"), OPERATIONS("Operations"),
FUEL("Fuel-related"),
SNIFFING("Sniffing"), SNIFFING("Sniffing"),
SENSOR_INPUTS("Sensor inputs"), SENSOR_INPUTS("Sensor inputs"),
OTHERS("Others"); OTHERS("Others");

View File

@ -32,7 +32,7 @@ import static com.rusefi.ui.storage.PersistentConfiguration.getConfig;
* @see EngineSnifferPanel * @see EngineSnifferPanel
*/ */
public class Launcher { public class Launcher {
public static final int CONSOLE_VERSION = 20151227; public static final int CONSOLE_VERSION = 20160102;
public static final boolean SHOW_STIMULATOR = false; public static final boolean SHOW_STIMULATOR = false;
private static final String TAB_INDEX = "main_tab"; private static final String TAB_INDEX = "main_tab";
protected static final String PORT_KEY = "port"; protected static final String PORT_KEY = "port";