diff --git a/firmware/config/boards/proteus/compile_proteus_f4_hardware_QC_special_build.sh b/firmware/config/boards/proteus/compile_proteus_f4_hardware_QC_special_build.sh index 9a6ecb4cc1..29c987d135 100644 --- a/firmware/config/boards/proteus/compile_proteus_f4_hardware_QC_special_build.sh +++ b/firmware/config/boards/proteus/compile_proteus_f4_hardware_QC_special_build.sh @@ -2,7 +2,7 @@ export PROJECT_BOARD=proteus export PROJECT_CPU=ARCH_STM32F4 -export EXTRA_PARAMS="-DVR_HW_CHECK_MODE=TRUE -DHW_CHECK_ALWAYS_STIMULATE=TRUE -DHW_CHECK_SPARK_FSIO=TRUE -DSHORT_BOARD_NAME=proteus_f4" +export EXTRA_PARAMS="-DVR_HW_CHECK_MODE=TRUE -DHW_CHECK_SD=TRUE -DHW_CHECK_ALWAYS_STIMULATE=TRUE -DHW_CHECK_SPARK_FSIO=TRUE -DSHORT_BOARD_NAME=proteus_f4" export DEFAULT_ENGINE_TYPE=-DDEFAULT_ENGINE_TYPE=PROTEUS_QC_TEST_BOARD diff --git a/firmware/config/boards/proteus/compile_proteus_f7_hardware_QC_special_build.sh b/firmware/config/boards/proteus/compile_proteus_f7_hardware_QC_special_build.sh index 3f1afefd2d..4cdd294c2d 100644 --- a/firmware/config/boards/proteus/compile_proteus_f7_hardware_QC_special_build.sh +++ b/firmware/config/boards/proteus/compile_proteus_f7_hardware_QC_special_build.sh @@ -2,8 +2,7 @@ export PROJECT_BOARD=proteus export PROJECT_CPU=ARCH_STM32F7 - -export EXTRA_PARAMS="-DVR_HW_CHECK_MODE=TRUE -DHW_CHECK_ALWAYS_STIMULATE=TRUE -DHW_CHECK_SPARK_FSIO=TRUE -DSHORT_BOARD_NAME=proteus_f7" +export EXTRA_PARAMS="-DVR_HW_CHECK_MODE=TRUE -DHW_CHECK_SD=TRUE -DHW_CHECK_ALWAYS_STIMULATE=TRUE -DHW_CHECK_SPARK_FSIO=TRUE -DSHORT_BOARD_NAME=proteus_f7" export DEFAULT_ENGINE_TYPE=-DDEFAULT_ENGINE_TYPE=PROTEUS_QC_TEST_BOARD diff --git a/firmware/console/status_loop.cpp b/firmware/console/status_loop.cpp index 29d108ba9b..1de9dac458 100644 --- a/firmware/console/status_loop.cpp +++ b/firmware/console/status_loop.cpp @@ -376,6 +376,13 @@ class CommunicationBlinkingTask : public PeriodicTimerController { setAllLeds(0); } else if (counter % 2 == 0) { enginePins.communicationLedPin.setValue(0); +#if HW_CHECK_SD +extern int totalLoggedBytes; + if (totalLoggedBytes > 50000) { + enginePins.communicationLedPin.setValue(1); + } +#endif // HW_CHECK_SD + #if HW_CHECK_MODE // we have to do anything possible to help users notice FACTORY MODE enginePins.errorLedPin.setValue(1); diff --git a/firmware/controllers/trigger/trigger_central.cpp b/firmware/controllers/trigger/trigger_central.cpp index d302ac72d6..8d1ce5bbfe 100644 --- a/firmware/controllers/trigger/trigger_central.cpp +++ b/firmware/controllers/trigger/trigger_central.cpp @@ -23,6 +23,7 @@ #include "engine_math.h" #include "local_version_holder.h" #include "trigger_simulator.h" +#include "trigger_emulator_algo.h" #include "rpm_calculator.h" #include "tooth_logger.h" @@ -108,6 +109,7 @@ void hwHandleVvtCamSignal(trigger_value_e front, efitick_t nowNt, int index DECL 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); @@ -300,6 +302,11 @@ void hwHandleShaftSignal(trigger_event_e signal, efitick_t timestamp) { extern ioportid_t criticalErrorLedPort; extern ioportmask_t criticalErrorLedPin; +#if HW_CHECK_ALWAYS_STIMULATE + disableTriggerStimulator(); +#endif // HW_CHECK_ALWAYS_STIMULATE + + for (int i = 0 ; i < 100 ; i++) { // turning pin ON and busy-waiting a bit palWritePad(criticalErrorLedPort, criticalErrorLedPin, 1); diff --git a/firmware/hw_layer/mmc_card.cpp b/firmware/hw_layer/mmc_card.cpp index c626d14d6f..ffcaeb0976 100644 --- a/firmware/hw_layer/mmc_card.cpp +++ b/firmware/hw_layer/mmc_card.cpp @@ -50,7 +50,7 @@ EXTERN_ENGINE; // at about 20Hz we write about 2Kb per second, looks like we flush once every ~2 seconds #define F_SYNC_FREQUENCY 10 -static int totalLoggedBytes = 0; +int totalLoggedBytes = 0; static int fileCreatedCounter = 0; static int writeCounter = 0; static int totalWritesCounter = 0;