auto-sync

This commit is contained in:
rusEfi 2016-11-03 23:02:58 -04:00
parent 770c680909
commit 775950e919
16 changed files with 46 additions and 43 deletions

View File

@ -21,7 +21,7 @@ static LoggingWithStorage logger;
static SimplePwm pwmTest[5];
extern OutputPin warningPin;
extern engine_pins_s enginePins;
extern EnginePins enginePins;
EXTERN_ENGINE;

View File

@ -230,26 +230,6 @@ void Engine::init(persistent_config_s *config) {
memset(config, 0, sizeof(persistent_config_s));
}
static bool stopPin(NamedOutputPin *output) {
#if EFI_PROD_CODE || defined(__DOXYGEN__)
if (output->isInitialized() && output->getLogicValue()) {
output->setValue(false);
scheduleMsg(&logger, "turning off %s", output->name);
return true;
}
#endif
return false;
}
bool Engine::stopPins() {
bool result = false;
for (int i = 0; i < engineConfiguration->specs.cylindersCount; i++) {
result |= stopPin(&enginePins.coils[i]);
result |= stopPin(&enginePins.injectors[i]);
}
return result;
}
void Engine::printKnockState(void) {
scheduleMsg(&logger, "knock now=%s/ever=%s", boolToString(knockNow), boolToString(knockEver));
}
@ -287,7 +267,7 @@ void Engine::watchdog() {
if (isRunningPwmTest)
return;
if (!isSpinning) {
if (!isRunningBenchTest() && stopPins()) {
if (!isRunningBenchTest() && enginePins.stopPins()) {
firmwareError(CUSTOM_ERR_2ND_WATCHDOG, "Some pins were turned off by 2nd pass watchdog");
}
return;
@ -318,7 +298,7 @@ void Engine::watchdog() {
triggerInfo();
#endif
stopPins();
enginePins.stopPins();
#endif
}

View File

@ -424,7 +424,6 @@ private:
* 'spinning' means the engine is not stopped
*/
bool isSpinning;
bool stopPins();
};
/**

View File

@ -44,7 +44,7 @@ static LENameOrdinalPair leKnock(LE_METHOD_KNOCK, "knock");
#define LE_EVAL_POOL_SIZE 32
extern engine_pins_s enginePins;
extern EnginePins enginePins;
static LECalculator evalCalc;
static LEElement evalPoolElements[LE_EVAL_POOL_SIZE];

View File

@ -38,7 +38,7 @@
#define MFI_BLINK_SEPARATOR 400
#define MFI_CHECKENGINE_LIGHT 10000
extern engine_pins_s enginePins;
extern EnginePins enginePins;
static THD_WORKING_AREA(mfiThreadStack, UTILITY_THREAD_STACK_SIZE); // declare thread

View File

@ -34,7 +34,7 @@
EXTERN_ENGINE
;
extern engine_pins_s enginePins;
extern EnginePins enginePins;
/**
* @return number of milliseconds in one crank shaft revolution

View File

@ -16,7 +16,8 @@
pin_output_mode_e OUTPUT_MODE_DEFAULT = OM_DEFAULT;
// todo: clean this mess, this should become 'static'/private
engine_pins_s enginePins;
EnginePins enginePins;
extern LoggingWithStorage sharedLogger;
NamedOutputPin::NamedOutputPin() : OutputPin() {
name = NULL;
@ -37,7 +38,7 @@ static const char *injectorNames[INJECTION_PIN_COUNT] = { "i1", "i2", "i3", "i4"
"j9", "iA", "iB", "iC"};
engine_pins_s::engine_pins_s() {
EnginePins::EnginePins() {
dizzyOutput.name = DIZZY_NAME;
tachOut.name = TACH_NAME;
@ -49,7 +50,18 @@ engine_pins_s::engine_pins_s() {
}
}
void engine_pins_s::reset() {
bool EnginePins::stopPins() {
bool result = false;
for (int i = 0; i < IGNITION_PIN_COUNT; i++) {
result |= coils[i].stop();
}
for (int i = 0; i < INJECTION_PIN_COUNT; i++) {
result |= injectors[i].stop();
}
return result;
}
void EnginePins::reset() {
for (int i = 0; i < INJECTION_PIN_COUNT;i++) {
injectors[i].reset();
}
@ -58,6 +70,17 @@ void engine_pins_s::reset() {
}
}
bool NamedOutputPin::stop() {
#if EFI_PROD_CODE || defined(__DOXYGEN__)
if (isInitialized() && getLogicValue()) {
setValue(false);
scheduleMsg(&sharedLogger, "turning off %s", name);
return true;
}
#endif
return false;
}
void InjectorOutputPin::reset() {
overlappingScheduleOffTime = 0;
cancelNextTurningInjectorOff = false;

View File

@ -44,6 +44,10 @@ class NamedOutputPin : public OutputPin {
public:
NamedOutputPin();
NamedOutputPin(const char *name);
/**
* @return true if pin was stopped
*/
bool stop();
const char *name;
};
@ -64,10 +68,11 @@ public:
bool outOfOrder; // https://sourceforge.net/p/rusefi/tickets/319/
};
class engine_pins_s {
class EnginePins {
public:
engine_pins_s();
EnginePins();
void reset();
bool stopPins();
OutputPin mainRelay;
OutputPin fanRelay;
OutputPin acRelay;

View File

@ -93,7 +93,7 @@ typedef VirtualTimer virtual_timer_t;
extern Engine _engine; \
extern persistent_config_s *config; \
extern engine_configuration2_s * engineConfiguration2; \
extern engine_pins_s enginePins
extern EnginePins enginePins
#define DECLARE_ENGINE_PARAMETER_F void
#define DECLARE_ENGINE_PARAMETER_S

View File

@ -42,7 +42,7 @@
static NamedOutputPin intHold(HIP_NAME);
extern uint32_t lastExecutionCount;
extern engine_pins_s enginePins;
extern EnginePins enginePins;
uint32_t hipLastExecutionCount;

View File

@ -26,7 +26,7 @@ extern board_configuration_s *boardConfiguration;
static LoggingWithStorage logger("io_pins");
extern engine_pins_s enginePins;
extern EnginePins enginePins;
#if defined(STM32F4XX)
static ioportid_t PORTS[] = { GPIOA, GPIOB, GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH };

View File

@ -119,11 +119,7 @@
#include "engine_emulator.h"
#endif /* EFI_ENGINE_EMULATOR */
#if FUEL_MATH_EXTREME_LOGGING
LoggingWithStorage sharedLogger("main");
#else
static LoggingWithStorage sharedLogger("main");
#endif /* FUEL_MATH_EXTREME_LOGGING */
bool main_loop_started = false;

View File

@ -15,7 +15,7 @@
#include "advance_map.h"
extern int timeNow;
extern engine_pins_s enginePins;
extern EnginePins enginePins;
EngineTestHelper::EngineTestHelper(engine_type_e engineType) : engine (&persistentConfig) {
ec = &persistentConfig.engineConfiguration;

View File

@ -35,7 +35,7 @@ typedef int bool_t;
#define CCM_OPTIONAL
#define EXTERN_ENGINE extern engine_pins_s enginePins
#define EXTERN_ENGINE extern EnginePins enginePins
#ifdef __cplusplus
class Engine;

View File

@ -286,7 +286,7 @@ static void assertREqualsM(const char *msg, void *expected, void *actual) {
}
extern bool_t debugSignalExecutor;
extern engine_pins_s enginePins;
extern EnginePins enginePins;
// todo: move method body here after merge
void assertEvent(const char *msg, int index, void *callback, efitime_t start, efitime_t momentX, long param);

View File

@ -103,7 +103,7 @@ void applyNewConfiguration(void);
extern persistent_config_s *config; \
extern persistent_config_container_s persistentState; \
extern engine_configuration2_s * engineConfiguration2; \
extern engine_pins_s enginePins
extern EnginePins enginePins
#define DECLARE_ENGINE_PARAMETER_F void
#define DECLARE_ENGINE_PARAMETER_S