rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
Functions
bench_test.h File Reference

Detailed Description

Utility methods related to bench testing.

todo: rename this file

Date
Sep 8, 2013
Author
Andrey Belomutskiy, (c) 2012-2020

Definition in file bench_test.h.

Functions

void initBenchTest ()
 
void onConfigurationChangeBenchTest ()
 
bool isRunningBenchTest ()
 
const OutputPingetOutputOnTheBenchTest ()
 
void fanBench ()
 
void fan2Bench ()
 
void fuelPumpBench ()
 
void acRelayBench ()
 
void milBench ()
 
void starterRelayBench ()
 
void executeTSCommand (uint16_t subsystem, uint16_t index)
 
void handleBenchCategory (uint16_t index)
 
int getSavedBenchTestPinStates (uint32_t durationsInStateMs[2])
 
void processCanEcuControl (const CANRxFrame &frame)
 

Function Documentation

◆ acRelayBench()

void acRelayBench ( )

Definition at line 283 of file bench_test.cpp.

283 {
284 pinbench(BENCH_AC_RELAY_DURATION, 100.0, 1, &enginePins.acRelay);
285}
static void pinbench(float ontimeMs, float offtimeMs, int iterations, OutputPin *pinParam, bool p_swapOnOff=false)
RegisteredOutputPin acRelay
Definition efi_gpio.h:90
EnginePins enginePins
Definition efi_gpio.cpp:24

Referenced by handleBenchCategory(), and initBenchTest().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ executeTSCommand()

void executeTSCommand ( uint16_t  subsystem,
uint16_t  index 
)

Definition at line 679 of file bench_test.cpp.

679 {
680 efiPrintf("IO test subsystem=%d index=%d", subsystem, index);
681
683
684 switch (subsystem) {
687 break;
688
689 case TS_DEBUG_MODE:
691 break;
692
694 if (!running) {
697 }
698 break;
699
701 if (!running) {
704 }
705 break;
706
708 if (!running) {
709 doRunSolenoidBench(index, 1000.0,
711 }
712 break;
713
715 if (!running) {
716 doRunBenchTestLuaOutput(index, 4.0,
718 }
719 break;
720
721 case TS_X14:
722 handleCommandX14(index);
723 break;
724#if EFI_CAN_SUPPORT
725 case TS_WIDEBAND:
726 setWidebandOffset(0xff, index);
727 break;
729 {
730 uint8_t hwIndex = index >> 8;
731 uint8_t canIndex = index & 0xff;
732
733 // Hack until we fix canReWidebandHwIndex and set "Broadcast" to 0xff
734 // TODO:
735 hwIndex = hwIndex < 8 ? hwIndex : 0xff;
736 setWidebandOffset(hwIndex, canIndex);
737 }
738 break;
740 {
741 uint8_t hwIndex = index >> 8;
742 uint8_t sensType = index & 0xff;
743
744 // Hack until we fix canReWidebandHwIndex and set "Broadcast" to 0xff
745 // TODO:
746 hwIndex = hwIndex < 8 ? hwIndex : 0xff;
747 setWidebandSensorType(hwIndex, sensType);
748 }
749 break;
751 pingWideband(index >> 8);
752 break;
753
755 {
756 uint8_t hwIndex = index >> 8;
757
758 // Hack until we fix canReWidebandHwIndex and set "Broadcast" to 0xff
759 // TODO:
760 widebandUpdateHwId = hwIndex < 8 ? hwIndex : 0xff;
762 }
763 break;
764#endif // EFI_CAN_SUPPORT
766 handleBenchCategory(index);
767 break;
768
770 applyPreset(index);
771 break;
772
773 case TS_BOARD_ACTION:
774 // TODO: use call_board_override
775 if (custom_board_ts_command.has_value()) {
776 custom_board_ts_command.value()(subsystem, index);
777 }
778 break;
779
781 applyPreset((int)DEFAULT_ENGINE_TYPE);
782 break;
783
784 case TS_STOP_ENGINE:
786 break;
787
788 case 0xba:
789#if EFI_PROD_CODE && EFI_DFU_JUMP
791#endif /* EFI_DFU_JUMP */
792 break;
793
794 case REBOOT_COMMAND:
795#if EFI_PROD_CODE
796 rebootNow();
797#endif /* EFI_PROD_CODE */
798 break;
799
800#if EFI_USE_OPENBLT
801 case 0xbc:
802 /* Jump to OpenBLT if present */
804 break;
805#endif
806
807 default:
808 criticalError("Unexpected bench subsystem %d %d", subsystem, index);
809 }
810}
void jump_to_openblt()
void jump_to_bootloader()
static void requestWidebandUpdate(int hwIndex)
static void doRunFuelInjBench(size_t humanIndex, float onTimeMs, float offTimeMs, int count)
static void handleCommandX14(uint16_t index)
static void doRunSolenoidBench(size_t humanIndex, float onTime, float offTime, int count)
std::optional< setup_custom_board_ts_command_override_type > custom_board_ts_command
static void doRunSparkBench(size_t humanIndex, float onTime, float offTime, int count)
static uint8_t widebandUpdateHwId
static void doRunBenchTestLuaOutput(size_t humanIndex, float onTimeMs, float offTimeMs, int count)
void handleBenchCategory(uint16_t index)
static void applyPreset(int index)
RpmCalculator rpmCalculator
Definition engine.h:306
bool isStopped() const override
static EngineAccessor engine
Definition engine.h:413
static constexpr engine_configuration_s * engineConfiguration
debug_mode_e
@ TS_WIDEBAND_SET_IDX_BY_ID
@ TS_WIDEBAND
@ TS_CLEAR_WARNINGS
@ TS_BOARD_ACTION
@ TS_SOLENOID_CATEGORY
@ TS_LUA_OUTPUT_CATEGORY
@ TS_DEBUG_MODE
@ TS_SET_ENGINE_TYPE
@ TS_X14
@ TS_IGNITION_CATEGORY
@ TS_BENCH_CATEGORY
@ TS_WIDEBAND_SET_SENS_BY_ID
@ TS_WIDEBAND_PING_BY_ID
@ TS_WIDEBAND_FLASH_BY_ID
@ TS_SET_DEFAULT_ENGINE
@ TS_INJECTOR_CATEGORY
@ TS_STOP_ENGINE
void clearWarnings(void)
void rebootNow()
Definition rusefi.cpp:150
void setWidebandSensorType(uint8_t hwIndex, uint8_t type)
void pingWideband(uint8_t hwIndex)
void setWidebandOffset(uint8_t hwIndex, uint8_t index)
running("running", SensorCategory.SENSOR_INPUTS, FieldType.INT, 888, 1.0, -1.0, -1.0, "")
void doScheduleStopEngine(StopRequestedReason reason)

Referenced by TunerStudio::handleCrcCommand(), and processCanUserControl().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fan2Bench()

void fan2Bench ( )

Definition at line 263 of file bench_test.cpp.

263 {
264 pinbench(3000.0, 100.0, 1, &enginePins.fanRelay2);
265}
RegisteredOutputPin fanRelay2
Definition efi_gpio.h:87

Referenced by handleBenchCategory(), and initBenchTest().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fanBench()

void fanBench ( )

Definition at line 259 of file bench_test.cpp.

259 {
260 fanBenchExt(BENCH_FAN_DURATION);
261}
static void fanBenchExt(float onTimeMs)

Referenced by handleBenchCategory(), and initBenchTest().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fuelPumpBench()

void fuelPumpBench ( )

Definition at line 296 of file bench_test.cpp.

296 {
297 fuelPumpBenchExt(BENCH_FUEL_PUMP_DURATION);
298}
static void fuelPumpBenchExt(float durationMs)

Referenced by handleBenchCategory(), and initBenchTest().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getOutputOnTheBenchTest()

const OutputPin * getOutputOnTheBenchTest ( )

Definition at line 40 of file bench_test.cpp.

40 {
42}
static OutputPin * outputOnTheBenchTest

Referenced by applyVvtPinState(), and OutputPin::setValue().

Here is the caller graph for this function:

◆ getSavedBenchTestPinStates()

int getSavedBenchTestPinStates ( uint32_t  durationsInStateMs[2])

Definition at line 463 of file bench_test.cpp.

463 {
464#if EFI_SIMULATOR
465 durationsInStateMs[0] = savedDurationsInStateMs[0];
466 durationsInStateMs[1] = savedDurationsInStateMs[1];
468#else
469 UNUSED(durationsInStateMs);
470 return 0;
471#endif // EFI_SIMULATOR
472}
static uint32_t savedDurationsInStateMs[2]
static int savedPinToggleCounter
UNUSED(samplingTimeSeconds)

Referenced by sendSavedBenchStatePackets().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ handleBenchCategory()

void handleBenchCategory ( uint16_t  index)

Definition at line 354 of file bench_test.cpp.

354 {
355 switch(index) {
356 case BENCH_VVT0_VALVE:
357 vvtValveBench(0);
358 return;
359 case BENCH_VVT1_VALVE:
360 vvtValveBench(1);
361 return;
362 case BENCH_VVT2_VALVE:
363 vvtValveBench(2);
364 return;
365 case BENCH_VVT3_VALVE:
366 vvtValveBench(3);
367 return;
368 case BENCH_AUXOUT0:
369 auxOutBench(0);
370 return;
371 case BENCH_AUXOUT1:
372 auxOutBench(1);
373 return;
374 case BENCH_AUXOUT2:
375 auxOutBench(2);
376 return;
377 case BENCH_AUXOUT3:
378 auxOutBench(3);
379 return;
380 case BENCH_AUXOUT4:
381 auxOutBench(4);
382 return;
383 case BENCH_AUXOUT5:
384 auxOutBench(5);
385 return;
386 case BENCH_AUXOUT6:
387 auxOutBench(6);
388 return;
389 case BENCH_AUXOUT7:
390 auxOutBench(7);
391 return;
392 case LUA_COMMAND_1:
394 return;
395 case LUA_COMMAND_2:
397 return;
398 case LUA_COMMAND_3:
400 return;
401 case LUA_COMMAND_4:
403 return;
404#if EFI_LTFT_CONTROL
405 case LTFT_RESET:
407 return;
408 case LTFT_APPLY_TO_VE:
410 return;
411 case LTFT_DEV_POKE:
413 return;
414#endif // EFI_LTFT_CONTROL
415#if EFI_HD_ACR
416 case HD_ACR:
417 hdAcrBench(0);
418 return;
419 case HD_ACR2:
420 hdAcrBench(1);
421 return;
422#endif // EFI_HD_ACR
423 case BENCH_HPFP_VALVE:
425 return;
426 case BENCH_FUEL_PUMP:
427 // cmd_test_fuel_pump
429 return;
430 case BENCH_MAIN_RELAY:
432 return;
435 return;
437 // cmd_test_check_engine_light
438 milBench();
439 return;
441 acRelayBench();
442 return;
443 case BENCH_FAN_RELAY:
444 fanBench();
445 return;
446 case BENCH_IDLE_VALVE:
447 // cmd_test_idle_valve
448#if EFI_IDLE_CONTROL
450#endif /* EFI_IDLE_CONTROL */
451 return;
453 fan2Bench();
454 return;
455 case BENCH_CANCEL:
457 return;
458 default:
459 criticalError("Unexpected bench function %d", index);
460 }
461}
int luaCommandCounters[LUA_BUTTON_COUNT]
void fanBench()
void milBench()
static void cancelBenchTest()
void starterRelayBench()
static void hdAcrBench(int index)
static void hpfpValveBench()
static void mainRelayBench()
static void auxOutBench(int index)
void fan2Bench()
void fuelPumpBench()
void acRelayBench()
static void vvtValveBench(int vvtIndex)
@ LUA_COMMAND_3
@ BENCH_AC_COMPRESSOR_RELAY
@ LUA_COMMAND_2
@ BENCH_FAN_RELAY
@ BENCH_CANCEL
@ BENCH_VVT0_VALVE
@ BENCH_AUXOUT4
@ BENCH_AUXOUT2
@ LUA_COMMAND_1
@ BENCH_MAIN_RELAY
@ BENCH_AUXOUT7
@ HD_ACR2
@ BENCH_IDLE_VALVE
@ LTFT_APPLY_TO_VE
@ LTFT_DEV_POKE
@ HD_ACR
@ BENCH_AUXOUT3
@ BENCH_CHECK_ENGINE_LIGHT
@ BENCH_VVT3_VALVE
@ BENCH_AUXOUT5
@ LUA_COMMAND_4
@ BENCH_AUXOUT1
@ BENCH_VVT1_VALVE
@ BENCH_AUXOUT0
@ BENCH_FAN_RELAY_2
@ LTFT_RESET
@ BENCH_HPFP_VALVE
@ BENCH_FUEL_PUMP
@ BENCH_AUXOUT6
@ BENCH_STARTER_ENABLE_RELAY
@ BENCH_VVT2_VALVE
void startIdleBench(void)
void applyLongTermFuelTrimToVe()
void resetLongTermFuelTrim()
void devPokeLongTermFuelTrim()

Referenced by executeTSCommand(), and processCanQcBenchTest().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ initBenchTest()

void initBenchTest ( )

Definition at line 827 of file bench_test.cpp.

827 {
828 addConsoleAction("fuelpumpbench", fuelPumpBench);
829 addConsoleActionF("fuelpumpbench2", fuelPumpBenchExt);
830
831 addConsoleActionFFF(CMD_FUEL_BENCH, fuelInjBench);
833
834 addConsoleActionFFF(CMD_SPARK_BENCH, sparkBench);
835 addConsoleActionFFFF("sparkbench2", sparkBenchExt);
836
838
839 addConsoleAction(CMD_AC_RELAY_BENCH, acRelayBench);
840
841 addConsoleAction(CMD_FAN_BENCH, fanBench);
842 addConsoleAction(CMD_FAN2_BENCH, fan2Bench);
843 addConsoleActionF("fanbench2", fanBenchExt);
844
845 addConsoleAction("mainrelaybench", mainRelayBench);
846
847#if EFI_CAN_SUPPORT
848#if EFI_WIDEBAND_FIRMWARE_UPDATE
849 addConsoleActionI("update_wideband", requestWidebandUpdate);
850#endif // EFI_WIDEBAND_FIRMWARE_UPDATE
851 addConsoleActionII("set_wideband_index", [](int hwIndex, int index) { setWidebandOffset(hwIndex, index); });
852#endif // EFI_CAN_SUPPORT
853
854 addConsoleAction(CMD_STARTER_BENCH, starterRelayBench);
855 addConsoleAction(CMD_MIL_BENCH, milBench);
856 addConsoleAction(CMD_HPFP_BENCH, hpfpValveBench);
857
858#if EFI_CAN_SUPPORT
859 addConsoleActionI("ping_wideband", [](int index) {
860 pingWideband(index);
861 });
862#endif // EFI_CAN_SUPPORT
863
864#if EFI_LUA
865 // this commands facilitates TS Lua Button scripts development
866 addConsoleActionI("lua_button", [](int index) {
867 if (index < 0 || index > LUA_BUTTON_COUNT)
868 return;
869 luaCommandCounters[index - 1]++;
870 });
871 addConsoleActionFFFF("luabench2", [](float humanIndex, float onTime, float offTimeMs, float count) {
872 doRunBenchTestLuaOutput((int)humanIndex, onTime, offTimeMs, (int)count);
873 });
874#endif // EFI_LUA
875 instance.start();
877}
static void sparkBenchExt(float humanIndex, float onTime, float offTimeMs, float count)
static void sparkBench(float onTime, float offTimeMs, float count)
void onConfigurationChangeBenchTest()
static void fuelInjBench(float onTimeMs, float offTimeMs, float count)
static void fuelInjBenchExt(float humanIndex, float onTimeMs, float offTimeMs, float count)
static void tcuSolenoidBench(float humanIndex, float onTime, float offTimeMs, float count)
static BenchController instance
void addConsoleActionF(const char *token, VoidFloat callback)
void addConsoleAction(const char *token, Void callback)
Register console action without parameters.
void addConsoleActionII(const char *token, VoidIntInt callback)
Register a console command with two Integer parameters.
void addConsoleActionI(const char *token, VoidInt callback)
Register a console command with one Integer parameter.
void addConsoleActionFFFF(const char *token, VoidFloatFloatFloatFloat callback)
void addConsoleActionFFF(const char *token, VoidFloatFloatFloat callback)
uint16_t count
Definition tunerstudio.h:1

Referenced by commonInitEngineController().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ isRunningBenchTest()

bool isRunningBenchTest ( )

Definition at line 36 of file bench_test.cpp.

36 {
37 return isRunningBench;
38}
static bool isRunningBench

Referenced by Engine::efiWatchdog(), FanController::onSlowCallback(), and FuelPumpController::onSlowCallback().

Here is the caller graph for this function:

◆ milBench()

void milBench ( )

we are blinking for 16 seconds so that one can click the button and walk around to see the light blinking

Definition at line 270 of file bench_test.cpp.

270 {
271 pinbench(500.0, 500.0, 16, &enginePins.checkEnginePin);
272}
RegisteredOutputPin checkEnginePin
Definition efi_gpio.h:118

Referenced by handleBenchCategory(), and initBenchTest().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ onConfigurationChangeBenchTest()

void onConfigurationChangeBenchTest ( )

Definition at line 812 of file bench_test.cpp.

812 {
813 // default values if configuration was not specified
816 }
817
820 }
821
824 }
825}

Referenced by incrementGlobalConfigurationVersion(), and initBenchTest().

Here is the caller graph for this function:

◆ processCanEcuControl()

void processCanEcuControl ( const CANRxFrame frame)

Definition at line 660 of file bench_test.cpp.

660 {
661 if (frame.data8[0] != (int)bench_test_magic_numbers_e::BENCH_HEADER) {
662 return;
663 }
664
665 int eid = CAN_EID(frame);
666 if (eid == (int)bench_test_packet_ids_e::ECU_SET_CALIBRATION) {
668 } else if (eid == (int)bench_test_packet_ids_e::ECU_REQ_CALIBRATION) {
670 } else if (eid == (int)bench_test_packet_ids_e::ECU_CAN_BUS_USER_CONTROL) {
672 }
673}
static void processCanRequestCalibration(const CANRxFrame &frame)
static void processCanSetCalibration(const CANRxFrame &frame)
static void processCanUserControl(const CANRxFrame &frame)
uint8_t data8[8]
Frame data.
Definition can_mocks.h:55

Referenced by processCanRxMessage().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ starterRelayBench()

void starterRelayBench ( )

Definition at line 274 of file bench_test.cpp.

274 {
275 pinbench(BENCH_STARTER_DURATION, 100.0, 1, &enginePins.starterControl);
276}
RegisteredOutputPin starterControl
Definition efi_gpio.h:82

Referenced by handleBenchCategory(), and initBenchTest().

Here is the call graph for this function:
Here is the caller graph for this function:

Go to the source code of this file.