auto-sync

This commit is contained in:
rusEfi 2014-08-30 20:02:44 -05:00
parent 80db0ae56d
commit f50b86e2df
6 changed files with 65 additions and 61 deletions

View File

@ -29,6 +29,8 @@ static void setDefaultCrankingFuel(engine_configuration_s *engineConfiguration)
static void common079721_2351(engine_configuration_s *engineConfiguration, board_configuration_s *boardConfiguration) { static void common079721_2351(engine_configuration_s *engineConfiguration, board_configuration_s *boardConfiguration) {
engineConfiguration->digitalChartSize = 150;
engineConfiguration->cylindersCount = 4; engineConfiguration->cylindersCount = 4;
engineConfiguration->firingOrder = FO_1_THEN_3_THEN_4_THEN2; engineConfiguration->firingOrder = FO_1_THEN_3_THEN_4_THEN2;
@ -57,7 +59,7 @@ static void common079721_2351(engine_configuration_s *engineConfiguration, board
} }
void setMiata1990(engine_configuration_s *engineConfiguration, board_configuration_s *boardConfiguration) { void setMiata1990(engine_configuration_s *engineConfiguration, board_configuration_s *boardConfiguration) {
engineConfiguration->triggerConfig.triggerType = TT_FORD_ESCORT_GT; engineConfiguration->triggerConfig.triggerType = TT_MAZDA_MIATA_NA;
common079721_2351(engineConfiguration, boardConfiguration); common079721_2351(engineConfiguration, boardConfiguration);

View File

@ -23,13 +23,10 @@
#include "algo.h" #include "algo.h"
#include "advance_map.h" #include "advance_map.h"
#include "fuel_math.h" #include "fuel_math.h"
#include "wave_chart.h"
#include "settings.h" #include "settings.h"
#include "signal_executor.h" #include "signal_executor.h"
#include "speed_density.h" #include "speed_density.h"
WaveChart waveChart;
void initDataStructures(engine_configuration_s *engineConfiguration) { void initDataStructures(engine_configuration_s *engineConfiguration) {
prepareFuelMap(); prepareFuelMap();
prepareTimingMap(); prepareTimingMap();
@ -41,8 +38,4 @@ void initAlgo(engine_configuration_s *engineConfiguration) {
initSettings(); initSettings();
initSignalExecutor(); initSignalExecutor();
#endif #endif
#if EFI_WAVE_CHART
initWaveChart(&waveChart);
#endif
} }

View File

@ -166,12 +166,13 @@ void printConfiguration(engine_configuration_s *engineConfiguration, engine_conf
scheduleMsg(&logger, "crankingRpm: %d", engineConfiguration->crankingSettings.crankingRpm); scheduleMsg(&logger, "crankingRpm: %d", engineConfiguration->crankingSettings.crankingRpm);
scheduleMsg(&logger, "analogInputDividerCoefficient: %f", engineConfiguration->analogInputDividerCoefficient);
#if EFI_PROD_CODE
scheduleMsg(&logger, "idlePinMode: %s", pinModeToString(boardConfiguration->idleValvePinMode)); scheduleMsg(&logger, "idlePinMode: %s", pinModeToString(boardConfiguration->idleValvePinMode));
scheduleMsg(&logger, "malfunctionIndicatorPinMode: %s", scheduleMsg(&logger, "malfunctionIndicatorPinMode: %s",
pinModeToString(boardConfiguration->malfunctionIndicatorPinMode)); pinModeToString(boardConfiguration->malfunctionIndicatorPinMode));
scheduleMsg(&logger, "analogInputDividerCoefficient: %f", engineConfiguration->analogInputDividerCoefficient);
#if EFI_PROD_CODE
scheduleMsg(&logger, "idleValvePin: %s", hwPortname(boardConfiguration->idleValvePin)); scheduleMsg(&logger, "idleValvePin: %s", hwPortname(boardConfiguration->idleValvePin));
scheduleMsg(&logger, "fuelPumpPin: mode %s @ %s", pinModeToString(boardConfiguration->fuelPumpPinMode), scheduleMsg(&logger, "fuelPumpPin: mode %s @ %s", pinModeToString(boardConfiguration->fuelPumpPinMode),
hwPortname(boardConfiguration->fuelPumpPin)); hwPortname(boardConfiguration->fuelPumpPin));

View File

@ -102,8 +102,6 @@ static int isNoisySignal(RpmCalculator * rpmState, uint64_t nowUs) {
return diff < 40; // that's 40us return diff < 40; // that's 40us
} }
static char shaft_signal_msg_index[15];
/** /**
* @brief Shaft position callback used by RPM calculation logic. * @brief Shaft position callback used by RPM calculation logic.
* *
@ -112,20 +110,6 @@ static char shaft_signal_msg_index[15];
* This callback is invoked on interrupt thread. * This callback is invoked on interrupt thread.
*/ */
void rpmShaftPositionCallback(trigger_event_e ckpSignalType, int index, RpmCalculator *rpmState) { void rpmShaftPositionCallback(trigger_event_e ckpSignalType, int index, RpmCalculator *rpmState) {
itoa10(&shaft_signal_msg_index[1], index);
if (ckpSignalType == SHAFT_PRIMARY_UP) {
addWaveChartEvent(WC_CRANK1, WC_UP, (char*) shaft_signal_msg_index);
} else if (ckpSignalType == SHAFT_PRIMARY_DOWN) {
addWaveChartEvent(WC_CRANK1, WC_DOWN, (char*) shaft_signal_msg_index);
} else if (ckpSignalType == SHAFT_SECONDARY_UP) {
addWaveChartEvent(WC_CRANK2, WC_UP, (char*) shaft_signal_msg_index);
} else if (ckpSignalType == SHAFT_SECONDARY_DOWN) {
addWaveChartEvent(WC_CRANK2, WC_DOWN, (char*) shaft_signal_msg_index);
} else if (ckpSignalType == SHAFT_3RD_UP) {
addWaveChartEvent(WC_CRANK3, WC_UP, (char*) shaft_signal_msg_index);
} else if (ckpSignalType == SHAFT_3RD_DOWN) {
addWaveChartEvent(WC_CRANK3, WC_DOWN, (char*) shaft_signal_msg_index);
}
if (index != 0) { if (index != 0) {
#if EFI_ANALOG_CHART || defined(__DOXYGEN__) #if EFI_ANALOG_CHART || defined(__DOXYGEN__)
@ -222,8 +206,6 @@ void initRpmCalculator(void) {
addTriggerEventListener(&tdcMarkCallback, "chart TDC mark", NULL); addTriggerEventListener(&tdcMarkCallback, "chart TDC mark", NULL);
#endif #endif
strcpy((char*) shaft_signal_msg_index, "_");
addTriggerEventListener((ShaftPositionListener)&rpmShaftPositionCallback, "rpm reporter", &rpmState); addTriggerEventListener((ShaftPositionListener)&rpmShaftPositionCallback, "rpm reporter", &rpmState);
} }

View File

@ -12,12 +12,17 @@
#include "engine_configuration.h" #include "engine_configuration.h"
#include "listener_array.h" #include "listener_array.h"
#include "data_buffer.h" #include "data_buffer.h"
#include "pin_repository.h"
#include "histogram.h" #include "histogram.h"
#include "wave_chart.h"
#include "rpm_calculator.h"
#if EFI_PROD_CODE #if EFI_PROD_CODE
#include "rfiutil.h" #include "rfiutil.h"
#include "pin_repository.h"
#endif #endif
WaveChart waveChart;
static histogram_s triggerCallback; static histogram_s triggerCallback;
// we need this initial to have not_running at first invocation // we need this initial to have not_running at first invocation
@ -67,6 +72,26 @@ int TriggerCentral::getHwEventCounter(int index) {
return hwEventCounters[index]; return hwEventCounters[index];
} }
static char shaft_signal_msg_index[15];
static void reportEventToWaveChart(trigger_event_e ckpSignalType, int index) {
itoa10(&shaft_signal_msg_index[1], index);
if (ckpSignalType == SHAFT_PRIMARY_UP) {
addWaveChartEvent(WC_CRANK1, WC_UP, (char*) shaft_signal_msg_index);
} else if (ckpSignalType == SHAFT_PRIMARY_DOWN) {
addWaveChartEvent(WC_CRANK1, WC_DOWN, (char*) shaft_signal_msg_index);
} else if (ckpSignalType == SHAFT_SECONDARY_UP) {
addWaveChartEvent(WC_CRANK2, WC_UP, (char*) shaft_signal_msg_index);
} else if (ckpSignalType == SHAFT_SECONDARY_DOWN) {
addWaveChartEvent(WC_CRANK2, WC_DOWN, (char*) shaft_signal_msg_index);
} else if (ckpSignalType == SHAFT_3RD_UP) {
addWaveChartEvent(WC_CRANK3, WC_UP, (char*) shaft_signal_msg_index);
} else if (ckpSignalType == SHAFT_3RD_DOWN) {
addWaveChartEvent(WC_CRANK3, WC_DOWN, (char*) shaft_signal_msg_index);
}
}
void TriggerCentral::handleShaftSignal(configuration_s *configuration, trigger_event_e signal, uint64_t nowUs) { void TriggerCentral::handleShaftSignal(configuration_s *configuration, trigger_event_e signal, uint64_t nowUs) {
efiAssertVoid(configuration!=NULL, "configuration"); efiAssertVoid(configuration!=NULL, "configuration");
@ -101,30 +126,24 @@ void TriggerCentral::handleShaftSignal(configuration_s *configuration, trigger_e
return; return;
} }
if (triggerState.getCurrentIndex() >= configuration->engineConfiguration2->triggerShape.shaftPositionEventCount) { /**
int f = warning(OBD_PCM_Processor_Fault, "unexpected eventIndex=%d", triggerState.getCurrentIndex()); * If we only have a crank position sensor, here we are extending crank revolutions with a 360 degree
if (!f) { * cycle into a four stroke, 720 degrees cycle. TODO
#if EFI_PROD_CODE */
// this temporary code is about trigger noise debugging int triggerIndexForListeners;
for (int i = 0; i < HW_EVENT_TYPES; i++) { if (getOperationMode(configuration->engineConfiguration) == FOUR_STROKE_CAM_SENSOR) {
scheduleMsg(&logger, "event type: %d count=%d", i, hwEventCounters[i]); // That's easy - trigger cycle matches engine cycle
} triggerIndexForListeners = triggerState.getCurrentIndex();
#endif
}
} else { } else {
/** bool isEven = (triggerState.getTotalRevolutionCounter() & 1) == 0;
* If we only have a crank position sensor, here we are extending crank revolutions with a 360 degree
* cycle into a four stroke, 720 degrees cycle. TODO
*/
int triggerIndexForListeners;
if (getOperationMode(configuration->engineConfiguration) == FOUR_STROKE_CAM_SENSOR) {
// That's easy - trigger cycle matches engine cycle
triggerIndexForListeners = triggerState.getCurrentIndex();
} else {
bool isEven = (triggerState.getTotalRevolutionCounter() & 1) == 0;
triggerIndexForListeners = triggerState.getCurrentIndex() + (isEven ? 0 : triggerShape->getSize()); triggerIndexForListeners = triggerState.getCurrentIndex() + (isEven ? 0 : triggerShape->getSize());
} }
reportEventToWaveChart(signal, triggerIndexForListeners);
if (triggerState.getCurrentIndex() >= configuration->engineConfiguration2->triggerShape.shaftPositionEventCount) {
warning(OBD_PCM_Processor_Fault, "unexpected eventIndex=%d", triggerState.getCurrentIndex());
} else {
/** /**
* Here we invoke all the listeners - the main engine control logic is inside these listeners * Here we invoke all the listeners - the main engine control logic is inside these listeners
@ -135,8 +154,9 @@ void TriggerCentral::handleShaftSignal(configuration_s *configuration, trigger_e
int afterCallback = hal_lld_get_counter_value(); int afterCallback = hal_lld_get_counter_value();
int diff = afterCallback - beforeCallback; int diff = afterCallback - beforeCallback;
// this counter is only 32 bits so it overflows every minute, let's ignore the value in case of the overflow for simplicity // this counter is only 32 bits so it overflows every minute, let's ignore the value in case of the overflow for simplicity
if (diff > 0) if (diff > 0) {
hsAdd(&triggerCallback, diff); hsAdd(&triggerCallback, diff);
}
#endif /* EFI_HISTOGRAMS */ #endif /* EFI_HISTOGRAMS */
} }
@ -158,22 +178,20 @@ static void triggerInfo() {
scheduleMsg(&logger, "Template %s/%d trigger %d", getConfigurationName(engineConfiguration), scheduleMsg(&logger, "Template %s/%d trigger %d", getConfigurationName(engineConfiguration),
engineConfiguration->engineType, engineConfiguration->triggerConfig.triggerType); engineConfiguration->engineType, engineConfiguration->triggerConfig.triggerType);
scheduleMsg(&logger, "trigger event counters %d/%d/%d/%d", triggerCentral.getHwEventCounter(0), scheduleMsg(&logger, "trigger event counters %d/%d/%d/%d", triggerCentral.getHwEventCounter(0),
triggerCentral.getHwEventCounter(1), triggerCentral.getHwEventCounter(2), triggerCentral.getHwEventCounter(1), triggerCentral.getHwEventCounter(2),
triggerCentral.getHwEventCounter(3)); triggerCentral.getHwEventCounter(3));
scheduleMsg(&logger, "expected cycle events %d/%d/%d", scheduleMsg(&logger, "expected cycle events %d/%d/%d", engineConfiguration2->triggerShape.expectedEventCount[0],
engineConfiguration2->triggerShape.expectedEventCount[0], engineConfiguration2->triggerShape.expectedEventCount[1],
engineConfiguration2->triggerShape.expectedEventCount[1], engineConfiguration2->triggerShape.expectedEventCount[2]);
engineConfiguration2->triggerShape.expectedEventCount[2]);
scheduleMsg(&logger, "trigger type=%d/need2ndChannel=%s", scheduleMsg(&logger, "trigger type=%d/need2ndChannel=%s", engineConfiguration->triggerConfig.triggerType,
engineConfiguration->triggerConfig.triggerType,
boolToString(engineConfiguration->needSecondTriggerInput)); boolToString(engineConfiguration->needSecondTriggerInput));
scheduleMsg(&logger, "expected duty #0=%f/#1=%f", engineConfiguration2->triggerShape.dutyCycle[0], scheduleMsg(&logger, "expected duty #0=%f/#1=%f", engineConfiguration2->triggerShape.dutyCycle[0],
engineConfiguration2->triggerShape.dutyCycle[1]); engineConfiguration2->triggerShape.dutyCycle[1]);
#endif
#if EFI_PROD_CODE
scheduleMsg(&logger, "primary trigger simulator: %s %s", hwPortname(boardConfiguration->triggerSimulatorPins[0]), scheduleMsg(&logger, "primary trigger simulator: %s %s", hwPortname(boardConfiguration->triggerSimulatorPins[0]),
pinModeToString(boardConfiguration->triggerSimulatorPinModes[0])); pinModeToString(boardConfiguration->triggerSimulatorPinModes[0]));
scheduleMsg(&logger, "secondary trigger simulator: %s %s", hwPortname(boardConfiguration->triggerSimulatorPins[1]), scheduleMsg(&logger, "secondary trigger simulator: %s %s", hwPortname(boardConfiguration->triggerSimulatorPins[1]),
@ -185,7 +203,8 @@ static void triggerInfo() {
scheduleMsg(&logger, "secondary trigger input: %s", hwPortname(boardConfiguration->triggerInputPins[1])); scheduleMsg(&logger, "secondary trigger input: %s", hwPortname(boardConfiguration->triggerInputPins[1]));
scheduleMsg(&logger, "primary logic input: %s", hwPortname(boardConfiguration->logicAnalyzerPins[0])); scheduleMsg(&logger, "primary logic input: %s", hwPortname(boardConfiguration->logicAnalyzerPins[0]));
scheduleMsg(&logger, "secondary logic input: %s", hwPortname(boardConfiguration->logicAnalyzerPins[1])); scheduleMsg(&logger, "secondary logic input: %s", hwPortname(boardConfiguration->logicAnalyzerPins[1]));
#endif
#endif /* EFI_PROD_CODE */
} }
float getTriggerDutyCycle(int index) { float getTriggerDutyCycle(int index) {
@ -193,6 +212,12 @@ float getTriggerDutyCycle(int index) {
} }
void initTriggerCentral(void) { void initTriggerCentral(void) {
strcpy((char*) shaft_signal_msg_index, "_");
#if EFI_WAVE_CHART
initWaveChart(&waveChart);
#endif
#if EFI_PROD_CODE || EFI_SIMULATOR #if EFI_PROD_CODE || EFI_SIMULATOR
initLogging(&logger, "ShaftPosition"); initLogging(&logger, "ShaftPosition");
addConsoleAction("triggerinfo", triggerInfo); addConsoleAction("triggerinfo", triggerInfo);

View File

@ -39,6 +39,7 @@ public class RecentCommands {
add("help"); add("help");
add("showconfig"); add("showconfig");
add("writeconfig"); add("writeconfig");
add("triggerinfo");
add("enable_injection"); add("enable_injection");
add("disable_injection"); add("disable_injection");
add("enable_ignition"); add("enable_ignition");