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 285 of file bench_test.cpp.

285 {
286 pinbench(BENCH_AC_RELAY_DURATION, 100.0, 1, &enginePins.acRelay);
287}
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 697 of file bench_test.cpp.

697 {
698 efiPrintf("IO test subsystem=%d index=%d", subsystem, index);
699
701
702 switch (subsystem) {
705 break;
706
707 case TS_DEBUG_MODE:
709 break;
710
712 if (!running) {
715 }
716 break;
717
719 if (!running) {
722 }
723 break;
724
726 if (!running) {
727 doRunSolenoidBench(index, 1000.0,
729 }
730 break;
731
733 if (!running) {
734 doRunBenchTestLuaOutput(index, 4.0,
736 }
737 break;
738
739 case TS_X14:
740 handleCommandX14(index);
741 break;
742#if EFI_CAN_SUPPORT
743 case TS_WIDEBAND:
744 setWidebandOffset(0xff, index);
745 break;
747 {
748 uint8_t hwIndex = index >> 8;
749 uint8_t canIndex = index & 0xff;
750
751 // Hack until we fix canReWidebandHwIndex and set "Broadcast" to 0xff
752 // TODO:
753 hwIndex = hwIndex < 8 ? hwIndex : 0xff;
754 setWidebandOffset(hwIndex, canIndex);
755 }
756 break;
758 {
759 uint8_t hwIndex = index >> 8;
760 uint8_t sensType = index & 0xff;
761
762 // Hack until we fix canReWidebandHwIndex and set "Broadcast" to 0xff
763 // TODO:
764 hwIndex = hwIndex < 8 ? hwIndex : 0xff;
765 setWidebandSensorType(hwIndex, sensType);
766 }
767 break;
769 pingWideband(index >> 8);
770 break;
771
774 {
775 uint8_t hwIndex = index >> 8;
776
777 // Hack until we fix canReWidebandHwIndex and set "Broadcast" to 0xff
778 // TODO:
779 widebandUpdateHwId = hwIndex < 8 ? hwIndex : 0xff;
781 }
782 break;
783#endif // EFI_CAN_SUPPORT
785 handleBenchCategory(index);
786 break;
787
789 applyPreset(index);
790 break;
791
792 case TS_BOARD_ACTION:
793 // TODO: use call_board_override
794 if (custom_board_ts_command.has_value()) {
795 custom_board_ts_command.value()(subsystem, index);
796 }
797 break;
798
800 applyPreset((int)DEFAULT_ENGINE_TYPE);
801 break;
802
803 case TS_STOP_ENGINE:
805 break;
806
807 case 0xba:
808#if EFI_PROD_CODE && EFI_DFU_JUMP
810#endif /* EFI_DFU_JUMP */
811 break;
812
813 case REBOOT_COMMAND:
814#if EFI_PROD_CODE
815 rebootNow();
816#endif /* EFI_PROD_CODE */
817 break;
818
819#if EFI_USE_OPENBLT
820 case 0xbc:
821 /* Jump to OpenBLT if present */
823 break;
824#endif
825
826 default:
827 criticalError("Unexpected bench subsystem %d %d", subsystem, index);
828 }
829}
void jump_to_openblt()
void jump_to_bootloader()
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 requestWidebandUpdate(int hwIndex, bool fromFile)
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_WIDEBAND_FLASH_BY_ID_FILE
@ 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 265 of file bench_test.cpp.

265 {
266 pinbench(3000.0, 100.0, 1, &enginePins.fanRelay2);
267}
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 261 of file bench_test.cpp.

261 {
262 fanBenchExt(BENCH_FAN_DURATION);
263}
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 298 of file bench_test.cpp.

298 {
299 fuelPumpBenchExt(BENCH_FUEL_PUMP_DURATION);
300}
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 43 of file bench_test.cpp.

43 {
45}
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 472 of file bench_test.cpp.

472 {
473#if EFI_SIMULATOR
474 durationsInStateMs[0] = savedDurationsInStateMs[0];
475 durationsInStateMs[1] = savedDurationsInStateMs[1];
477#else
478 UNUSED(durationsInStateMs);
479 return 0;
480#endif // EFI_SIMULATOR
481}
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 363 of file bench_test.cpp.

363 {
364 switch(index) {
365 case BENCH_VVT0_VALVE:
366 vvtValveBench(0);
367 return;
368 case BENCH_VVT1_VALVE:
369 vvtValveBench(1);
370 return;
371 case BENCH_VVT2_VALVE:
372 vvtValveBench(2);
373 return;
374 case BENCH_VVT3_VALVE:
375 vvtValveBench(3);
376 return;
377 case BENCH_AUXOUT0:
378 auxOutBench(0);
379 return;
380 case BENCH_AUXOUT1:
381 auxOutBench(1);
382 return;
383 case BENCH_AUXOUT2:
384 auxOutBench(2);
385 return;
386 case BENCH_AUXOUT3:
387 auxOutBench(3);
388 return;
389 case BENCH_AUXOUT4:
390 auxOutBench(4);
391 return;
392 case BENCH_AUXOUT5:
393 auxOutBench(5);
394 return;
395 case BENCH_AUXOUT6:
396 auxOutBench(6);
397 return;
398 case BENCH_AUXOUT7:
399 auxOutBench(7);
400 return;
401 case LUA_COMMAND_1:
403 return;
404 case LUA_COMMAND_2:
406 return;
407 case LUA_COMMAND_3:
409 return;
410 case LUA_COMMAND_4:
412 return;
413#if EFI_LTFT_CONTROL
414 case LTFT_RESET:
416 return;
417 case LTFT_APPLY_TO_VE:
419 return;
420 case LTFT_DEV_POKE:
422 return;
423#endif // EFI_LTFT_CONTROL
424#if EFI_HD_ACR
425 case HD_ACR:
426 hdAcrBench(0);
427 return;
428 case HD_ACR2:
429 hdAcrBench(1);
430 return;
431#endif // EFI_HD_ACR
432 case BENCH_HPFP_VALVE:
434 return;
435 case BENCH_FUEL_PUMP:
436 // cmd_test_fuel_pump
438 return;
439 case BENCH_MAIN_RELAY:
441 return;
444 return;
446 // cmd_test_check_engine_light
447 milBench();
448 return;
450 acRelayBench();
451 return;
452 case BENCH_FAN_RELAY:
453 fanBench();
454 return;
455 case BENCH_IDLE_VALVE:
456 // cmd_test_idle_valve
457#if EFI_IDLE_CONTROL
459#endif /* EFI_IDLE_CONTROL */
460 return;
462 fan2Bench();
463 return;
464 case BENCH_CANCEL:
466 return;
467 default:
468 criticalError("Unexpected bench function %d", index);
469 }
470}
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 846 of file bench_test.cpp.

846 {
847 addConsoleAction("fuelpumpbench", fuelPumpBench);
848 addConsoleActionF("fuelpumpbench2", fuelPumpBenchExt);
849
850 addConsoleActionFFF(CMD_FUEL_BENCH, fuelInjBench);
852
853 addConsoleActionFFF(CMD_SPARK_BENCH, sparkBench);
854 addConsoleActionFFFF("sparkbench2", sparkBenchExt);
855
857
858 addConsoleAction(CMD_AC_RELAY_BENCH, acRelayBench);
859
860 addConsoleAction(CMD_FAN_BENCH, fanBench);
861 addConsoleAction(CMD_FAN2_BENCH, fan2Bench);
862 addConsoleActionF("fanbench2", fanBenchExt);
863
864 addConsoleAction("mainrelaybench", mainRelayBench);
865
866#if EFI_CAN_SUPPORT
867#if EFI_WIDEBAND_FIRMWARE_UPDATE
868 addConsoleActionI("update_wideband", [](int hwIndex) { requestWidebandUpdate(hwIndex, false); });
869#endif // EFI_WIDEBAND_FIRMWARE_UPDATE
870 addConsoleActionII("set_wideband_index", [](int hwIndex, int index) { setWidebandOffset(hwIndex, index); });
871#endif // EFI_CAN_SUPPORT
872
873 addConsoleAction(CMD_STARTER_BENCH, starterRelayBench);
874 addConsoleAction(CMD_MIL_BENCH, milBench);
875 addConsoleAction(CMD_HPFP_BENCH, hpfpValveBench);
876
877#if EFI_CAN_SUPPORT
878 addConsoleActionI("ping_wideband", [](int index) {
879 pingWideband(index);
880 });
881#endif // EFI_CAN_SUPPORT
882
883#if EFI_LUA
884 // this commands facilitates TS Lua Button scripts development
885 addConsoleActionI("lua_button", [](int index) {
886 if (index < 0 || index > LUA_BUTTON_COUNT)
887 return;
888 luaCommandCounters[index - 1]++;
889 });
890 addConsoleActionFFFF("luabench2", [](float humanIndex, float onTime, float offTimeMs, float count) {
891 doRunBenchTestLuaOutput((int)humanIndex, onTime, offTimeMs, (int)count);
892 });
893#endif // EFI_LUA
894 instance.start();
896}
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 39 of file bench_test.cpp.

39 {
40 return isRunningBench;
41}
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 272 of file bench_test.cpp.

272 {
273 pinbench(500.0, 500.0, 16, &enginePins.checkEnginePin);
274}
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 831 of file bench_test.cpp.

831 {
832 // default values if configuration was not specified
835 }
836
839 }
840
843 }
844}

Referenced by incrementGlobalConfigurationVersion(), and initBenchTest().

Here is the caller graph for this function:

◆ processCanEcuControl()

void processCanEcuControl ( const CANRxFrame frame)

Definition at line 678 of file bench_test.cpp.

678 {
679 if (frame.data8[0] != (int)bench_test_magic_numbers_e::BENCH_HEADER) {
680 return;
681 }
682
683 int eid = CAN_EID(frame);
684 if (eid == (int)bench_test_packet_ids_e::ECU_SET_CALIBRATION) {
686 } else if (eid == (int)bench_test_packet_ids_e::ECU_REQ_CALIBRATION) {
688 } else if (eid == (int)bench_test_packet_ids_e::ECU_CAN_BUS_USER_CONTROL) {
690 }
691}
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 276 of file bench_test.cpp.

276 {
277 pinbench(BENCH_STARTER_DURATION, 100.0, 1, &enginePins.starterControl);
278}
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.