diff --git a/firmware/config/engines/bmw_n73.cpp b/firmware/config/engines/bmw_n73.cpp index 57712404aa..cefd72acbb 100644 --- a/firmware/config/engines/bmw_n73.cpp +++ b/firmware/config/engines/bmw_n73.cpp @@ -11,3 +11,31 @@ void setEngineProteusBMW_N73_GDI() { } +void setEngineProteusGearboxManInTheMiddle() { + strncpy(config->luaScript, R"( + +CAN_BMW_E90_RPM_THROTTLE = 0x0AA +CAN_BMW_E90_TORQUE_DEMAND = 0x0B6 +CAN_BMW_E90_IGNITION_KEY = 0x130 +CAN_BMW_E65_GEAR_SELECTOR = 0x192 +CAN_BMW_E90_COOLANT = 0x1D0 +CAN_BMW_E90_DASH_ON = 0x332 + +ECU_BUS = 1 +GEAR_BUS = 2 + +canRxAdd(CAN_BMW_E90_RPM_THROTTLE) +canRxAdd(CAN_BMW_E90_TORQUE_DEMAND) +canRxAdd(CAN_BMW_E90_IGNITION_KEY) +canRxAdd(CAN_BMW_E65_GEAR_SELECTOR) +canRxAdd(CAN_BMW_E90_COOLANT) +canRxAdd(CAN_BMW_E90_DASH_ON) + + +txPayload = {} +function onTick() +end +)", efi::size(config->luaScript)); + + +} diff --git a/firmware/controllers/algo/engine_configuration.cpp b/firmware/controllers/algo/engine_configuration.cpp index a2ebaf8be5..e5f7ba188a 100644 --- a/firmware/controllers/algo/engine_configuration.cpp +++ b/firmware/controllers/algo/engine_configuration.cpp @@ -1054,7 +1054,9 @@ void resetConfigurationExt(configuration_callback_t boardCallback, engine_type_e case HONDA_600: setHonda600(); break; - case UNUSED9: + case PROTEUS_E65_6H_MAN_IN_THE_MIDDLE: + setEngineProteusGearboxManInTheMiddle(); + break; case FORD_ESCORT_GT: setFordEscortGt(); break; diff --git a/firmware/controllers/can/can_bmw.h b/firmware/controllers/can/can_bmw.h index 481269c8a8..1cd89d5d16 100644 --- a/firmware/controllers/can/can_bmw.h +++ b/firmware/controllers/can/can_bmw.h @@ -70,3 +70,6 @@ //#define CAN_BMW_E90_HAND_BRAKE 0x34F // WHEEL_TOLERANCE 0x374 // MECH Getriebedaten 3 0x3B1 + +// https://www.loopybunny.co.uk/CarPC/can/3B4.html +// Operating voltage #3B4