diff --git a/firmware/controllers/algo/obd_error_codes.h b/firmware/controllers/algo/obd_error_codes.h index 7d668a8c0c..b9a070508f 100644 --- a/firmware/controllers/algo/obd_error_codes.h +++ b/firmware/controllers/algo/obd_error_codes.h @@ -366,7 +366,7 @@ typedef enum { //P0332 Knock Sensor 2 Circuit Low Input (Bank 2) //P0333 Knock Sensor 2 Circuit High Input (Bank 2) //P0334 Knock Sensor 2 Circuit Intermittent (Bank 2) - //P0335 Crankshaft Position Sensor A Circuit Malfunction + OBD_Crankshaft_Position_Sensor_A_Circuit_Malfunction = 335, //P0336 Crankshaft Position Sensor A Circuit Range/Performance //P0337 Crankshaft Position Sensor A Circuit Low Input //P0338 Crankshaft Position Sensor A Circuit High Input diff --git a/firmware/controllers/trigger/main_trigger_callback.cpp b/firmware/controllers/trigger/main_trigger_callback.cpp index 7ad790bf23..03f3553a91 100644 --- a/firmware/controllers/trigger/main_trigger_callback.cpp +++ b/firmware/controllers/trigger/main_trigger_callback.cpp @@ -472,7 +472,7 @@ void mainTriggerCallback(trigger_event_e ckpSignalType, uint32_t trgEventIndex D return; } if (rpm == NOISY_RPM) { - warning(OBD_Camshaft_Position_Sensor_Circuit_Range_Performance, "noisy trigger"); + warning(OBD_Crankshaft_Position_Sensor_A_Circuit_Malfunction, "noisy trigger"); // TODO: add 'pin shutdown' invocation somewhere - coils might be still open here! return; } diff --git a/firmware/controllers/trigger/trigger_central.cpp b/firmware/controllers/trigger/trigger_central.cpp index c620faeeb0..c44bf4e1b7 100644 --- a/firmware/controllers/trigger/trigger_central.cpp +++ b/firmware/controllers/trigger/trigger_central.cpp @@ -84,16 +84,7 @@ void addTriggerEventListener(ShaftPositionListener listener, const char *name, E engine->triggerCentral.addEventListener(listener, name, engine); } -#if EFI_PROD_CODE || EFI_SIMULATOR - -int triggerReentraint = 0; -int maxTriggerReentraint = 0; -uint32_t triggerDuration; -uint32_t triggerMaxDuration = 0; - -static bool isInsideTriggerHandler = false; - -void hwHandleVvtCamSignal(trigger_value_e front) { +void hwHandleVvtCamSignal(trigger_value_e front DECLARE_ENGINE_PARAMETER_SUFFIX) { addEngineSnifferEvent(VVT_NAME, front == TV_RISE ? WC_UP : WC_DOWN); if (CONFIGB(vvtCamSensorUseRise) ^ (front != TV_FALL)) { @@ -184,6 +175,16 @@ void hwHandleVvtCamSignal(trigger_value_e front) { } +#if EFI_PROD_CODE || EFI_SIMULATOR + +int triggerReentraint = 0; +int maxTriggerReentraint = 0; +uint32_t triggerDuration; +uint32_t triggerMaxDuration = 0; + +static bool isInsideTriggerHandler = false; + + void hwHandleShaftSignal(trigger_event_e signal) { // for effective noise filtering, we need both signal edges, // so we pass them to handleShaftSignal() and defer this test diff --git a/firmware/controllers/trigger/trigger_central.h b/firmware/controllers/trigger/trigger_central.h index 63aff6234d..602aad5e21 100644 --- a/firmware/controllers/trigger/trigger_central.h +++ b/firmware/controllers/trigger/trigger_central.h @@ -60,7 +60,7 @@ private: void triggerInfo(void); efitime_t getCrankEventCounter(DECLARE_ENGINE_PARAMETER_SIGNATURE); void hwHandleShaftSignal(trigger_event_e signal); -void hwHandleVvtCamSignal(trigger_value_e front); +void hwHandleVvtCamSignal(trigger_value_e front DECLARE_ENGINE_PARAMETER_SUFFIX); void initTriggerCentral(Logging *sharedLogger); void printAllCallbacksHistogram(void); diff --git a/unit_tests/tests/test_cam_vtt_input.cpp b/unit_tests/tests/test_cam_vtt_input.cpp index e5d295df91..1972dfb49d 100644 --- a/unit_tests/tests/test_cam_vtt_input.cpp +++ b/unit_tests/tests/test_cam_vtt_input.cpp @@ -72,7 +72,7 @@ TEST(sensors, testNoisyInput) { ASSERT_EQ( 2, unitTestWarningCodeState.recentWarnings.getCount()) << "warningCounter#testNoisyInput"; ASSERT_EQ(CUSTOM_SYNC_COUNT_MISMATCH, unitTestWarningCodeState.recentWarnings.get(0)) << "@0"; - ASSERT_EQ(OBD_Camshaft_Position_Sensor_Circuit_Range_Performance, unitTestWarningCodeState.recentWarnings.get(1)) << "@0"; + ASSERT_EQ(OBD_Crankshaft_Position_Sensor_A_Circuit_Malfunction, unitTestWarningCodeState.recentWarnings.get(1)) << "@0"; } TEST(sensors, testCamInput) { @@ -82,9 +82,9 @@ TEST(sensors, testCamInput) { // and now changing to ONE trigger on CRANK with CAM/VVT setOperationMode(engineConfiguration, FOUR_STROKE_CRANK_SENSOR); - eth.setTriggerType(TT_ONE PASS_ENGINE_PARAMETER_SUFFIX); engineConfiguration->useOnlyRisingEdgeForTrigger = true; - engineConfiguration->camInput = GPIOA_10; + eth.setTriggerType(TT_ONE PASS_ENGINE_PARAMETER_SUFFIX); + engineConfiguration->camInput = GPIOA_10; // we just need to indicate that we have CAM ASSERT_EQ( 0, GET_RPM()) << "testCamInput RPM"; @@ -93,10 +93,20 @@ TEST(sensors, testCamInput) { eth.fireRise(50); eth.fireRise(50); eth.fireRise(50); + ASSERT_EQ(1200, GET_RPM()) << "testCamInput RPM"; - ASSERT_EQ(1, unitTestWarningCodeState.recentWarnings.getCount()) << "warningCounter#testCamInput"; + ASSERT_EQ(0, unitTestWarningCodeState.recentWarnings.getCount()) << "warningCounter#testCamInput"; - for (int i = 0; i < 100;i++) + for (int i = 0; i < 50;i++) { eth.fireRise(50); + } + ASSERT_EQ(0, unitTestWarningCodeState.recentWarnings.getCount()) << "warningCounter#testCamInput #2"; + + for (int i = 0; i < 50;i++) { + eth.fireRise(50); + } + + + ASSERT_EQ(0, unitTestWarningCodeState.recentWarnings.getCount()) << "warningCounter#testCamInput #3"; }