auto-sync
This commit is contained in:
parent
fde0d4707d
commit
d861f21e17
|
@ -112,6 +112,10 @@ typedef struct {
|
|||
float currentTargetAfr; // 176
|
||||
float chargeAirMass; // 180
|
||||
float cltCorrection; // 184
|
||||
/**
|
||||
* @see actualLastInjection
|
||||
* without injector lag, see engine.h for details
|
||||
*/
|
||||
float runningFuel; // 188
|
||||
int debugIntField1; // 192
|
||||
float injectorLagMs; // 196
|
||||
|
|
|
@ -58,6 +58,8 @@
|
|||
#include "settings.h"
|
||||
#include "rusefi_outputs.h"
|
||||
|
||||
extern fuel_Map3D_t veMap;
|
||||
extern afr_Map3D_t afrMap;
|
||||
extern bool main_loop_started;
|
||||
|
||||
#if EFI_PROD_CODE || defined(__DOXYGEN__)
|
||||
|
@ -91,7 +93,8 @@ static void setWarningEnabled(int value) {
|
|||
}
|
||||
|
||||
#if EFI_FILE_LOGGING || defined(__DOXYGEN__)
|
||||
static LoggingWithStorage fileLogger("file logger");
|
||||
static char FILE_LOGGER[1000] CCM_OPTIONAL;
|
||||
static Logging fileLogger("file logger", FILE_LOGGER, sizeof(FILE_LOGGER));
|
||||
#endif /* EFI_FILE_LOGGING */
|
||||
|
||||
static int logFileLineIndex = 0;
|
||||
|
@ -150,40 +153,87 @@ static void printSensors(Logging *log, bool fileFormat) {
|
|||
// current time, in milliseconds
|
||||
int nowMs = currentTimeMillis();
|
||||
float sec = ((float) nowMs) / 1000;
|
||||
reportSensorF(log, fileFormat, "time", "", sec, 3);
|
||||
reportSensorF(log, fileFormat, "time", "", sec, 3); // log column 1
|
||||
|
||||
int rpm = 0;
|
||||
#if EFI_SHAFT_POSITION_INPUT || defined(__DOXYGEN__)
|
||||
rpm = getRpmE(engine);
|
||||
reportSensorI(log, fileFormat, "rpm", "RPM", rpm);
|
||||
reportSensorI(log, fileFormat, "rpm", "RPM", rpm); // log column 2
|
||||
|
||||
// reportSensorF(log, fileFormat, "TRG_0_DUTY", "%", getTriggerDutyCycle(0), 2);
|
||||
// reportSensorF(log, fileFormat, "TRG_1_DUTY", "%", getTriggerDutyCycle(1), 2);
|
||||
#endif
|
||||
|
||||
#if EFI_PROD_CODE || defined(__DOXYGEN__)
|
||||
reportSensorF(log, fileFormat, "int_temp", "C", getMCUInternalTemperature(), 2); // log column #3
|
||||
#endif
|
||||
|
||||
if (engineConfiguration->hasCltSensor) {
|
||||
reportSensorF(log, fileFormat, "CLT", "C", getCoolantTemperature(PASS_ENGINE_PARAMETER_F), 2); // log column #4
|
||||
}
|
||||
reportSensorF(log, fileFormat, "TPS", "%", getTPS(PASS_ENGINE_PARAMETER_F), 2); // log column #5
|
||||
|
||||
if (hasVBatt(PASS_ENGINE_PARAMETER_F)) {
|
||||
reportSensorF(log, fileFormat, "vbatt", "V", getVBatt(PASS_ENGINE_PARAMETER_F), 2); // log column #6
|
||||
}
|
||||
|
||||
reportSensorF(log, fileFormat, "IAT", "C", getIntakeAirTemperature(PASS_ENGINE_PARAMETER_F), 2); // log column #7
|
||||
|
||||
|
||||
if (hasMafSensor()) {
|
||||
reportSensorF(log, fileFormat, "maf", "V", getMaf(PASS_ENGINE_PARAMETER_F), 2);
|
||||
reportSensorF(log, fileFormat, "mafr", "kg/hr", getRealMaf(PASS_ENGINE_PARAMETER_F), 2);
|
||||
}
|
||||
|
||||
reportSensorF(log, fileFormat, "ENGINE_LOAD", "x", getEngineLoadT(PASS_ENGINE_PARAMETER_F), 2);
|
||||
|
||||
|
||||
|
||||
#if EFI_ANALOG_SENSORS || defined(__DOXYGEN__)
|
||||
if (engineConfiguration->hasMapSensor) {
|
||||
reportSensorF(log, fileFormat, "MAP", "kPa", getMap(), 2);
|
||||
// reportSensorF(log, fileFormat, "map_r", "V", getRawMap(), 2);
|
||||
}
|
||||
#endif /* EFI_ANALOG_SENSORS */
|
||||
#if EFI_ANALOG_SENSORS || defined(__DOXYGEN__)
|
||||
if (hasBaroSensor()) {
|
||||
reportSensorF(log, fileFormat, "baro", "kPa", getBaroPressure(), 2);
|
||||
}
|
||||
#endif /* EFI_ANALOG_SENSORS */
|
||||
|
||||
if (engineConfiguration->hasAfrSensor) {
|
||||
reportSensorF(log, fileFormat, "afr", "AFR", getAfr(PASS_ENGINE_PARAMETER_F), 2);
|
||||
}
|
||||
reportSensorF(log, fileFormat, "target", "AFR", engine->engineState.targetAFR, 2);
|
||||
|
||||
#endif
|
||||
if (fileFormat) {
|
||||
reportSensorF(log, fileFormat, "idle", "%", getIdlePosition(), 2);
|
||||
}
|
||||
|
||||
#if EFI_ANALOG_SENSORS || defined(__DOXYGEN__)
|
||||
reportSensorF(log, fileFormat, "target", "AFR", engine->engineState.targetAFR, 2);
|
||||
#endif /* EFI_ANALOG_SENSORS */
|
||||
|
||||
if (fileFormat) {
|
||||
reportSensorF(log, fileFormat, "tCharge", "K", engine->engineState.tChargeK, 2); // log column #8
|
||||
reportSensorF(log, fileFormat, "curVE", "%", veMap.getValue(rpm, getMap()), 2);
|
||||
}
|
||||
|
||||
float engineLoad = getEngineLoadT(PASS_ENGINE_PARAMETER_F);
|
||||
reportSensorF(log, fileFormat, "ENGINE_LOAD", "x", engineLoad, 2);
|
||||
|
||||
|
||||
reportSensorF(log, fileFormat, "dwell", "ms", ENGINE(engineState.sparkDwell), 2);
|
||||
if (fileFormat) {
|
||||
reportSensorF(log, fileFormat, "timing", "deg", engine->engineState.timingAdvance, 2);
|
||||
|
||||
}
|
||||
|
||||
if (fileFormat) {
|
||||
floatms_t baseFuel = getBaseFuel(rpm PASS_ENGINE_PARAMETER);
|
||||
reportSensorF(log, fileFormat, "f: base", "ms", baseFuel, 2);
|
||||
reportSensorF(log, fileFormat, "f: actual", "ms", ENGINE(actualLastInjection), 2);
|
||||
reportSensorF(log, fileFormat, "f: lag", "ms", engine->engineState.injectorLag, 2);
|
||||
reportSensorF(log, fileFormat, "f: running", "ms", ENGINE(engineState.runningFuel), 2);
|
||||
|
||||
reportSensorF(log, fileFormat, "f: wall amt", "v", ENGINE(wallFuel).getWallFuel(0), 2);
|
||||
reportSensorF(log, fileFormat, "f: wall crr", "v", ENGINE(wallFuelCorrection), 2);
|
||||
}
|
||||
|
||||
|
||||
if (engineConfiguration->hasVehicleSpeedSensor) {
|
||||
#if EFI_VEHICLE_SPEED || defined(__DOXYGEN__)
|
||||
|
@ -196,37 +246,21 @@ static void printSensors(Logging *log, bool fileFormat) {
|
|||
reportSensorF(log, fileFormat, "sp2rpm", "x", sp2rpm, 2);
|
||||
}
|
||||
|
||||
reportSensorI(log, fileFormat, "warn", "count", engine->engineState.warningCounter);
|
||||
reportSensorI(log, fileFormat, "error", "code", engine->engineState.lastErrorCode);
|
||||
|
||||
reportSensorF(log, fileFormat, "knck_c", "count", engine->knockCount, 0);
|
||||
reportSensorF(log, fileFormat, "knck_v", "v", engine->knockVolts, 2);
|
||||
|
||||
#if EFI_PROD_CODE || defined(__DOXYGEN__)
|
||||
reportSensorF(log, fileFormat, "int_temp", "C", getMCUInternalTemperature(), 2);
|
||||
#endif
|
||||
|
||||
// reportSensorF(log, fileFormat, "vref", "V", getVRef(engineConfiguration), 2);
|
||||
if (hasVBatt(PASS_ENGINE_PARAMETER_F)) {
|
||||
reportSensorF(log, fileFormat, "vbatt", "V", getVBatt(PASS_ENGINE_PARAMETER_F), 2);
|
||||
}
|
||||
|
||||
reportSensorF(log, fileFormat, "TP", "%", getTPS(PASS_ENGINE_PARAMETER_F), 2);
|
||||
|
||||
if (fileFormat) {
|
||||
reportSensorF(log, fileFormat, "tpsacc", "ms", engine->tpsAccelEnrichment.getTpsEnrichment(PASS_ENGINE_PARAMETER_F), 2);
|
||||
reportSensorF(log, fileFormat, "advance", "deg", engine->engineState.timingAdvance, 2);
|
||||
reportSensorF(log, fileFormat, "duty", "%", getInjectorDutyCycle(rpm PASS_ENGINE_PARAMETER), 2);
|
||||
reportSensorF(log, fileFormat, "f: tps delta", "v", engine->tpsAccelEnrichment.getMaxDelta(), 2);
|
||||
reportSensorF(log, fileFormat, "f: tps fuel", "ms", engine->engineState.tpsAccelEnrich, 2);
|
||||
|
||||
reportSensorF(log, fileFormat, "f: el delta", "v", engine->engineLoadAccelEnrichment.getMaxDelta(), 2);
|
||||
reportSensorF(log, fileFormat, "f: el fuel", "v", engine->engineLoadAccelEnrichment.getEngineLoadEnrichment(PASS_ENGINE_PARAMETER_F) * 100 / getMap(), 2);
|
||||
|
||||
reportSensorF(log, fileFormat, "tCharge", "K", engine->engineState.tChargeK, 2);
|
||||
reportSensorF(log, fileFormat, "f: duty", "%", getInjectorDutyCycle(rpm PASS_ENGINE_PARAMETER), 2);
|
||||
}
|
||||
|
||||
if (engineConfiguration->hasCltSensor) {
|
||||
reportSensorF(log, fileFormat, "CLT", "C", getCoolantTemperature(PASS_ENGINE_PARAMETER_F), 2);
|
||||
}
|
||||
|
||||
reportSensorF(log, fileFormat, "MAT", "C", getIntakeAirTemperature(PASS_ENGINE_PARAMETER_F), 2);
|
||||
|
||||
// debugFloat(&logger, "tch", getTCharge1(tps), 2);
|
||||
|
||||
|
@ -237,6 +271,10 @@ static void printSensors(Logging *log, bool fileFormat) {
|
|||
reportSensorF(log, fileFormat, buf, "", getVoltage("fsio", engineConfiguration->fsioAdc[i]), 2);
|
||||
}
|
||||
}
|
||||
|
||||
reportSensorI(log, fileFormat, "warn", "count", engine->engineState.warningCounter);
|
||||
reportSensorI(log, fileFormat, "error", "code", engine->engineState.lastErrorCode);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -283,14 +321,6 @@ static void printState(void) {
|
|||
|
||||
// debugFloat(&logger, "table_spark", getAdvance(rpm, getMaf()), 2);
|
||||
|
||||
float engineLoad = getEngineLoadT(PASS_ENGINE_PARAMETER_F);
|
||||
float baseFuel = getBaseFuel(rpm PASS_ENGINE_PARAMETER);
|
||||
debugFloat(&logger, "fuel_base", baseFuel, 2);
|
||||
debugFloat(&logger, "fuel_lag", engine->engineState.injectorLag, 2);
|
||||
debugFloat(&logger, "fuel", ENGINE(actualLastInjection), 2);
|
||||
|
||||
debugFloat(&logger, "timing", engine->engineState.timingAdvance, 2);
|
||||
|
||||
// float map = getMap();
|
||||
|
||||
#endif /* EFI_SHAFT_POSITION_INPUT */
|
||||
|
@ -388,7 +418,7 @@ void updateDevConsoleState(Engine *engine) {
|
|||
#endif
|
||||
|
||||
#if (EFI_PROD_CODE && HAL_USE_ADC) || defined(__DOXYGEN__)
|
||||
printFullAdcReportIfNeeded();
|
||||
printFullAdcReportIfNeeded(&logger);
|
||||
#endif
|
||||
|
||||
if (!fullLog) {
|
||||
|
@ -592,9 +622,6 @@ static void lcdThread(void *arg) {
|
|||
|
||||
#if EFI_TUNER_STUDIO || defined(__DOXYGEN__)
|
||||
|
||||
extern fuel_Map3D_t veMap;
|
||||
extern afr_Map3D_t afrMap;
|
||||
|
||||
void updateTunerStudioState(TunerStudioOutputChannels *tsOutputChannels DECLARE_ENGINE_PARAMETER_S) {
|
||||
#if EFI_SHAFT_POSITION_INPUT || defined(__DOXYGEN__)
|
||||
int rpm = getRpmE(engine);
|
||||
|
|
|
@ -196,7 +196,7 @@ public:
|
|||
* Total fuel with CLT, IAT and TPS acceleration corrections per cycle,
|
||||
* as squirt duration.
|
||||
* Without injector lag.
|
||||
* @see baseFule
|
||||
* @see baseFuel
|
||||
* @see actualLastInjection
|
||||
*/
|
||||
floatms_t runningFuel;
|
||||
|
|
|
@ -69,8 +69,7 @@ AdcDevice::AdcDevice(ADCConversionGroup* hwConfig) {
|
|||
#define ADC_FAST_DEVICE ADCD2
|
||||
|
||||
static int slowAdcCounter = 0;
|
||||
static char LOGGING_BUFFER[500];
|
||||
static Logging logger("ADC", LOGGING_BUFFER, sizeof(LOGGING_BUFFER));
|
||||
static LoggingWithStorage logger("ADC");
|
||||
|
||||
// todo: move this flag to Engine god object
|
||||
static int adcDebugReporting = false;
|
||||
|
@ -453,24 +452,24 @@ adc_channel_e AdcDevice::getAdcHardwareIndexByInternalIndex(int index) {
|
|||
return hardwareIndexByIndernalAdcIndex[index];
|
||||
}
|
||||
|
||||
static void printFullAdcReport(void) {
|
||||
scheduleMsg(&logger, "fast %d slow %d", fastAdc.conversionCount, slowAdc.conversionCount);
|
||||
static void printFullAdcReport(Logging *logger) {
|
||||
scheduleMsg(logger, "fast %d slow %d", fastAdc.conversionCount, slowAdc.conversionCount);
|
||||
|
||||
for (int index = 0; index < slowAdc.size(); index++) {
|
||||
appendMsgPrefix(&logger);
|
||||
appendMsgPrefix(logger);
|
||||
|
||||
adc_channel_e hwIndex = slowAdc.getAdcHardwareIndexByInternalIndex(index);
|
||||
ioportid_t port = getAdcChannelPort(hwIndex);
|
||||
int pin = getAdcChannelPin(hwIndex);
|
||||
|
||||
int adcValue = slowAdc.getAdcValueByIndex(index);
|
||||
appendPrintf(&logger, " ch%d %s%d", index, portname(port), pin);
|
||||
appendPrintf(&logger, " ADC%d 12bit=%d", hwIndex, adcValue);
|
||||
appendPrintf(logger, " ch%d %s%d", index, portname(port), pin);
|
||||
appendPrintf(logger, " ADC%d 12bit=%d", hwIndex, adcValue);
|
||||
float volts = adcToVolts(adcValue);
|
||||
appendPrintf(&logger, " v=%f", volts);
|
||||
appendPrintf(logger, " v=%f", volts);
|
||||
|
||||
appendMsgPostfix(&logger);
|
||||
scheduleLogging(&logger);
|
||||
appendMsgPostfix(logger);
|
||||
scheduleLogging(logger);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -603,16 +602,15 @@ void initAdcInputs(bool boardTestMode) {
|
|||
//if(slowAdcChannelCount > ADC_MAX_SLOW_CHANNELS_COUNT) // todo: do we need this logic? do we need this check
|
||||
|
||||
addConsoleActionI("adc", (VoidInt) printAdcValue);
|
||||
addConsoleAction("fadc", printFullAdcReport);
|
||||
#else
|
||||
printMsg(&logger, "ADC disabled");
|
||||
#endif
|
||||
}
|
||||
|
||||
void printFullAdcReportIfNeeded(void) {
|
||||
void printFullAdcReportIfNeeded(Logging *logger) {
|
||||
if (!adcDebugReporting)
|
||||
return;
|
||||
printFullAdcReport();
|
||||
printFullAdcReport(logger);
|
||||
}
|
||||
|
||||
#endif /* HAL_USE_ADC */
|
||||
|
|
|
@ -24,7 +24,7 @@ void doSlowAdc(void);
|
|||
|
||||
int getAdcHardwareIndexByInternalIndex(int index);
|
||||
|
||||
void printFullAdcReportIfNeeded(void);
|
||||
void printFullAdcReportIfNeeded(Logging *log);
|
||||
int getInternalAdcValue(const char *msg, adc_channel_e index);
|
||||
float getMCUInternalTemperature(void);
|
||||
|
||||
|
|
|
@ -300,7 +300,7 @@ void firmwareError(const char *errorMsg, ...) {
|
|||
}
|
||||
}
|
||||
|
||||
static char UNUSED_RAM_SIZE[700];
|
||||
static char UNUSED_RAM_SIZE[400];
|
||||
|
||||
static char UNUSED_CCM_SIZE[8500] CCM_OPTIONAL;
|
||||
|
||||
|
@ -309,5 +309,5 @@ int getRusEfiVersion(void) {
|
|||
return 123; // this is here to make the compiler happy about the unused array
|
||||
if (UNUSED_CCM_SIZE[0] * 0 != 0)
|
||||
return 3211; // this is here to make the compiler happy about the unused array
|
||||
return 20160906;
|
||||
return 20160909;
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ import static com.rusefi.ui.storage.PersistentConfiguration.getConfig;
|
|||
* @see EngineSnifferPanel
|
||||
*/
|
||||
public class Launcher {
|
||||
public static final int CONSOLE_VERSION = 20160826;
|
||||
public static final int CONSOLE_VERSION = 20160909;
|
||||
public static final boolean SHOW_STIMULATOR = false;
|
||||
private static final String TAB_INDEX = "main_tab";
|
||||
protected static final String PORT_KEY = "port";
|
||||
|
|
|
@ -16,26 +16,45 @@ public class SensorLogger {
|
|||
|
||||
private static Sensor[] SENSORS = {Sensor.RPM,
|
||||
Sensor.INT_TEMP,
|
||||
Sensor.CLT, Sensor.TPS, Sensor.VBATT,
|
||||
Sensor.FUEL_BASE,
|
||||
Sensor.T_CHARGE,
|
||||
Sensor.DWELL,
|
||||
Sensor.CURRENT_VE,
|
||||
Sensor.deltaTps,
|
||||
Sensor.engineLoadAccelDelta,
|
||||
Sensor.tpsAccelFuel,
|
||||
Sensor.Injector_duty,
|
||||
Sensor.wallFuelAmount,
|
||||
Sensor.iatCorrection,
|
||||
Sensor.wallFuelCorrection,
|
||||
|
||||
Sensor.CLT,
|
||||
Sensor.TPS,
|
||||
Sensor.VBATT,
|
||||
Sensor.IAT,
|
||||
Sensor.MAF,
|
||||
Sensor.MAP,
|
||||
Sensor.AFR,
|
||||
|
||||
Sensor.idlePosition,
|
||||
|
||||
Sensor.TARGET_AFR,
|
||||
Sensor.CHARGE_AIR_MASS,
|
||||
Sensor.T_CHARGE,
|
||||
Sensor.CURRENT_VE,
|
||||
Sensor.ENGINE_LOAD,
|
||||
|
||||
Sensor.DWELL,
|
||||
Sensor.TIMING,
|
||||
|
||||
Sensor.FUEL_BASE,
|
||||
|
||||
Sensor.deltaTps,
|
||||
Sensor.tpsAccelFuel,
|
||||
Sensor.engineLoadAccelDelta,
|
||||
Sensor.Injector_duty,
|
||||
|
||||
Sensor.wallFuelAmount,
|
||||
Sensor.wallFuelCorrection,
|
||||
|
||||
Sensor.iatCorrection,
|
||||
Sensor.cltCorrection,
|
||||
|
||||
Sensor.CHARGE_AIR_MASS,
|
||||
Sensor.runningFuel,
|
||||
Sensor.injectorLagMs,
|
||||
|
||||
Sensor.VSS,
|
||||
Sensor.SPEED2RPM,
|
||||
|
||||
Sensor.debugFloatField1,
|
||||
Sensor.debugFloatField2,
|
||||
Sensor.debugFloatField3,
|
||||
|
@ -44,12 +63,11 @@ public class SensorLogger {
|
|||
Sensor.debugIntField1,
|
||||
Sensor.debugIntField2,
|
||||
Sensor.debugIntField3,
|
||||
|
||||
Sensor.warningCounter,
|
||||
Sensor.lastErrorCode,
|
||||
|
||||
Sensor.MAF,
|
||||
Sensor.MAP,
|
||||
Sensor.IAT};
|
||||
};
|
||||
private static long fileStartTime;
|
||||
|
||||
private SensorLogger() {
|
||||
|
|
Loading…
Reference in New Issue