Remove trigger listener list (#1886)
* avoid 64b on hot path * no tooth log when fast * use crit section locker * final * only flip pins if not also self stim * only trace if doing work * slightly drop lateDelay * trace if not bailing out * remove listener array
This commit is contained in:
parent
d1f421fd06
commit
a68cbae0dc
|
@ -16,6 +16,8 @@
|
|||
#include "listener_array.h"
|
||||
#include "pwm_generator_logic.h"
|
||||
#include "tooth_logger.h"
|
||||
#include "hip9011.h"
|
||||
#include "logic_analyzer.h"
|
||||
|
||||
#include "settings.h"
|
||||
#include "engine_math.h"
|
||||
|
@ -46,7 +48,6 @@ trigger_central_s::trigger_central_s() : hwEventCounters() {
|
|||
}
|
||||
|
||||
TriggerCentral::TriggerCentral() : trigger_central_s() {
|
||||
clearCallbacks(&triggerListeneres);
|
||||
triggerState.resetTriggerState();
|
||||
noiseFilter.resetAccumSignalData();
|
||||
}
|
||||
|
@ -72,25 +73,10 @@ EXTERN_ENGINE;
|
|||
|
||||
static Logging *logger;
|
||||
|
||||
void TriggerCentral::addEventListener(ShaftPositionListener listener, const char *name, Engine *engine) {
|
||||
print("registerCkpListener: %s\r\n", name);
|
||||
triggerListeneres.registerCallback((VoidInt)(void*)listener, engine);
|
||||
}
|
||||
|
||||
angle_t TriggerCentral::getVVTPosition() {
|
||||
return vvtPosition;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Adds a trigger event listener
|
||||
*
|
||||
* Trigger event listener would be invoked on each trigger event. For example, for a 60/2 wheel
|
||||
* that would be 116 events: 58 SHAFT_PRIMARY_RISING and 58 SHAFT_PRIMARY_FALLING events.
|
||||
*/
|
||||
void addTriggerEventListener(ShaftPositionListener listener, const char *name, Engine *engine) {
|
||||
engine->triggerCentral.addEventListener(listener, name, engine);
|
||||
}
|
||||
|
||||
#define miataNbIndex (0)
|
||||
|
||||
static bool vvtWithRealDecoder(vvt_mode_e vvtMode) {
|
||||
|
@ -487,7 +473,6 @@ void TriggerCentral::handleShaftSignal(trigger_event_e signal, efitick_t timesta
|
|||
scheduleMsg(logger, "trigger %d %d %d", triggerIndexForListeners, getRevolutionCounter(), (int)getTimeNowUs());
|
||||
#endif /* TRIGGER_EXTREME_LOGGING */
|
||||
|
||||
|
||||
rpmShaftPositionCallback(signal, triggerIndexForListeners, timestamp PASS_ENGINE_PARAMETER_SUFFIX);
|
||||
|
||||
#if !EFI_UNIT_TEST
|
||||
|
@ -495,25 +480,22 @@ void TriggerCentral::handleShaftSignal(trigger_event_e signal, efitick_t timesta
|
|||
#endif
|
||||
|
||||
#if !EFI_UNIT_TEST
|
||||
#if EFI_SHAFT_POSITION_INPUT && EFI_MAP_AVERAGING
|
||||
#if EFI_MAP_AVERAGING
|
||||
mapAveragingTriggerCallback(triggerIndexForListeners, timestamp PASS_ENGINE_PARAMETER_SUFFIX);
|
||||
#endif /* EFI_SHAFT_POSITION_INPUT && EFI_MAP_AVERAGING */
|
||||
#endif /* EFI_MAP_AVERAGING */
|
||||
#endif /* EFI_UNIT_TEST */
|
||||
|
||||
//auxValveTriggerCallback
|
||||
|
||||
|
||||
/**
|
||||
* Here we invoke all the listeners - the main engine control logic is inside these listeners
|
||||
*/
|
||||
for (int i = 0; i < triggerListeneres.currentListenersCount; i++) {
|
||||
ShaftPositionListener listener = (ShaftPositionListener) (void*) triggerListeneres.callbacks[i];
|
||||
(listener)(signal, triggerIndexForListeners, timestamp PASS_ENGINE_PARAMETER_SUFFIX);
|
||||
#if EFI_HIP_9011
|
||||
if (CONFIG(isHip9011Enabled)) {
|
||||
intHoldCallback(signal, triggerIndexForListeners, timestamp PASS_ENGINE_PARAMETER_SUFFIX);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if EFI_LOGIC_ANALYZER
|
||||
waTriggerEventListener(signal, triggerIndexForListeners, timestamp PASS_ENGINE_PARAMETER_SUFFIX);
|
||||
#endif
|
||||
|
||||
mainTriggerCallback(triggerIndexForListeners, timestamp PASS_ENGINE_PARAMETER_SUFFIX);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -38,7 +38,6 @@ class TriggerCentral final : public trigger_central_s {
|
|||
public:
|
||||
TriggerCentral();
|
||||
void init(DECLARE_ENGINE_PARAMETER_SIGNATURE);
|
||||
void addEventListener(ShaftPositionListener handler, const char *name, Engine *engine);
|
||||
void handleShaftSignal(trigger_event_e signal, efitick_t timestamp DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||
int getHwEventCounter(int index) const;
|
||||
void resetCounters();
|
||||
|
@ -68,9 +67,6 @@ public:
|
|||
TriggerWaveform vvtShape;
|
||||
|
||||
TriggerFormDetails triggerFormDetails;
|
||||
|
||||
private:
|
||||
IntListenerArray<15> triggerListeneres;
|
||||
};
|
||||
|
||||
void triggerInfo(void);
|
||||
|
@ -80,7 +76,6 @@ void hwHandleVvtCamSignal(trigger_value_e front, efitick_t timestamp DECLARE_ENG
|
|||
void initTriggerCentral(Logging *sharedLogger);
|
||||
void printAllTriggers();
|
||||
|
||||
void addTriggerEventListener(ShaftPositionListener handler, const char *name, Engine *engine);
|
||||
int isSignalDecoderError(void);
|
||||
void resetMaxValues();
|
||||
|
||||
|
|
|
@ -11,9 +11,9 @@
|
|||
* @author Andrey Belomutskiy, (c) 2012-2020
|
||||
*/
|
||||
|
||||
#include "logic_analyzer.h"
|
||||
|
||||
#include "global.h"
|
||||
#include "engine.h"
|
||||
#include "logic_analyzer.h"
|
||||
#include "os_access.h"
|
||||
#include "eficonsole.h"
|
||||
#include "pin_repository.h"
|
||||
|
@ -22,7 +22,6 @@
|
|||
#include "trigger_central.h"
|
||||
#include "os_util.h"
|
||||
#include "engine_math.h"
|
||||
#include "engine.h"
|
||||
#include "rpm_calculator.h"
|
||||
#include "engine_sniffer.h"
|
||||
|
||||
|
@ -128,7 +127,7 @@ WaveReader::WaveReader() {
|
|||
hw = nullptr;
|
||||
}
|
||||
|
||||
static void waTriggerEventListener(trigger_event_e ckpSignalType, uint32_t index, efitick_t edgeTimestamp DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
void waTriggerEventListener(trigger_event_e ckpSignalType, uint32_t index, efitick_t edgeTimestamp DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
(void)ckpSignalType;
|
||||
if (index != 0) {
|
||||
return;
|
||||
|
@ -227,10 +226,6 @@ void initWaveAnalyzer(Logging *sharedLogger) {
|
|||
initWave(PROTOCOL_WA_CHANNEL_3, 2);
|
||||
initWave(PROTOCOL_WA_CHANNEL_4, 3);
|
||||
|
||||
#if EFI_SHAFT_POSITION_INPUT
|
||||
addTriggerEventListener(waTriggerEventListener, "wave analyzer", engine);
|
||||
#endif
|
||||
|
||||
addConsoleAction("waveinfo", showWaveInfo);
|
||||
|
||||
}
|
||||
|
|
|
@ -54,5 +54,7 @@ void initWaveAnalyzer(Logging *sharedLogger);
|
|||
void printWave(Logging *logging);
|
||||
void showWaveInfo(void);
|
||||
|
||||
void waTriggerEventListener(trigger_event_e ckpSignalType, uint32_t index, efitick_t edgeTimestamp DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||
|
||||
#endif /* EFI_LOGIC_ANALYZER */
|
||||
|
||||
|
|
|
@ -244,7 +244,7 @@ static void endIntegration(void *) {
|
|||
/**
|
||||
* Shaft Position callback used to start or finish HIP integration
|
||||
*/
|
||||
static void intHoldCallback(trigger_event_e ckpEventType, uint32_t index, efitick_t edgeTimestamp DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
void intHoldCallback(trigger_event_e ckpEventType, uint32_t index, efitick_t edgeTimestamp DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
(void)ckpEventType;
|
||||
// this callback is invoked on interrupt thread
|
||||
if (index != 0)
|
||||
|
@ -423,11 +423,6 @@ void initHip9011(Logging *sharedLogger) {
|
|||
|
||||
instance.currentBandIndex = getBandIndex();
|
||||
|
||||
/**
|
||||
* this engine cycle callback would be scheduling actual integration start and end callbacks
|
||||
*/
|
||||
addTriggerEventListener(&intHoldCallback, "DD int/hold", engine);
|
||||
|
||||
// MISO PB14
|
||||
// palSetPadMode(GPIOB, 14, PAL_MODE_ALTERNATE(EFI_SPI2_AF) | PAL_STM32_PUDR_PULLUP);
|
||||
// MOSI PB15
|
||||
|
|
|
@ -26,4 +26,4 @@ void setPrescalerAndSDO(int value);
|
|||
void setKnockThresh(float value);
|
||||
void setMaxKnockSubDeg(int value);
|
||||
|
||||
|
||||
void intHoldCallback(trigger_event_e ckpEventType, uint32_t index, efitick_t edgeTimestamp DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||
|
|
Loading…
Reference in New Issue