auto-sync

This commit is contained in:
rusEfi 2014-10-18 06:03:25 -05:00
parent 4a24e2241c
commit 916f544549
6 changed files with 68 additions and 5 deletions

View File

@ -13,24 +13,44 @@ case SPARKOUT_10_OUTPUT:
return "SPARKOUT_10_OUTPUT";
case LED_EMULATOR:
return "LED_EMULATOR";
case GPIO_1:
return "GPIO_1";
case GPIO_0:
return "GPIO_0";
case LED_WARNING:
return "LED_WARNING";
case GPIO_3:
return "GPIO_3";
case GPIO_2:
return "GPIO_2";
case GPIO_5:
return "GPIO_5";
case INJECTOR_3_OUTPUT:
return "INJECTOR_3_OUTPUT";
case GPIO_4:
return "GPIO_4";
case LED_HUGE_19:
return "LED_HUGE_19";
case IDLE_VALVE:
return "IDLE_VALVE";
case GPIO_7:
return "GPIO_7";
case FAN_RELAY:
return "FAN_RELAY";
case INJECTOR_8_OUTPUT:
return "INJECTOR_8_OUTPUT";
case GPIO_6:
return "GPIO_6";
case GPIO_9:
return "GPIO_9";
case LED_HUGE_16:
return "LED_HUGE_16";
case SPARKOUT_9_OUTPUT:
return "SPARKOUT_9_OUTPUT";
case LED_EXT_1:
return "LED_EXT_1";
case GPIO_8:
return "GPIO_8";
case LED_HUGE_15:
return "LED_HUGE_15";
case LED_HUGE_18:
@ -129,14 +149,24 @@ case SPARKOUT_7_OUTPUT:
return "SPARKOUT_7_OUTPUT";
case LED_HUGE_0:
return "LED_HUGE_0";
case GPIO_15:
return "GPIO_15";
case TRIGGER_EMULATOR_PRIMARY:
return "TRIGGER_EMULATOR_PRIMARY";
case SPARKOUT_8_OUTPUT:
return "SPARKOUT_8_OUTPUT";
case SPARKOUT_11_OUTPUT:
return "SPARKOUT_11_OUTPUT";
case GPIO_11:
return "GPIO_11";
case INJECTOR_11_OUTPUT:
return "INJECTOR_11_OUTPUT";
case GPIO_12:
return "GPIO_12";
case GPIO_13:
return "GPIO_13";
case GPIO_14:
return "GPIO_14";
case LED_ERROR:
return "LED_ERROR";
case INJECTOR_12_OUTPUT:
@ -151,6 +181,8 @@ case SPARKOUT_2_OUTPUT:
return "SPARKOUT_2_OUTPUT";
case SPARKOUT_5_OUTPUT:
return "SPARKOUT_5_OUTPUT";
case GPIO_10:
return "GPIO_10";
}
return NULL;
}

View File

@ -281,13 +281,11 @@ void setDefaultConfiguration(engine_configuration_s *engineConfiguration, board_
}
for (int i = 0; i < LE_COMMAND_COUNT; i++) {
boardConfiguration->gpioPins[i] = GPIO_NONE;
boardConfiguration->le_formulas[i][0] = 0;
}
for (int i = 0; i < JOYSTICK_PIN_COUNT; i++) {
boardConfiguration->joystickPins[i] = GPIO_NONE;
}
for (int i = 0; i < LE_COMMAND_COUNT; i++) {
boardConfiguration->le_formulas[i][0] = 0;
}
boardConfiguration->idleValvePin = GPIOE_2;
boardConfiguration->idleValvePinMode = OM_DEFAULT;

View File

@ -111,6 +111,23 @@ typedef enum {
MAIN_RELAY,
GPIO_0,
GPIO_1,
GPIO_2,
GPIO_3,
GPIO_4,
GPIO_5,
GPIO_6,
GPIO_7,
GPIO_8,
GPIO_9,
GPIO_10,
GPIO_11,
GPIO_12,
GPIO_13,
GPIO_14,
GPIO_15,
/**
* This output pin is used to turn alternator on or off

View File

@ -159,6 +159,11 @@ void LECalculator::doJob(Engine *engine, LEElement *element) {
}
}
float LECalculator::getValue2(LEElement *element, Engine *engine) {
reset(element);
return getValue(engine);
}
float LECalculator::getValue(Engine *engine) {
LEElement *element = first;

View File

@ -71,6 +71,7 @@ class LECalculator {
public:
LECalculator();
float getValue(Engine *engine);
float getValue2(LEElement *element, Engine *engine);
void add(LEElement *element);
void reset();
void reset(LEElement *element);

View File

@ -179,6 +179,16 @@ static void cylinderCleanupControl(Engine *engine) {
engineConfiguration2->isCylinderCleanupMode = newValue;
scheduleMsg(&logger, "isCylinderCleanupMode %s", boolToString(newValue));
}
}
static void handleGpio(int index) {
brain_pin_e pin = boardConfiguration->gpioPins[index];
int value = calc.getValue2(fuelPumpLogic, &engine);
// if (value != getOutputPinValue(pin)) {
// scheduleMsg(&logger, "setting %s %s", getIo_pin_e(pin), boolToString(value));
// setOutputPinValue(pin, value);
// }
}
@ -197,6 +207,7 @@ static void onEvenyGeneralMilliseconds(void *arg) {
for (int i = 0; i < LE_COMMAND_COUNT; i++) {
if (boardConfiguration->gpioPins[i] != GPIO_NONE) {
handleGpio(i);
}
}
@ -205,8 +216,7 @@ static void onEvenyGeneralMilliseconds(void *arg) {
if (fuelPumpLogic == NULL) {
warning(OBD_PCM_Processor_Fault, "invalid expression for %s", getIo_pin_e(FUEL_PUMP_RELAY));
} else {
calc.reset(fuelPumpLogic);
int value = calc.getValue(&engine);
int value = calc.getValue2(fuelPumpLogic, &engine);
if (value != getOutputPinValue(FUEL_PUMP_RELAY)) {
scheduleMsg(&logger, "setting %s %s", getIo_pin_e(FUEL_PUMP_RELAY), boolToString(value));
setOutputPinValue(FUEL_PUMP_RELAY, value);