diff --git a/firmware/config/engines/bmw_m73.cpp b/firmware/config/engines/bmw_m73.cpp index f81601d7c1..24fb91108a 100644 --- a/firmware/config/engines/bmw_m73.cpp +++ b/firmware/config/engines/bmw_m73.cpp @@ -288,6 +288,7 @@ void setEngineBMW_M73_Proteus(DECLARE_CONFIG_PARAMETER_SIGNATURE) { strcpy(CONFIG(vehicleName), "Using Proteus"); + // set_trigger_input_pin 0 PE7 // GPIOE_7: "VR 1" engineConfiguration->triggerInputPins[0] = GPIOE_7; diff --git a/firmware/controllers/trigger/trigger_central.cpp b/firmware/controllers/trigger/trigger_central.cpp index b3dfcf5c3f..5c2197af3a 100644 --- a/firmware/controllers/trigger/trigger_central.cpp +++ b/firmware/controllers/trigger/trigger_central.cpp @@ -262,6 +262,20 @@ uint32_t triggerMaxDuration = 0; void hwHandleShaftSignal(trigger_event_e signal, efitick_t timestamp) { ScopePerf perf(PE::HandleShaftSignal); +#if VR_HW_CHECK_MODE + // some boards do not have hardware VR input LEDs which makes such boards harder to validate + // from experience we know that assembly mistakes happen and quality control is required + extern ioportid_t criticalErrorLedPort; + extern ioportmask_t criticalErrorLedPin; + + for (int i = 0 ; i < 100 ; i++) { + // turning pin ON and busy-waiting a bit + palWritePad(criticalErrorLedPort, criticalErrorLedPin, 1); + } + + palWritePad(criticalErrorLedPort, criticalErrorLedPin, 0); +#endif // VR_HW_CHECK_MODE + #if EFI_TOOTH_LOGGER // Log to the Tunerstudio tooth logger // We want to do this before anything else as we