visiting "live data" tab causes fatal error on ECU fix #4271

This commit is contained in:
rusefillc 2022-06-25 19:48:48 -04:00
parent bbe64105b8
commit e8777995be
3 changed files with 1 additions and 105 deletions

View File

@ -29,6 +29,7 @@ Release template (copy/paste this for new release):
### Fixed
- Improved logic used to disambiguate trigger sync using cam/VVT information. Engine now runs in wasted spark until cam sync is achieved, at which point it switches to fully sequential. #4099
- visiting "live data" tab causes fatal error on ECU #4271
## June 2022 Release - "Day 98"

View File

@ -162,105 +162,6 @@ void TunerStudio::handlePageSelectCommand(TsChannelBase *tsChannel, ts_response_
sendOkResponse(tsChannel, mode);
}
#if EFI_TUNER_STUDIO
const void * getStructAddr(live_data_e structId) {
#if EFI_UNIT_TEST
if (engine == nullptr) {
return nullptr;
}
#endif
switch (structId) {
case LDS_output_channels:
return reinterpret_cast<const uint8_t*>(&engine->outputChannels);
case LDS_high_pressure_fuel_pump:
#if EFI_HPFP
return static_cast<high_pressure_fuel_pump_s*>(&engine->module<HpfpController>().unmock());
#else
return nullptr; // explicit null to confirm that this struct is handled
#endif // EFI_HPFP
case LDS_launch_control_state:
#if EFI_LAUNCH_CONTROL
return static_cast<launch_control_state_s*>(&engine->launchController);
#else
return nullptr; // explicit null to confirm that this struct is handled
#endif // EFI_LAUNCH_CONTROL
case LDS_injector_model:
return static_cast<injector_model_s*>(&engine->module<InjectorModel>().unmock());
case LDS_boost_control:
#if EFI_BOOST_CONTROL
return static_cast<boost_control_s*>(&engine->boostController);
#else
return nullptr; // explicit null to confirm that this struct is handled
#endif // EFI_BOOST_CONTROL
case LDS_ac_control:
return static_cast<ac_control_s*>(&engine->module<AcController>().unmock());
case LDS_fan_control:
return static_cast<fan_control_s*>(&engine->fan1);
case LDS_fuel_pump_control:
return static_cast<fuel_pump_control_s*>(&engine->module<FuelPumpController>().unmock());
case LDS_main_relay:
return static_cast<main_relay_s*>(&engine->module<MainRelayController>().unmock());
case LDS_engine_state:
return static_cast<engine_state_s*>(&engine->engineState);
case LDS_tps_accel_state:
return static_cast<tps_accel_state_s*>(&engine->tpsAccelEnrichment);
case LDS_trigger_central:
return static_cast<trigger_central_s*>(&engine->triggerCentral);
case LDS_trigger_state:
#if EFI_SHAFT_POSITION_INPUT
return static_cast<trigger_state_s*>(&engine->triggerCentral.triggerState);
#else
return nullptr;
#endif // EFI_SHAFT_POSITION_INPUT
case LDS_wall_fuel_state:
return static_cast<wall_fuel_state_s*>(&engine->injectionEvents.elements[0].wallFuel);
case LDS_idle_state:
return static_cast<idle_state_s*>(&engine->module<IdleController>().unmock());
case LDS_ignition_state:
return static_cast<ignition_state_s*>(&engine->ignitionState);
case LDS_electronic_throttle:
// todo: figure out how to handle two units?
return nullptr;
//#if EFI_ELECTRONIC_THROTTLE_BODY
// case LDS_ETB_PID:
// return engine->etbControllers[0]->getPidState();
//#endif /* EFI_ELECTRONIC_THROTTLE_BODY */
//
//#ifndef EFI_IDLE_CONTROL
// case LDS_IDLE_PID:
// return static_cast<pid_state_s*>(getIdlePid());
//#endif /* EFI_IDLE_CONTROL */
default:
// huh? firmwareError(OBD_PCM_Processor_Fault, "getStructAddr not implemented for %d", (int)structId);
return nullptr;
}
}
/**
* Read internal structure for Live Doc
* This is somewhat similar to read page and somewhat similar to read outputs
* We can later consider combining this functionality
*/
static void handleGetStructContent(TsChannelBase* tsChannel, int structId, int size) {
tsState.readPageCommandsCounter++;
const void *addr = getStructAddr((live_data_e)structId);
if (addr == nullptr) {
// todo: add warning code - unexpected structId
return;
}
tsChannel->sendResponse(TS_CRC, (const uint8_t *)addr, size);
}
#endif // EFI_TUNER_STUDIO
bool validateOffsetCount(size_t offset, size_t count, TsChannelBase* tsChannel);
extern bool rebootForPresetPending;
@ -398,7 +299,6 @@ static bool isKnownCommand(char command) {
|| command == TS_PAGE_COMMAND || command == TS_BURN_COMMAND || command == TS_SINGLE_WRITE_COMMAND
|| command == TS_CHUNK_WRITE_COMMAND || command == TS_EXECUTE
|| command == TS_IO_TEST_COMMAND
|| command == TS_GET_STRUCT
|| command == TS_SET_LOGGER_SWITCH
|| command == TS_GET_LOGGER_GET_BUFFER
|| command == TS_GET_COMPOSITE_BUFFER_DONE_DIFFERENTLY
@ -701,9 +601,6 @@ int TunerStudio::handleCrcCommand(TsChannelBase* tsChannel, char *data, int inco
case TS_PAGE_COMMAND:
handlePageSelectCommand(tsChannel, TS_CRC);
break;
case TS_GET_STRUCT:
handleGetStructContent(tsChannel, offset, count);
break;
case TS_CHUNK_WRITE_COMMAND:
handleWriteChunkCommand(tsChannel, TS_CRC, offset, count, data + sizeof(TunerStudioWriteChunkRequest));
break;

View File

@ -2010,8 +2010,6 @@ end_struct
#define TS_ONLINE_PROTOCOL 'z'
! 0x34
#define TS_GET_OUTPUTS_SIZE '4'
! 0x39
#define TS_GET_STRUCT '9'
#define TS_GET_COMPOSITE_BUFFER_DONE_DIFFERENTLY '8'
#define TS_COMPOSITE_ENABLE 1