| Line | Branch | Decision | Exec | Source |
|---|---|---|---|---|
| 1 | /** | |||
| 2 | * @file subaru.cpp | |||
| 3 | * | |||
| 4 | * SUBARU_2003_WRX | |||
| 5 | * set engine_type 22 | |||
| 6 | * | |||
| 7 | * @date Sep 14, 2014 | |||
| 8 | * @author Andrey Belomutskiy, (c) 2012-2020 | |||
| 9 | */ | |||
| 10 | ||||
| 11 | #include "pch.h" | |||
| 12 | ||||
| 13 | #include "subaru.h" | |||
| 14 | #include "custom_engine.h" | |||
| 15 | #include "proteus_meta.h" | |||
| 16 | #include "defaults.h" | |||
| 17 | #include "mre_meta.h" | |||
| 18 | ||||
| 19 | /** | |||
| 20 | * MRE_SUBARU_EJ18 | |||
| 21 | * set engine_type 37 | |||
| 22 | */ | |||
| 23 | ✗ | void setSubaruEJ18_MRE() { | ||
| 24 | ✗ | engineConfiguration->trigger.type = trigger_type_e::TT_VVT_SUBARU_7_WITHOUT_6; | ||
| 25 | ||||
| 26 | ||||
| 27 | // engineConfiguration->isDoubleSolenoidIdle = true; | |||
| 28 | ||||
| 29 | ✗ | engineConfiguration->displacement = 1.8; | ||
| 30 | ✗ | strcpy(engineConfiguration->engineMake, ENGINE_MAKE_SUBARU); | ||
| 31 | ✗ | strcpy(engineConfiguration->engineCode, "EJ18"); | ||
| 32 | ||||
| 33 | ✗ | engineConfiguration->firingOrder = FO_1_3_2_4; | ||
| 34 | ✗ | engineConfiguration->injectionMode = IM_SEQUENTIAL; | ||
| 35 | ✗ | engineConfiguration->ignitionMode = IM_WASTED_SPARK; | ||
| 36 | ||||
| 37 | #if (BOARD_TLE8888_COUNT > 0) | |||
| 38 | // Gpio::TLE8888_PIN_23: "33 - GP Out 3" | |||
| 39 | engineConfiguration->malfunctionIndicatorPin = MRE_GPOUT_3; | |||
| 40 | #endif /* BOARD_TLE8888_COUNT */ | |||
| 41 | ||||
| 42 | // this car has high-side main relay WOW so we have to hard wire it to ignition switch | |||
| 43 | ||||
| 44 | ||||
| 45 | ✗ | } | ||
| 46 | ||||
| 47 | /* | |||
| 48 | * Subaru SVX (Alcyone SVX) | |||
| 49 | */ | |||
| 50 | ||||
| 51 | ✗ | void setSubaruEG33Defaults() { | ||
| 52 | ✗ | setCamOperationMode(); | ||
| 53 | ||||
| 54 | ✗ | engineConfiguration->trigger.type = trigger_type_e::TT_SUBARU_SVX; | ||
| 55 | ||||
| 56 | ✗ | engineConfiguration->cylindersCount = 6; | ||
| 57 | ✗ | setLeftRightBanksNeedBetterName(); | ||
| 58 | ✗ | engineConfiguration->firingOrder = FO_1_6_3_2_5_4; | ||
| 59 | ||||
| 60 | ✗ | engineConfiguration->ignitionMode = IM_INDIVIDUAL_COILS; | ||
| 61 | ✗ | engineConfiguration->crankingInjectionMode = IM_SIMULTANEOUS; | ||
| 62 | ✗ | engineConfiguration->injectionMode = IM_SEQUENTIAL; | ||
| 63 | ||||
| 64 | /* TODO: */ | |||
| 65 | ✗ | engineConfiguration->globalTriggerAngleOffset = 114; // the end of 19th tooth? | ||
| 66 | ||||
| 67 | ✗ | engineConfiguration->fuelAlgorithm = engine_load_mode_e::LM_REAL_MAF; | ||
| 68 | ||||
| 69 | ✗ | engineConfiguration->displacement = 3.30; | ||
| 70 | ✗ | engineConfiguration->injector.flow = 250; | ||
| 71 | ||||
| 72 | ✗ | setTable(config->crankingCycleBaseFuel, 5); // ??? | ||
| 73 | ✗ | engineConfiguration->cranking.rpm = 400; | ||
| 74 | ||||
| 75 | ✗ | engineConfiguration->rpmHardLimit = 6500; | ||
| 76 | ||||
| 77 | ✗ | engineConfiguration->idleStepperReactionTime = 10; | ||
| 78 | ✗ | engineConfiguration->stepperDirectionPinMode = OM_INVERTED; | ||
| 79 | ✗ | engineConfiguration->useLinearCltSensor = true; | ||
| 80 | ||||
| 81 | ✗ | engineConfiguration->canReadEnabled = true; | ||
| 82 | ✗ | engineConfiguration->canWriteEnabled = false; | ||
| 83 | ||||
| 84 | /* Fully closed - 0.9V, fully opened - 4.7 (?) */ | |||
| 85 | ✗ | engineConfiguration->tpsMin = convertVoltageTo10bitADC(0.9); | ||
| 86 | ✗ | engineConfiguration->tpsMax = convertVoltageTo10bitADC(4.7); | ||
| 87 | ✗ | engineConfiguration->tpsErrorDetectionTooLow = -10; // -10% open | ||
| 88 | ✗ | engineConfiguration->tpsErrorDetectionTooHigh = 110; // 110% open | ||
| 89 | ||||
| 90 | ✗ | engineConfiguration->mapMinBufferLength = 4; | ||
| 91 | ||||
| 92 | /* idle configuration */ | |||
| 93 | ✗ | setTable(config->cltIdleCorrTable, 30.0); | ||
| 94 | ||||
| 95 | ✗ | engineConfiguration->maxAcRpm = 3000; | ||
| 96 | ||||
| 97 | /* Check this */ | |||
| 98 | ✗ | engineConfiguration->tachPulsePerRev = 2; | ||
| 99 | ✗ | } | ||
| 100 | ||||
| 101 | ✗ | void setSubaru2011() { | ||
| 102 | ✗ | engineConfiguration->allowIdenticalPps = true; | ||
| 103 | ✗ | setPPSCalibration(0.69, 3.38, 0.69, 3.38); | ||
| 104 | ||||
| 105 | ✗ | engineConfiguration->displacement = 2.5; | ||
| 106 | ✗ | strcpy(engineConfiguration->engineMake, ENGINE_MAKE_SUBARU); | ||
| 107 | ✗ | engineConfiguration->trigger.type = trigger_type_e::TT_36_2_2_2; | ||
| 108 | ✗ | engineConfiguration->vvtMode[0] = VVT_BOSCH_QUICK_START; | ||
| 109 | ✗ | engineConfiguration->vvtMode[1] = VVT_BOSCH_QUICK_START; | ||
| 110 | ✗ | engineConfiguration->firingOrder = FO_1_3_2_4; | ||
| 111 | ✗ | engineConfiguration->injectionMode = IM_SEQUENTIAL; | ||
| 112 | ||||
| 113 | #if HW_PROTEUS && EFI_PROD_CODE | |||
| 114 | setProteusEtbIO(); | |||
| 115 | engineConfiguration->triggerInputPins[0] = PROTEUS_VR_1; | |||
| 116 | engineConfiguration->camInputs[0] = PROTEUS_DIGITAL_1; | |||
| 117 | engineConfiguration->camInputs[1] = PROTEUS_DIGITAL_2; | |||
| 118 | engineConfiguration->camInputs[2] = PROTEUS_DIGITAL_3; | |||
| 119 | engineConfiguration->camInputs[3] = PROTEUS_DIGITAL_4; | |||
| 120 | ||||
| 121 | ||||
| 122 | engineConfiguration->starterControlPin = Gpio::PROTEUS_LS_14; | |||
| 123 | engineConfiguration->startStopButtonPin = PROTEUS_IN_AV_6_DIGITAL; | |||
| 124 | #endif // HW_PROTEUS | |||
| 125 | ||||
| 126 | ✗ | engineConfiguration->tpsMin = convertVoltageTo10bitADC(0.68); | ||
| 127 | ✗ | engineConfiguration->tpsMax = convertVoltageTo10bitADC(3.96); | ||
| 128 | ✗ | engineConfiguration->tps1SecondaryMin = convertVoltageTo10bitADC(1.55); | ||
| 129 | ✗ | engineConfiguration->tps1SecondaryMax = convertVoltageTo10bitADC(4.17); | ||
| 130 | ||||
| 131 | ✗ | } | ||
| 132 |