From aa083a2be857ae7b1444509705c3639f69702913 Mon Sep 17 00:00:00 2001 From: GitHub gen-configs Action Date: Wed, 1 Jan 2025 17:10:15 +0000 Subject: [PATCH] Auto-generated configs and docs --- ...ration_generated_structures_alphax-2chan.h | 740 ++++++++--------- ...ration_generated_structures_alphax-4chan.h | 740 ++++++++--------- ...ion_generated_structures_alphax-4chan_f7.h | 740 ++++++++--------- ...ation_generated_structures_alphax-4k-gdi.h | 740 ++++++++--------- ...n_generated_structures_alphax-8chan-revA.h | 740 ++++++++--------- ...ration_generated_structures_alphax-8chan.h | 740 ++++++++--------- ...ion_generated_structures_alphax-8chan_f7.h | 740 ++++++++--------- ...ation_generated_structures_alphax-silver.h | 740 ++++++++--------- ...ation_generated_structures_at_start_f435.h | 740 ++++++++--------- ...configuration_generated_structures_atlas.h | 740 ++++++++--------- ...tion_generated_structures_f407-discovery.h | 742 ++++++++--------- ...tion_generated_structures_f429-discovery.h | 740 ++++++++--------- ...tion_generated_structures_f469-discovery.h | 740 ++++++++--------- ...ation_generated_structures_frankenso_na6.h | 740 ++++++++--------- ...nfiguration_generated_structures_haba208.h | 740 ++++++++--------- ...ation_generated_structures_hellen-112-17.h | 740 ++++++++--------- ...ation_generated_structures_hellen-gm-e67.h | 740 ++++++++--------- ...tion_generated_structures_hellen-honda-k.h | 744 ++++++++--------- ...guration_generated_structures_hellen-nb1.h | 740 ++++++++--------- ...ion_generated_structures_hellen121nissan.h | 740 ++++++++--------- ...ration_generated_structures_hellen121vag.h | 740 ++++++++--------- ...iguration_generated_structures_hellen128.h | 740 ++++++++--------- ...on_generated_structures_hellen154hyundai.h | 740 ++++++++--------- ...generated_structures_hellen154hyundai_f7.h | 740 ++++++++--------- ...figuration_generated_structures_hellen72.h | 740 ++++++++--------- ...figuration_generated_structures_hellen81.h | 740 ++++++++--------- ...uration_generated_structures_hellen88bmw.h | 740 ++++++++--------- ...iguration_generated_structures_hellenNA6.h | 740 ++++++++--------- ...ration_generated_structures_hellenNA8_96.h | 740 ++++++++--------- ...configuration_generated_structures_m74_9.h | 742 ++++++++--------- ...ation_generated_structures_mre-legacy_f4.h | 740 ++++++++--------- ...onfiguration_generated_structures_mre_f4.h | 740 ++++++++--------- ...onfiguration_generated_structures_mre_f7.h | 740 ++++++++--------- ...uration_generated_structures_nucleo_f413.h | 740 ++++++++--------- ...guration_generated_structures_proteus_f4.h | 740 ++++++++--------- ...guration_generated_structures_proteus_f7.h | 740 ++++++++--------- ...guration_generated_structures_proteus_h7.h | 740 ++++++++--------- ..._configuration_generated_structures_s105.h | 740 ++++++++--------- ...ion_generated_structures_small-can-board.h | 740 ++++++++--------- ...on_generated_structures_stm32f429_nucleo.h | 740 ++++++++--------- ...on_generated_structures_stm32f767_nucleo.h | 740 ++++++++--------- ...on_generated_structures_stm32h743_nucleo.h | 740 ++++++++--------- ...tion_generated_structures_subaru_eg33_f7.h | 740 ++++++++--------- ...configuration_generated_structures_t-b-g.h | 740 ++++++++--------- ...figuration_generated_structures_tdg-pdm8.h | 740 ++++++++--------- ...configuration_generated_structures_uaefi.h | 746 +++++++++--------- ...figuration_generated_structures_uaefi121.h | 740 ++++++++--------- .../ac_control_generated.h | 2 +- .../boost_control_generated.h | 6 +- .../live_data_generated/dc_motors_generated.h | 2 +- .../electronic_throttle_generated.h | 4 +- .../engine_state_generated.h | 8 +- .../fan_control_generated.h | 2 +- .../ignition_state_generated.h | 2 +- .../knock_controller_generated.h | 4 +- .../lambda_monitor_generated.h | 6 +- .../output_channels_generated.h | 78 +- .../tcu_controller_generated.h | 8 +- .../throttle_model_generated.h | 6 +- .../trigger_central_generated.h | 8 +- .../trigger_state_generated.h | 4 +- .../trigger_state_primary_generated.h | 6 +- firmware/live_data_generated/vvt_generated.h | 6 +- .../wideband_state_generated.h | 8 +- 64 files changed, 17477 insertions(+), 17477 deletions(-) diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_alphax-2chan.h b/firmware/controllers/generated/engine_configuration_generated_structures_alphax-2chan.h index 24a3296a04..8399fc8744 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_alphax-2chan.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_alphax-2chan.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; /** offset 23344 bit 0 */ bool boardUseTachPullUp : 1 {}; diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_alphax-4chan.h b/firmware/controllers/generated/engine_configuration_generated_structures_alphax-4chan.h index b90a653d8c..9d83175c2f 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_alphax-4chan.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_alphax-4chan.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; /** offset 23344 bit 0 */ bool boardUseTachPullUp : 1 {}; diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_alphax-4chan_f7.h b/firmware/controllers/generated/engine_configuration_generated_structures_alphax-4chan_f7.h index b90a653d8c..9d83175c2f 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_alphax-4chan_f7.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_alphax-4chan_f7.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; /** offset 23344 bit 0 */ bool boardUseTachPullUp : 1 {}; diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_alphax-4k-gdi.h b/firmware/controllers/generated/engine_configuration_generated_structures_alphax-4k-gdi.h index 37b1560d49..1af4aa1038 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_alphax-4k-gdi.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_alphax-4k-gdi.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 31700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 31764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 31828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 31892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 31956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 31988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 32020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 32052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 32060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 32188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 32252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 32316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 32444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 32572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 32636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 32644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 32652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 33164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 33196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 33228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 33288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 33800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 33832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 33864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 33928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 33944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 33960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 34024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 34040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 34056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 34568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 34600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 34632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 35144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 35176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 35208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 35464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 35496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 35528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 35784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 35816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 35848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 36104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 36120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 36136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 36392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 36408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 36424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 36488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 36504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 36520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 36600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 36616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 36636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 36644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 36652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 36844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 36852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 36860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 37052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 37068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 37076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 37084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 37092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 37100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 37108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 37116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 37124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 37132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 37140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 37148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 37156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 37164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 37172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 37180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 37188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 37196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 37204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 37212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 37248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 37254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 37260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 37296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 37302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 37308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 37340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 37348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 37356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 37388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 37396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 37404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 37436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 37444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 37452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 38204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 38956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 38980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 39004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 39380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 39756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 39780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 39804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 39828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 39852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 39876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 39900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 39924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 39948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 39972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 39996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 40020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 40036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 40044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 40052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 40088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 40100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 40112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 40120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 40128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 40136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 40144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 40152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 40160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 40176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 40192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 40200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 40216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 40416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 40436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 40446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 40546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 40566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 40576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 40608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 40624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 40628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 40632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 40636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 40644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 40660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 40668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 40676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 40684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 40692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 40700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 40708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 40716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 40724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 40732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 40740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 40744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 40776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 40784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 40792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 40812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 40832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 40852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 40872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 40892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 40912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 40932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 40952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 40960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 40968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 41344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_alphax-8chan-revA.h b/firmware/controllers/generated/engine_configuration_generated_structures_alphax-8chan-revA.h index d572ebb969..47e670a22b 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_alphax-8chan-revA.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_alphax-8chan-revA.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; /** offset 23344 bit 0 */ bool boardUseTempPullUp : 1 {}; diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_alphax-8chan.h b/firmware/controllers/generated/engine_configuration_generated_structures_alphax-8chan.h index a292dbbd5a..786dba0b0f 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_alphax-8chan.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_alphax-8chan.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1264 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1328 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1337 */ - uint8_t alignmentFill_at_1337[1]; + uint8_t alignmentFill_at_1337[1] = {}; /** * A/C button input * offset 1338 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1343 */ - uint8_t alignmentFill_at_1343[1]; + uint8_t alignmentFill_at_1343[1] = {}; /** offset 1344 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1356 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1436 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1451 */ - uint8_t alignmentFill_at_1451[1]; + uint8_t alignmentFill_at_1451[1] = {}; /** * offset 1452 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1455 */ - uint8_t alignmentFill_at_1455[1]; + uint8_t alignmentFill_at_1455[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1496 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1500 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1536 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1540 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1587 */ - uint8_t alignmentFill_at_1587[1]; + uint8_t alignmentFill_at_1587[1] = {}; /** * offset 1588 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1599 */ - uint8_t alignmentFill_at_1599[1]; + uint8_t alignmentFill_at_1599[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1604 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1620 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1652 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1688 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1692 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1700 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1724 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1824 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1872 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1892 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1932 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1964 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1972 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1993 */ - uint8_t alignmentFill_at_1993[1]; + uint8_t alignmentFill_at_1993[1] = {}; /** * offset 1994 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 2003 */ - uint8_t alignmentFill_at_2003[1]; + uint8_t alignmentFill_at_2003[1] = {}; /** * offset 2004 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 2006 */ - uint8_t alignmentFill_at_2006[2]; + uint8_t alignmentFill_at_2006[2] = {}; /** * units: hz * offset 2008 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 2012 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2026 */ - uint8_t alignmentFill_at_2026[2]; + uint8_t alignmentFill_at_2026[2] = {}; /** * offset 2028 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2068 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2164 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2228 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2428 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2440 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2452 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2464 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2470 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2474 */ - uint8_t alignmentFill_at_2474[2]; + uint8_t alignmentFill_at_2474[2] = {}; /** * offset 2476 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2929 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2935 */ - uint8_t alignmentFill_at_2935[1]; + uint8_t alignmentFill_at_2935[1] = {}; /** * units: ratio * offset 2936 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3008 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3091 */ - uint8_t alignmentFill_at_3091[1]; + uint8_t alignmentFill_at_3091[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3102 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3110 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3132 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3168 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3180 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3192 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3243 */ - uint8_t alignmentFill_at_3243[1]; + uint8_t alignmentFill_at_3243[1] = {}; /** * offset 3244 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3249 */ - uint8_t alignmentFill_at_3249[1]; + uint8_t alignmentFill_at_3249[1] = {}; /** * offset 3250 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3255 */ - uint8_t alignmentFill_at_3255[1]; + uint8_t alignmentFill_at_3255[1] = {}; /** * offset 3256 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3261 */ - uint8_t alignmentFill_at_3261[1]; + uint8_t alignmentFill_at_3261[1] = {}; /** * offset 3262 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3281 */ - uint8_t alignmentFill_at_3281[1]; + uint8_t alignmentFill_at_3281[1] = {}; /** * offset 3282 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3346 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3347 */ - uint8_t alignmentFill_at_3347[1]; + uint8_t alignmentFill_at_3347[1] = {}; /** * offset 3348 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3364 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3378 */ - uint8_t alignmentFill_at_3378[2]; + uint8_t alignmentFill_at_3378[2] = {}; /** * units: % * offset 3380 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3396 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3404 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3421 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3431 */ - uint8_t alignmentFill_at_3431[1]; + uint8_t alignmentFill_at_3431[1] = {}; /** * How many test bench pulses do you want * offset 3432 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3438 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3450 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3458 */ - uint8_t alignmentFill_at_3458[2]; + uint8_t alignmentFill_at_3458[2] = {}; /** * offset 3460 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3590 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3594 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3598 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3602 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3604 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3620 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3636 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3675 */ - uint8_t alignmentFill_at_3675[1]; + uint8_t alignmentFill_at_3675[1] = {}; /** * offset 3676 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3700 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3736 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3772 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3806 */ - uint8_t alignmentFill_at_3806[2]; + uint8_t alignmentFill_at_3806[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3815 */ - uint8_t alignmentFill_at_3815[1]; + uint8_t alignmentFill_at_3815[1] = {}; /** * offset 3816 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3820 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3832 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3838 */ - uint8_t alignmentFill_at_3838[2]; + uint8_t alignmentFill_at_3838[2] = {}; /** * units: Ohm * offset 3840 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3850 */ - uint8_t alignmentFill_at_3850[2]; + uint8_t alignmentFill_at_3850[2] = {}; /** * offset 3852 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3877 */ - uint8_t alignmentFill_at_3877[3]; + uint8_t alignmentFill_at_3877[3] = {}; /** * offset 3880 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[3]; + uint8_t alignmentFill_at_3933[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3943 */ - uint8_t alignmentFill_at_3943[1]; + uint8_t alignmentFill_at_3943[1] = {}; /** offset 3944 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * Pin that activates nitrous control * offset 3950 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3955 */ - uint8_t alignmentFill_at_3955[1]; + uint8_t alignmentFill_at_3955[1] = {}; /** * offset 3956 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3965 */ - uint8_t alignmentFill_at_3965[1]; + uint8_t alignmentFill_at_3965[1] = {}; /** * units: kPa * offset 3966 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3969 */ - uint8_t alignmentFill_at_3969[1]; + uint8_t alignmentFill_at_3969[1] = {}; /** * units: rpm * offset 3970 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3982 */ - uint8_t alignmentFill_at_3982[2]; + uint8_t alignmentFill_at_3982[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3990 */ - uint8_t alignmentFill_at_3990[2]; + uint8_t alignmentFill_at_3990[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3992 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 4000 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4058 */ - uint8_t alignmentFill_at_4058[2]; + uint8_t alignmentFill_at_4058[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4060); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4060 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4204 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4216 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4228 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4260 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4292 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4356 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4364 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4372 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4388 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4404 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4420 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4436 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4468 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4500 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4564 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4628 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4692 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4756 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4788 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4820 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4852 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4884 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4916 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4948 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4980 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 5012 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5028 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5044 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5108 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5140 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5172 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5180 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5188 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5204 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5220 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5340 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5404 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5412 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5476 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5492 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5556 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5564 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5572 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5604 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5636 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5644 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5676 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5680 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5684 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5716 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13716 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13780 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13844 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13908 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13972 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14004 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14036 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14068 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14076 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14204 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14268 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14332 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14460 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14588 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14652 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14660 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14668 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15180 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15212 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15244 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15304 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15816 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15848 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15880 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15944 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15960 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15976 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16040 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16056 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16072 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16584 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16616 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16648 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17160 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17192 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17224 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17480 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17512 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17544 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17800 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17832 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17864 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18120 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18136 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18152 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18408 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18424 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18440 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18504 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18520 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18536 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18616 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18632 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18652 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18660 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18668 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18860 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18868 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18876 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19068 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19084 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19172 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19180 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19188 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19196 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19204 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19212 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19220 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19228 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19264 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19270 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19276 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19312 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19318 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19324 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19356 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19364 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19372 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19404 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19412 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19420 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19452 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19460 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19468 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20220 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20972 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20996 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21020 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21396 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21772 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21796 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21820 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21844 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21868 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21892 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21916 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21940 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21964 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21988 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 22012 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22036 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22052 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22060 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22068 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22104 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22116 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22128 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22136 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22152 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22160 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22168 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22176 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22192 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22208 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22216 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22232 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22432 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22452 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22462 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22562 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22582 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22592 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22624 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22640 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22644 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22648 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22652 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22660 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22676 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22684 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22692 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22700 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22740 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22748 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22756 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22760 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22792 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22800 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22808 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22828 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22848 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22868 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22888 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22908 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22928 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22948 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22968 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22976 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22984 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; /** offset 23360 bit 0 */ bool boardUseTempPullUp : 1 {}; diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_alphax-8chan_f7.h b/firmware/controllers/generated/engine_configuration_generated_structures_alphax-8chan_f7.h index a292dbbd5a..786dba0b0f 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_alphax-8chan_f7.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_alphax-8chan_f7.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1264 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1328 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1337 */ - uint8_t alignmentFill_at_1337[1]; + uint8_t alignmentFill_at_1337[1] = {}; /** * A/C button input * offset 1338 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1343 */ - uint8_t alignmentFill_at_1343[1]; + uint8_t alignmentFill_at_1343[1] = {}; /** offset 1344 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1356 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1436 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1451 */ - uint8_t alignmentFill_at_1451[1]; + uint8_t alignmentFill_at_1451[1] = {}; /** * offset 1452 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1455 */ - uint8_t alignmentFill_at_1455[1]; + uint8_t alignmentFill_at_1455[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1496 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1500 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1536 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1540 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1587 */ - uint8_t alignmentFill_at_1587[1]; + uint8_t alignmentFill_at_1587[1] = {}; /** * offset 1588 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1599 */ - uint8_t alignmentFill_at_1599[1]; + uint8_t alignmentFill_at_1599[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1604 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1620 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1652 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1688 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1692 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1700 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1724 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1824 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1872 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1892 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1932 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1964 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1972 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1993 */ - uint8_t alignmentFill_at_1993[1]; + uint8_t alignmentFill_at_1993[1] = {}; /** * offset 1994 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 2003 */ - uint8_t alignmentFill_at_2003[1]; + uint8_t alignmentFill_at_2003[1] = {}; /** * offset 2004 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 2006 */ - uint8_t alignmentFill_at_2006[2]; + uint8_t alignmentFill_at_2006[2] = {}; /** * units: hz * offset 2008 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 2012 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2026 */ - uint8_t alignmentFill_at_2026[2]; + uint8_t alignmentFill_at_2026[2] = {}; /** * offset 2028 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2068 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2164 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2228 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2428 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2440 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2452 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2464 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2470 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2474 */ - uint8_t alignmentFill_at_2474[2]; + uint8_t alignmentFill_at_2474[2] = {}; /** * offset 2476 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2929 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2935 */ - uint8_t alignmentFill_at_2935[1]; + uint8_t alignmentFill_at_2935[1] = {}; /** * units: ratio * offset 2936 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3008 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3091 */ - uint8_t alignmentFill_at_3091[1]; + uint8_t alignmentFill_at_3091[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3102 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3110 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3132 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3168 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3180 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3192 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3243 */ - uint8_t alignmentFill_at_3243[1]; + uint8_t alignmentFill_at_3243[1] = {}; /** * offset 3244 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3249 */ - uint8_t alignmentFill_at_3249[1]; + uint8_t alignmentFill_at_3249[1] = {}; /** * offset 3250 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3255 */ - uint8_t alignmentFill_at_3255[1]; + uint8_t alignmentFill_at_3255[1] = {}; /** * offset 3256 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3261 */ - uint8_t alignmentFill_at_3261[1]; + uint8_t alignmentFill_at_3261[1] = {}; /** * offset 3262 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3281 */ - uint8_t alignmentFill_at_3281[1]; + uint8_t alignmentFill_at_3281[1] = {}; /** * offset 3282 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3346 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3347 */ - uint8_t alignmentFill_at_3347[1]; + uint8_t alignmentFill_at_3347[1] = {}; /** * offset 3348 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3364 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3378 */ - uint8_t alignmentFill_at_3378[2]; + uint8_t alignmentFill_at_3378[2] = {}; /** * units: % * offset 3380 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3396 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3404 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3421 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3431 */ - uint8_t alignmentFill_at_3431[1]; + uint8_t alignmentFill_at_3431[1] = {}; /** * How many test bench pulses do you want * offset 3432 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3438 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3450 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3458 */ - uint8_t alignmentFill_at_3458[2]; + uint8_t alignmentFill_at_3458[2] = {}; /** * offset 3460 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3590 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3594 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3598 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3602 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3604 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3620 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3636 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3675 */ - uint8_t alignmentFill_at_3675[1]; + uint8_t alignmentFill_at_3675[1] = {}; /** * offset 3676 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3700 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3736 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3772 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3806 */ - uint8_t alignmentFill_at_3806[2]; + uint8_t alignmentFill_at_3806[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3815 */ - uint8_t alignmentFill_at_3815[1]; + uint8_t alignmentFill_at_3815[1] = {}; /** * offset 3816 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3820 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3832 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3838 */ - uint8_t alignmentFill_at_3838[2]; + uint8_t alignmentFill_at_3838[2] = {}; /** * units: Ohm * offset 3840 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3850 */ - uint8_t alignmentFill_at_3850[2]; + uint8_t alignmentFill_at_3850[2] = {}; /** * offset 3852 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3877 */ - uint8_t alignmentFill_at_3877[3]; + uint8_t alignmentFill_at_3877[3] = {}; /** * offset 3880 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[3]; + uint8_t alignmentFill_at_3933[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3943 */ - uint8_t alignmentFill_at_3943[1]; + uint8_t alignmentFill_at_3943[1] = {}; /** offset 3944 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * Pin that activates nitrous control * offset 3950 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3955 */ - uint8_t alignmentFill_at_3955[1]; + uint8_t alignmentFill_at_3955[1] = {}; /** * offset 3956 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3965 */ - uint8_t alignmentFill_at_3965[1]; + uint8_t alignmentFill_at_3965[1] = {}; /** * units: kPa * offset 3966 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3969 */ - uint8_t alignmentFill_at_3969[1]; + uint8_t alignmentFill_at_3969[1] = {}; /** * units: rpm * offset 3970 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3982 */ - uint8_t alignmentFill_at_3982[2]; + uint8_t alignmentFill_at_3982[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3990 */ - uint8_t alignmentFill_at_3990[2]; + uint8_t alignmentFill_at_3990[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3992 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 4000 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4058 */ - uint8_t alignmentFill_at_4058[2]; + uint8_t alignmentFill_at_4058[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4060); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4060 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4204 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4216 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4228 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4260 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4292 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4356 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4364 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4372 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4388 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4404 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4420 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4436 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4468 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4500 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4564 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4628 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4692 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4756 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4788 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4820 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4852 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4884 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4916 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4948 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4980 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 5012 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5028 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5044 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5108 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5140 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5172 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5180 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5188 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5204 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5220 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5340 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5404 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5412 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5476 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5492 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5556 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5564 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5572 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5604 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5636 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5644 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5676 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5680 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5684 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5716 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13716 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13780 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13844 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13908 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13972 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14004 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14036 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14068 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14076 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14204 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14268 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14332 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14460 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14588 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14652 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14660 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14668 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15180 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15212 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15244 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15304 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15816 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15848 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15880 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15944 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15960 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15976 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16040 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16056 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16072 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16584 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16616 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16648 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17160 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17192 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17224 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17480 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17512 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17544 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17800 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17832 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17864 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18120 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18136 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18152 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18408 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18424 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18440 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18504 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18520 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18536 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18616 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18632 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18652 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18660 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18668 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18860 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18868 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18876 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19068 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19084 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19172 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19180 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19188 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19196 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19204 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19212 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19220 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19228 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19264 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19270 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19276 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19312 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19318 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19324 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19356 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19364 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19372 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19404 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19412 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19420 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19452 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19460 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19468 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20220 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20972 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20996 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21020 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21396 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21772 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21796 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21820 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21844 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21868 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21892 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21916 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21940 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21964 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21988 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 22012 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22036 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22052 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22060 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22068 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22104 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22116 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22128 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22136 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22152 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22160 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22168 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22176 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22192 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22208 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22216 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22232 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22432 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22452 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22462 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22562 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22582 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22592 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22624 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22640 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22644 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22648 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22652 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22660 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22676 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22684 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22692 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22700 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22740 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22748 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22756 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22760 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22792 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22800 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22808 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22828 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22848 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22868 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22888 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22908 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22928 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22948 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22968 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22976 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22984 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; /** offset 23360 bit 0 */ bool boardUseTempPullUp : 1 {}; diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_alphax-silver.h b/firmware/controllers/generated/engine_configuration_generated_structures_alphax-silver.h index b8c27875e2..af5ca02c9f 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_alphax-silver.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_alphax-silver.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4785,7 +4785,7 @@ struct engine_configuration_s { * units: units * offset 3921 */ - uint8_t alignmentFill_at_3921[3]; + uint8_t alignmentFill_at_3921[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4813,7 +4813,7 @@ struct engine_configuration_s { * units: units * offset 3931 */ - uint8_t alignmentFill_at_3931[1]; + uint8_t alignmentFill_at_3931[1] = {}; /** offset 3932 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4919,7 +4919,7 @@ struct engine_configuration_s { * units: units * offset 3937 */ - uint8_t alignmentFill_at_3937[1]; + uint8_t alignmentFill_at_3937[1] = {}; /** * Pin that activates nitrous control * offset 3938 @@ -4942,7 +4942,7 @@ struct engine_configuration_s { * units: units * offset 3943 */ - uint8_t alignmentFill_at_3943[1]; + uint8_t alignmentFill_at_3943[1] = {}; /** * offset 3944 */ @@ -4961,7 +4961,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: kPa * offset 3954 @@ -4977,7 +4977,7 @@ struct engine_configuration_s { * units: units * offset 3957 */ - uint8_t alignmentFill_at_3957[1]; + uint8_t alignmentFill_at_3957[1] = {}; /** * units: rpm * offset 3958 @@ -5023,7 +5023,7 @@ struct engine_configuration_s { * units: units * offset 3970 */ - uint8_t alignmentFill_at_3970[2]; + uint8_t alignmentFill_at_3970[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -5040,7 +5040,7 @@ struct engine_configuration_s { * units: units * offset 3978 */ - uint8_t alignmentFill_at_3978[2]; + uint8_t alignmentFill_at_3978[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3980 @@ -5056,13 +5056,13 @@ struct engine_configuration_s { * units: units * offset 3988 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4046 */ - uint8_t alignmentFill_at_4046[2]; + uint8_t alignmentFill_at_4046[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4048); @@ -5071,7 +5071,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -5080,7 +5080,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -5089,17 +5089,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5111,18 +5111,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5136,189 +5136,189 @@ struct persistent_config_s { * units: mult * offset 4048 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4192 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4204 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4216 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4248 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4280 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4344 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4352 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4360 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4376 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4392 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4408 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4424 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4456 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4488 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4552 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4616 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4680 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4744 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4776 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4808 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4840 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4872 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4904 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4936 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4968 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 5000 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5016 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5032 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5096 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5128 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5160 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5168 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5176 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5192 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5208 */ @@ -5326,74 +5326,74 @@ struct persistent_config_s { /** * offset 5328 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5392 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5400 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5464 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5480 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5544 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5552 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5560 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5592 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5624 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5632 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5664 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5668 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5672 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5704 */ @@ -5402,59 +5402,59 @@ struct persistent_config_s { * units: C * offset 13704 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13768 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13832 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13896 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13960 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13992 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14024 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14056 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14064 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14192 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14256 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5462,679 +5462,679 @@ struct persistent_config_s { * units: kg/hour * offset 14320 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14448 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14576 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14640 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14648 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14656 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15168 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15200 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15232 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15292 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15804 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15836 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15868 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15932 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15948 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15964 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16028 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16044 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16060 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16572 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16604 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16636 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17148 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17180 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17212 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17468 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17500 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17532 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17788 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17820 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17852 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18108 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18124 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18140 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18396 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18412 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18428 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18492 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18508 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18524 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18604 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18620 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18640 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18648 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18656 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18848 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18856 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18864 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19056 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19072 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19080 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19088 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19096 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19104 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19112 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19120 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19128 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19136 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19144 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19152 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19160 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19168 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19176 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19184 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19192 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19200 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19208 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19216 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19252 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19258 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19264 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19300 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19306 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19312 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19344 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19352 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19360 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19392 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19400 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19408 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19440 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19448 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19456 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20208 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20960 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20984 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21008 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21384 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21760 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21784 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21808 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21832 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21856 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21880 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21904 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21928 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21952 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21976 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 22000 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22024 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22040 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22048 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22056 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22092 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22104 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22116 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22124 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22132 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22140 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22148 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22156 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22164 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22180 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22196 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22204 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22220 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22420 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22440 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22450 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22550 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22570 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22580 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22612 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22628 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22632 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22636 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22640 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22648 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22664 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22672 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22680 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22688 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22696 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22704 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22712 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22720 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22728 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22736 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22744 @@ -6144,69 +6144,69 @@ struct persistent_config_s { * units: Volts * offset 22748 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22780 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22788 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22796 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22816 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22836 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22856 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22876 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22896 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22916 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22936 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22956 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22964 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22972 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23348); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_at_start_f435.h b/firmware/controllers/generated/engine_configuration_generated_structures_at_start_f435.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_at_start_f435.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_at_start_f435.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_atlas.h b/firmware/controllers/generated/engine_configuration_generated_structures_atlas.h index d7deafd108..dbcd864ed3 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_atlas.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_atlas.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 34 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 66 */ - uint8_t alignmentFill_at_66[2]; + uint8_t alignmentFill_at_66[2] = {}; }; static_assert(sizeof(gppwm_channel) == 68); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2753 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2759 */ - uint8_t alignmentFill_at_2759[1]; + uint8_t alignmentFill_at_2759[1] = {}; /** * units: ratio * offset 2760 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2832 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 2915 */ - uint8_t alignmentFill_at_2915[1]; + uint8_t alignmentFill_at_2915[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 2926 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 2934 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 2956 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 2992 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3004 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3016 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3063 */ - uint8_t alignmentFill_at_3063[1]; + uint8_t alignmentFill_at_3063[1] = {}; /** * offset 3064 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3067 */ - uint8_t alignmentFill_at_3067[1]; + uint8_t alignmentFill_at_3067[1] = {}; /** * offset 3068 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3073 */ - uint8_t alignmentFill_at_3073[1]; + uint8_t alignmentFill_at_3073[1] = {}; /** * offset 3074 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3079 */ - uint8_t alignmentFill_at_3079[1]; + uint8_t alignmentFill_at_3079[1] = {}; /** * offset 3080 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3085 */ - uint8_t alignmentFill_at_3085[1]; + uint8_t alignmentFill_at_3085[1] = {}; /** * offset 3086 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3105 */ - uint8_t alignmentFill_at_3105[1]; + uint8_t alignmentFill_at_3105[1] = {}; /** * offset 3106 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3170 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3171 */ - uint8_t alignmentFill_at_3171[1]; + uint8_t alignmentFill_at_3171[1] = {}; /** * offset 3172 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3188 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3202 */ - uint8_t alignmentFill_at_3202[2]; + uint8_t alignmentFill_at_3202[2] = {}; /** * units: % * offset 3204 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3220 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3228 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3245 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3255 */ - uint8_t alignmentFill_at_3255[1]; + uint8_t alignmentFill_at_3255[1] = {}; /** * How many test bench pulses do you want * offset 3256 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3262 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3274 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3282 */ - uint8_t alignmentFill_at_3282[2]; + uint8_t alignmentFill_at_3282[2] = {}; /** * offset 3284 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3414 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3418 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3422 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3426 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3428 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3444 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3460 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3499 */ - uint8_t alignmentFill_at_3499[1]; + uint8_t alignmentFill_at_3499[1] = {}; /** * offset 3500 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3524 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3560 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3596 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3630 */ - uint8_t alignmentFill_at_3630[2]; + uint8_t alignmentFill_at_3630[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3639 */ - uint8_t alignmentFill_at_3639[1]; + uint8_t alignmentFill_at_3639[1] = {}; /** * offset 3640 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3644 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3656 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3662 */ - uint8_t alignmentFill_at_3662[2]; + uint8_t alignmentFill_at_3662[2] = {}; /** * units: Ohm * offset 3664 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3674 */ - uint8_t alignmentFill_at_3674[2]; + uint8_t alignmentFill_at_3674[2] = {}; /** * offset 3676 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3701 */ - uint8_t alignmentFill_at_3701[3]; + uint8_t alignmentFill_at_3701[3] = {}; /** * offset 3704 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3757 */ - uint8_t alignmentFill_at_3757[3]; + uint8_t alignmentFill_at_3757[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3767 */ - uint8_t alignmentFill_at_3767[1]; + uint8_t alignmentFill_at_3767[1] = {}; /** offset 3768 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3773 */ - uint8_t alignmentFill_at_3773[1]; + uint8_t alignmentFill_at_3773[1] = {}; /** * Pin that activates nitrous control * offset 3774 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3779 */ - uint8_t alignmentFill_at_3779[1]; + uint8_t alignmentFill_at_3779[1] = {}; /** * offset 3780 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3789 */ - uint8_t alignmentFill_at_3789[1]; + uint8_t alignmentFill_at_3789[1] = {}; /** * units: kPa * offset 3790 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3793 */ - uint8_t alignmentFill_at_3793[1]; + uint8_t alignmentFill_at_3793[1] = {}; /** * units: rpm * offset 3794 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3806 */ - uint8_t alignmentFill_at_3806[2]; + uint8_t alignmentFill_at_3806[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3814 */ - uint8_t alignmentFill_at_3814[2]; + uint8_t alignmentFill_at_3814[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3816 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3824 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 3882 */ - uint8_t alignmentFill_at_3882[2]; + uint8_t alignmentFill_at_3882[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 3884); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 3884 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4028 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4040 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4052 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4084 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4116 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4180 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4188 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4196 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4212 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4228 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4244 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4260 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4292 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4324 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4388 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4452 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4516 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4580 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4612 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4644 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4676 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4708 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4740 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4772 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4804 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4836 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 4852 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 4868 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 4932 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 4964 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 4996 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5004 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5012 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5028 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5044 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5164 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5196 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5200 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5232 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5248 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5312 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5320 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5328 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5360 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5392 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5400 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5432 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5436 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5440 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5472 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13472 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13536 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13600 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13664 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13728 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13760 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 13792 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13824 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 13832 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 13960 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14024 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14088 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14216 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14344 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14408 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14416 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14424 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 14936 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 14968 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15000 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15060 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15572 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15604 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15636 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15700 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15716 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15732 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15796 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15812 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 15828 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16084 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16116 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16132 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 16644 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 16676 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 16708 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 16964 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 16996 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17028 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17284 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17316 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17348 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 17604 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 17620 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 17636 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 17892 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 17908 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 17924 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 17988 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18004 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18020 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18100 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18116 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18136 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18144 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18152 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18344 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18352 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18360 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 18552 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 18568 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18576 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18584 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18592 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18600 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18608 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18616 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18624 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18632 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18640 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18648 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18656 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18664 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 18672 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 18680 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 18688 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 18696 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 18704 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 18712 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 18748 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 18754 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 18760 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 18796 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 18802 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 18808 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 18840 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 18848 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 18856 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 18888 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 18896 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 18904 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 18936 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 18944 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 18952 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 19704 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20456 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20480 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 20504 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 20880 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21256 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21280 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21304 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21328 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21352 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21376 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21400 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21424 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21448 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21472 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21496 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 21520 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 21536 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 21544 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 21552 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 21588 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 21600 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 21612 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 21620 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 21628 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 21636 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 21644 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 21652 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 21660 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 21676 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 21692 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 21700 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 21716 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 21916 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 21936 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 21946 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22046 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22066 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22076 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22108 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22124 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22128 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22132 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22136 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22144 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22160 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22168 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22176 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22184 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22192 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22200 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22208 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22216 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22224 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22232 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22240 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22244 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22276 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22284 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22292 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22312 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22332 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22352 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22372 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22392 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22412 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22432 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22452 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22460 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22468 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 22844); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_f407-discovery.h b/firmware/controllers/generated/engine_configuration_generated_structures_f407-discovery.h index d7237982bc..f399848e17 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_f407-discovery.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_f407-discovery.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; /** * offset 23344 */ @@ -6120,7 +6120,7 @@ struct persistent_config_s { * units: units * offset 23346 */ - uint8_t alignmentFill_at_23346[2]; + uint8_t alignmentFill_at_23346[2] = {}; }; static_assert(sizeof(persistent_config_s) == 23348); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_f429-discovery.h b/firmware/controllers/generated/engine_configuration_generated_structures_f429-discovery.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_f429-discovery.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_f429-discovery.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_f469-discovery.h b/firmware/controllers/generated/engine_configuration_generated_structures_f469-discovery.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_f469-discovery.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_f469-discovery.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_frankenso_na6.h b/firmware/controllers/generated/engine_configuration_generated_structures_frankenso_na6.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_frankenso_na6.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_frankenso_na6.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_haba208.h b/firmware/controllers/generated/engine_configuration_generated_structures_haba208.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_haba208.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_haba208.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_hellen-112-17.h b/firmware/controllers/generated/engine_configuration_generated_structures_hellen-112-17.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_hellen-112-17.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_hellen-112-17.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_hellen-gm-e67.h b/firmware/controllers/generated/engine_configuration_generated_structures_hellen-gm-e67.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_hellen-gm-e67.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_hellen-gm-e67.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_hellen-honda-k.h b/firmware/controllers/generated/engine_configuration_generated_structures_hellen-honda-k.h index 4102d7d31d..108ffb121c 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_hellen-honda-k.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_hellen-honda-k.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16120 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16152 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 16184 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16440 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16472 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16504 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 17016 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 17048 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 17080 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17592 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17624 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17656 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17912 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17944 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17976 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 18232 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 18264 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 18296 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18552 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18568 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18584 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18840 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18856 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18872 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18936 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18952 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18968 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 19048 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 19064 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 19084 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 19092 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 19100 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 19292 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 19300 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 19308 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19500 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19516 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19524 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19532 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19540 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19548 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19556 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19564 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19572 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19580 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19588 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19596 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19604 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19612 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19620 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19628 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19636 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19644 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19652 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19660 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19696 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19702 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19708 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19744 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19750 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19756 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19788 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19796 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19804 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19836 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19844 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19852 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19884 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19892 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19900 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20652 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 21404 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 21428 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21452 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21828 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 22204 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 22228 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 22252 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 22276 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 22300 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 22324 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 22348 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 22372 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 22396 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 22420 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 22444 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22468 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22484 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22492 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22500 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22536 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22548 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22560 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22568 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22576 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22584 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22592 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22600 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22608 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22624 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22640 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22648 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22664 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22864 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22884 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22894 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22994 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 23014 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 23024 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 23056 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 23072 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 23076 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 23080 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 23084 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 23092 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 23108 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 23116 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 23124 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 23132 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 23140 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 23148 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 23156 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 23164 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 23172 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 23180 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 23188 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 23192 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 23224 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 23232 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 23240 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 23260 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 23280 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 23300 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 23320 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 23340 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 23360 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 23380 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 23400 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 23408 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 23416 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; /** * offset 23792 */ @@ -6118,13 +6118,13 @@ struct persistent_config_s { /** * offset 23793 */ - uint8_t unusedConfigPadding[BOTTOM_PADDING]; + uint8_t unusedConfigPadding[BOTTOM_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 23829 */ - uint8_t alignmentFill_at_23829[3]; + uint8_t alignmentFill_at_23829[3] = {}; }; static_assert(sizeof(persistent_config_s) == 23832); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_hellen-nb1.h b/firmware/controllers/generated/engine_configuration_generated_structures_hellen-nb1.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_hellen-nb1.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_hellen-nb1.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_hellen121nissan.h b/firmware/controllers/generated/engine_configuration_generated_structures_hellen121nissan.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_hellen121nissan.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_hellen121nissan.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_hellen121vag.h b/firmware/controllers/generated/engine_configuration_generated_structures_hellen121vag.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_hellen121vag.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_hellen121vag.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_hellen128.h b/firmware/controllers/generated/engine_configuration_generated_structures_hellen128.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_hellen128.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_hellen128.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_hellen154hyundai.h b/firmware/controllers/generated/engine_configuration_generated_structures_hellen154hyundai.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_hellen154hyundai.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_hellen154hyundai.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_hellen154hyundai_f7.h b/firmware/controllers/generated/engine_configuration_generated_structures_hellen154hyundai_f7.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_hellen154hyundai_f7.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_hellen154hyundai_f7.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_hellen72.h b/firmware/controllers/generated/engine_configuration_generated_structures_hellen72.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_hellen72.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_hellen72.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_hellen81.h b/firmware/controllers/generated/engine_configuration_generated_structures_hellen81.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_hellen81.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_hellen81.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_hellen88bmw.h b/firmware/controllers/generated/engine_configuration_generated_structures_hellen88bmw.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_hellen88bmw.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_hellen88bmw.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_hellenNA6.h b/firmware/controllers/generated/engine_configuration_generated_structures_hellenNA6.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_hellenNA6.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_hellenNA6.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_hellenNA8_96.h b/firmware/controllers/generated/engine_configuration_generated_structures_hellenNA8_96.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_hellenNA8_96.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_hellenNA8_96.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_m74_9.h b/firmware/controllers/generated/engine_configuration_generated_structures_m74_9.h index 8df2958cdd..aed620cc5d 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_m74_9.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_m74_9.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,685 +5366,685 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 14670 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 14676 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 14682 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 14742 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15254 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15286 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15318 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15382 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15398 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15414 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15478 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15494 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 15510 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16022 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16054 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16086 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 16598 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 16630 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 16662 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 16918 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 16950 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 16982 */ - uint8_t alignmentFill_at_16982[2]; + uint8_t alignmentFill_at_16982[2] = {}; /** * units: value * offset 16984 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17240 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17272 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17304 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 17560 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 17576 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 17592 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 17848 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 17864 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 17880 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 17944 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 17960 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 17976 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18056 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18072 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18092 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18100 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18108 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18300 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18308 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18316 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 18508 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 18524 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18532 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18540 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18548 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18556 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18564 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18572 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18580 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18588 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18596 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18604 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18612 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 18620 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 18628 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 18636 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 18644 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 18652 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 18660 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 18668 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 18704 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 18710 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 18716 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 18752 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 18758 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 18764 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 18796 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 18804 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 18812 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 18844 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 18852 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 18860 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 18892 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 18900 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 18908 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 19660 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20412 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20436 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 20460 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 20836 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21212 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21236 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21260 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21284 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21308 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21332 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21356 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21380 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21404 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21428 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21452 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 21476 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 21492 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 21500 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 21508 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 21544 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 21556 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 21568 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 21576 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 21584 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 21592 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 21600 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 21608 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 21616 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 21632 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 21648 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 21656 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 21672 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 21872 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 21892 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 21902 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22002 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22022 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22032 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22064 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22080 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22084 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22088 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22092 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22100 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22116 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22124 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22132 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22140 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22148 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22156 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22164 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22172 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22180 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22188 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22196 @@ -6054,69 +6054,69 @@ struct persistent_config_s { * units: Volts * offset 22200 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22232 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22240 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22248 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22268 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22288 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22308 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22328 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22348 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22368 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22388 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22408 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22416 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22424 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 22800); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_mre-legacy_f4.h b/firmware/controllers/generated/engine_configuration_generated_structures_mre-legacy_f4.h index e28dbea93d..0852a078d0 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_mre-legacy_f4.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_mre-legacy_f4.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 15700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 15764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 15828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 15892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 15956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 15988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 16020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 16052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 16060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 16188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 16252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 16316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 16444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 16572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 16636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 16644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 16652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 17164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 17196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 17228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 17288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 17800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 17928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 17944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 17960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 18024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 18040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 18056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 18568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 18600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 18632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 19144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 19176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 19208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 19464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 19496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 19528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 19784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 19816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 19848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 20104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 20120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 20136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 20392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 20408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 20424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 20488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 20504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 20520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 20600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 20616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 20636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 20644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 20652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 20844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 20852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 20860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 21052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 21068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 21172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 21180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 21188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 21196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 21204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 21212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 21248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 21254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 21260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 21296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 21302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 21308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 21340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 21348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 21356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 21388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 21396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 21404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 21436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 21444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 21452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 22204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 22956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 22980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 23004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 23380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 23756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 24020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 24036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 24044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 24052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 24088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 24100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 24112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 24120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 24128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 24136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 24144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 24152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 24160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 24176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 24192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 24200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 24216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 24416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 24436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 24446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 24546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 24566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 24576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 24608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 24624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 24628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 24632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 24636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 24644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 24660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 24668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 24676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 24684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 24692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 24700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 24708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 24716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 24724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 24732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 24740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 24744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 24776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 24784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 24792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 24812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 24832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 24852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 24872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 24892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 24912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 24932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 24952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 24960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 24968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 25344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_mre_f4.h b/firmware/controllers/generated/engine_configuration_generated_structures_mre_f4.h index e28dbea93d..0852a078d0 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_mre_f4.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_mre_f4.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 15700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 15764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 15828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 15892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 15956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 15988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 16020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 16052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 16060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 16188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 16252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 16316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 16444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 16572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 16636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 16644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 16652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 17164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 17196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 17228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 17288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 17800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 17928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 17944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 17960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 18024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 18040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 18056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 18568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 18600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 18632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 19144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 19176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 19208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 19464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 19496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 19528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 19784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 19816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 19848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 20104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 20120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 20136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 20392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 20408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 20424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 20488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 20504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 20520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 20600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 20616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 20636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 20644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 20652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 20844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 20852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 20860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 21052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 21068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 21172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 21180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 21188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 21196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 21204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 21212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 21248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 21254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 21260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 21296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 21302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 21308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 21340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 21348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 21356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 21388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 21396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 21404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 21436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 21444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 21452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 22204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 22956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 22980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 23004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 23380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 23756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 24020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 24036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 24044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 24052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 24088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 24100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 24112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 24120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 24128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 24136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 24144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 24152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 24160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 24176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 24192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 24200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 24216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 24416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 24436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 24446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 24546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 24566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 24576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 24608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 24624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 24628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 24632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 24636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 24644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 24660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 24668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 24676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 24684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 24692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 24700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 24708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 24716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 24724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 24732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 24740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 24744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 24776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 24784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 24792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 24812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 24832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 24852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 24872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 24892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 24912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 24932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 24952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 24960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 24968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 25344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_mre_f7.h b/firmware/controllers/generated/engine_configuration_generated_structures_mre_f7.h index e28dbea93d..0852a078d0 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_mre_f7.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_mre_f7.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 15700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 15764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 15828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 15892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 15956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 15988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 16020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 16052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 16060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 16188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 16252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 16316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 16444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 16572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 16636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 16644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 16652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 17164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 17196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 17228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 17288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 17800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 17928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 17944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 17960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 18024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 18040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 18056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 18568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 18600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 18632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 19144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 19176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 19208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 19464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 19496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 19528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 19784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 19816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 19848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 20104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 20120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 20136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 20392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 20408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 20424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 20488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 20504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 20520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 20600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 20616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 20636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 20644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 20652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 20844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 20852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 20860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 21052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 21068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 21164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 21172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 21180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 21188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 21196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 21204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 21212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 21248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 21254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 21260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 21296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 21302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 21308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 21340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 21348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 21356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 21388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 21396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 21404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 21436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 21444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 21452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 22204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 22956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 22980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 23004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 23380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 23756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 23996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 24020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 24036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 24044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 24052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 24088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 24100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 24112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 24120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 24128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 24136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 24144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 24152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 24160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 24176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 24192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 24200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 24216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 24416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 24436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 24446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 24546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 24566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 24576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 24608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 24624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 24628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 24632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 24636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 24644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 24660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 24668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 24676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 24684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 24692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 24700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 24708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 24716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 24724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 24732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 24740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 24744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 24776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 24784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 24792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 24812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 24832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 24852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 24872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 24892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 24912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 24932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 24952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 24960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 24968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 25344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_nucleo_f413.h b/firmware/controllers/generated/engine_configuration_generated_structures_nucleo_f413.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_nucleo_f413.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_nucleo_f413.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_proteus_f4.h b/firmware/controllers/generated/engine_configuration_generated_structures_proteus_f4.h index 37983ee1b8..e3a3c4a710 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_proteus_f4.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_proteus_f4.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 19200 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 19264 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 19328 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 19392 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 19456 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 19488 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 19520 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 19552 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 19560 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 19688 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 19752 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 19816 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 19944 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 20072 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 20136 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 20144 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 20152 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 20664 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 20696 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 20728 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 20788 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 21300 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 21332 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 21364 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 21428 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 21444 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 21460 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 21524 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 21540 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 21556 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 22068 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 22132 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 22644 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 22676 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 22708 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 22964 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 22996 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 23028 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 23284 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 23316 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 23348 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 23604 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 23620 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 23636 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 23892 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 23908 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 23924 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 23988 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 24004 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 24020 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 24100 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 24116 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 24136 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 24144 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 24152 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 24344 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 24352 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 24360 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 24552 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 24568 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24576 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24584 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24592 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24600 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24608 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24616 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24624 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24632 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24640 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24648 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24656 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24664 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 24672 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 24680 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 24688 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 24696 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 24704 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 24712 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 24748 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 24754 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 24760 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 24796 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 24802 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 24808 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 24840 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 24848 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 24856 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 24888 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 24896 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 24904 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 24936 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 24944 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 24952 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 25704 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 26456 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 26480 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 26504 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 26880 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 27256 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27280 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27304 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27328 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27352 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27376 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27400 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27424 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27448 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27472 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27496 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 27520 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 27536 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 27544 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 27552 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 27588 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 27600 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 27612 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 27620 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 27628 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 27636 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 27644 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 27652 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 27660 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 27676 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 27692 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 27700 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 27716 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 27916 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 27936 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 27946 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 28046 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 28066 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 28076 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 28108 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 28124 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 28128 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 28132 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 28136 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 28144 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 28160 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 28168 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 28176 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 28184 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 28192 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 28200 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 28208 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 28216 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 28224 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 28232 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 28240 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 28244 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 28276 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 28284 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 28292 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 28312 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 28332 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 28352 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 28372 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 28392 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 28412 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 28432 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 28452 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 28460 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 28468 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 28844); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_proteus_f7.h b/firmware/controllers/generated/engine_configuration_generated_structures_proteus_f7.h index 37983ee1b8..e3a3c4a710 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_proteus_f7.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_proteus_f7.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 19200 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 19264 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 19328 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 19392 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 19456 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 19488 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 19520 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 19552 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 19560 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 19688 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 19752 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 19816 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 19944 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 20072 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 20136 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 20144 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 20152 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 20664 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 20696 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 20728 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 20788 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 21300 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 21332 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 21364 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 21428 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 21444 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 21460 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 21524 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 21540 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 21556 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 22068 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 22132 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 22644 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 22676 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 22708 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 22964 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 22996 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 23028 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 23284 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 23316 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 23348 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 23604 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 23620 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 23636 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 23892 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 23908 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 23924 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 23988 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 24004 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 24020 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 24100 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 24116 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 24136 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 24144 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 24152 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 24344 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 24352 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 24360 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 24552 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 24568 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24576 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24584 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24592 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24600 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24608 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24616 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24624 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24632 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24640 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24648 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24656 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24664 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 24672 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 24680 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 24688 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 24696 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 24704 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 24712 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 24748 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 24754 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 24760 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 24796 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 24802 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 24808 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 24840 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 24848 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 24856 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 24888 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 24896 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 24904 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 24936 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 24944 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 24952 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 25704 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 26456 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 26480 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 26504 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 26880 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 27256 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27280 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27304 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27328 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27352 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27376 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27400 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27424 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27448 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27472 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27496 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 27520 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 27536 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 27544 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 27552 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 27588 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 27600 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 27612 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 27620 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 27628 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 27636 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 27644 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 27652 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 27660 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 27676 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 27692 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 27700 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 27716 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 27916 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 27936 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 27946 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 28046 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 28066 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 28076 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 28108 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 28124 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 28128 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 28132 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 28136 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 28144 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 28160 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 28168 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 28176 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 28184 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 28192 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 28200 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 28208 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 28216 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 28224 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 28232 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 28240 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 28244 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 28276 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 28284 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 28292 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 28312 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 28332 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 28352 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 28372 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 28392 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 28412 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 28432 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 28452 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 28460 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 28468 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 28844); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_proteus_h7.h b/firmware/controllers/generated/engine_configuration_generated_structures_proteus_h7.h index 37983ee1b8..e3a3c4a710 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_proteus_h7.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_proteus_h7.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 19200 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 19264 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 19328 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 19392 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 19456 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 19488 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 19520 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 19552 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 19560 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 19688 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 19752 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 19816 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 19944 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 20072 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 20136 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 20144 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 20152 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 20664 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 20696 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 20728 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 20788 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 21300 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 21332 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 21364 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 21428 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 21444 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 21460 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 21524 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 21540 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 21556 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 22068 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 22132 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 22644 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 22676 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 22708 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 22964 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 22996 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 23028 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 23284 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 23316 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 23348 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 23604 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 23620 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 23636 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 23892 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 23908 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 23924 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 23988 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 24004 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 24020 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 24100 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 24116 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 24136 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 24144 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 24152 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 24344 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 24352 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 24360 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 24552 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 24568 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24576 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24584 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24592 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24600 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24608 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24616 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24624 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24632 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24640 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24648 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24656 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 24664 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 24672 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 24680 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 24688 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 24696 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 24704 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 24712 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 24748 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 24754 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 24760 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 24796 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 24802 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 24808 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 24840 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 24848 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 24856 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 24888 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 24896 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 24904 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 24936 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 24944 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 24952 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 25704 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 26456 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 26480 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 26504 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 26880 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 27256 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27280 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27304 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27328 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27352 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27376 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27400 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27424 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27448 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27472 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 27496 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 27520 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 27536 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 27544 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 27552 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 27588 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 27600 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 27612 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 27620 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 27628 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 27636 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 27644 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 27652 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 27660 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 27676 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 27692 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 27700 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 27716 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 27916 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 27936 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 27946 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 28046 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 28066 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 28076 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 28108 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 28124 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 28128 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 28132 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 28136 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 28144 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 28160 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 28168 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 28176 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 28184 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 28192 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 28200 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 28208 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 28216 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 28224 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 28232 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 28240 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 28244 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 28276 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 28284 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 28292 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 28312 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 28332 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 28352 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 28372 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 28392 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 28412 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 28432 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 28452 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 28460 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 28468 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 28844); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_s105.h b/firmware/controllers/generated/engine_configuration_generated_structures_s105.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_s105.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_s105.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_small-can-board.h b/firmware/controllers/generated/engine_configuration_generated_structures_small-can-board.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_small-can-board.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_small-can-board.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_stm32f429_nucleo.h b/firmware/controllers/generated/engine_configuration_generated_structures_stm32f429_nucleo.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_stm32f429_nucleo.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_stm32f429_nucleo.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_stm32f767_nucleo.h b/firmware/controllers/generated/engine_configuration_generated_structures_stm32f767_nucleo.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_stm32f767_nucleo.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_stm32f767_nucleo.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_stm32h743_nucleo.h b/firmware/controllers/generated/engine_configuration_generated_structures_stm32h743_nucleo.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_stm32h743_nucleo.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_stm32h743_nucleo.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_subaru_eg33_f7.h b/firmware/controllers/generated/engine_configuration_generated_structures_subaru_eg33_f7.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_subaru_eg33_f7.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_subaru_eg33_f7.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_t-b-g.h b/firmware/controllers/generated/engine_configuration_generated_structures_t-b-g.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_t-b-g.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_t-b-g.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_tdg-pdm8.h b/firmware/controllers/generated/engine_configuration_generated_structures_tdg-pdm8.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_tdg-pdm8.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_tdg-pdm8.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_uaefi.h b/firmware/controllers/generated/engine_configuration_generated_structures_uaefi.h index decca8581e..74173bfa90 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_uaefi.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_uaefi.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,83 +6048,83 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; /** * offset 23344 */ - uint8_t rainTimingAdjustment[TIMING_ADJUSTMENT_SIZE][TIMING_ADJUSTMENT_SIZE]; + uint8_t rainTimingAdjustment[TIMING_ADJUSTMENT_SIZE][TIMING_ADJUSTMENT_SIZE] = {}; /** * units: RPM * offset 23360 */ - uint16_t rainTimingRpmBins[TIMING_ADJUSTMENT_SIZE]; + uint16_t rainTimingRpmBins[TIMING_ADJUSTMENT_SIZE] = {}; /** * units: C * offset 23368 */ - float rainTimingPpsBins[TIMING_ADJUSTMENT_SIZE]; + float rainTimingPpsBins[TIMING_ADJUSTMENT_SIZE] = {}; }; static_assert(sizeof(persistent_config_s) == 23384); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures_uaefi121.h b/firmware/controllers/generated/engine_configuration_generated_structures_uaefi121.h index 72caa9dde5..0794d25155 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures_uaefi121.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures_uaefi121.h @@ -39,7 +39,7 @@ struct stft_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * Below this engine load, the overrun region is active * units: load @@ -87,11 +87,11 @@ struct stft_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** * offset 12 */ - stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT]; + stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT] = {}; }; static_assert(sizeof(stft_s) == 28); @@ -148,7 +148,7 @@ struct MsIoBox_config_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; }; static_assert(sizeof(MsIoBox_config_s) == 4); @@ -174,7 +174,7 @@ struct cranking_parameters_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(cranking_parameters_s) == 8); @@ -197,7 +197,7 @@ struct gppwm_channel { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * Select a frequency to run PWM at. * Set this to 0hz to enable on-off mode. @@ -230,22 +230,22 @@ struct gppwm_channel { /** * offset 10 */ - scaled_channel loadBins[GPPWM_LOAD_COUNT]; + scaled_channel loadBins[GPPWM_LOAD_COUNT] = {}; /** * offset 26 */ - int16_t rpmBins[GPPWM_RPM_COUNT]; + int16_t rpmBins[GPPWM_RPM_COUNT] = {}; /** * units: duty * offset 42 */ - scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT]; + scaled_channel table[GPPWM_LOAD_COUNT][GPPWM_RPM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 106 */ - uint8_t alignmentFill_at_106[2]; + uint8_t alignmentFill_at_106[2] = {}; }; static_assert(sizeof(gppwm_channel) == 108); @@ -276,7 +276,7 @@ struct air_pressure_sensor_config_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(air_pressure_sensor_config_s) == 12); @@ -285,23 +285,23 @@ struct MAP_sensor_config_s { /** * offset 0 */ - float samplingAngleBins[MAP_ANGLE_SIZE]; + float samplingAngleBins[MAP_ANGLE_SIZE] = {}; /** * MAP averaging sampling start crank degree angle * units: deg * offset 32 */ - float samplingAngle[MAP_ANGLE_SIZE]; + float samplingAngle[MAP_ANGLE_SIZE] = {}; /** * offset 64 */ - float samplingWindowBins[MAP_WINDOW_SIZE]; + float samplingWindowBins[MAP_WINDOW_SIZE] = {}; /** * MAP averaging angle crank degree duration * units: deg * offset 96 */ - float samplingWindow[MAP_WINDOW_SIZE]; + float samplingWindow[MAP_WINDOW_SIZE] = {}; /** * offset 128 */ @@ -366,7 +366,7 @@ struct linear_sensor_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * units: volts * offset 4 @@ -403,7 +403,7 @@ struct ThermistorConf { * units: units * offset 29 */ - uint8_t alignmentFill_at_29[3]; + uint8_t alignmentFill_at_29[3] = {}; }; static_assert(sizeof(ThermistorConf) == 32); @@ -419,13 +419,13 @@ struct injector_s { * units: volts * offset 4 */ - float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE] = {}; /** * ms delay between injector open and close dead times * units: ms * offset 36 */ - float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]; + float battLagCorr[VBAT_INJECTOR_CURVE_SIZE] = {}; }; static_assert(sizeof(injector_s) == 68); @@ -464,7 +464,7 @@ struct afr_sensor_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * units: volts * offset 4 @@ -516,7 +516,7 @@ struct idle_hardware_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; }; static_assert(sizeof(idle_hardware_s) == 12); @@ -548,12 +548,12 @@ struct vr_threshold_s { * units: rpm * offset 0 */ - scaled_channel rpmBins[6]; + scaled_channel rpmBins[6] = {}; /** * units: volts * offset 6 */ - scaled_channel values[6]; + scaled_channel values[6] = {}; /** * offset 12 */ @@ -563,7 +563,7 @@ struct vr_threshold_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(vr_threshold_s) == 16); @@ -1028,7 +1028,7 @@ struct engine_configuration_s { * units: units * offset 455 */ - uint8_t alignmentFill_at_455[1]; + uint8_t alignmentFill_at_455[1] = {}; /** * Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases. * offset 456 @@ -1039,7 +1039,7 @@ struct engine_configuration_s { * units: units * offset 458 */ - uint8_t alignmentFill_at_458[2]; + uint8_t alignmentFill_at_458[2] = {}; /** * Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines. * There is tapering towards running timing advance @@ -1141,7 +1141,7 @@ struct engine_configuration_s { * units: units * offset 498 */ - uint8_t alignmentFill_at_498[2]; + uint8_t alignmentFill_at_498[2] = {}; /** * Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size. * units: revs/km @@ -1238,7 +1238,7 @@ struct engine_configuration_s { * Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts. * offset 556 */ - brain_input_pin_e camInputs[CAM_INPUTS_COUNT]; + brain_input_pin_e camInputs[CAM_INPUTS_COUNT] = {}; /** * offset 564 */ @@ -1332,7 +1332,7 @@ struct engine_configuration_s { * units: units * offset 625 */ - uint8_t alignmentFill_at_625[1]; + uint8_t alignmentFill_at_625[1] = {}; /** * offset 626 */ @@ -1340,11 +1340,11 @@ struct engine_configuration_s { /** * offset 628 */ - output_pin_e injectionPins[MAX_CYLINDER_COUNT]; + output_pin_e injectionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 652 */ - output_pin_e ignitionPins[MAX_CYLINDER_COUNT]; + output_pin_e ignitionPins[MAX_CYLINDER_COUNT] = {}; /** * offset 676 */ @@ -1404,7 +1404,7 @@ struct engine_configuration_s { /** * offset 694 */ - Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT]; + Gpio digitalPotentiometerChipSelect[DIGIPOT_COUNT] = {}; /** * offset 702 */ @@ -1465,13 +1465,13 @@ struct engine_configuration_s { /** * offset 716 */ - Gpio mc33810_cs[C_MC33810_COUNT]; + Gpio mc33810_cs[C_MC33810_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 718 */ - uint8_t alignmentFill_at_718[2]; + uint8_t alignmentFill_at_718[2] = {}; /** * 0.1 is a good default value * units: x @@ -1481,7 +1481,7 @@ struct engine_configuration_s { /** * offset 724 */ - brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit. * units: us @@ -1515,13 +1515,13 @@ struct engine_configuration_s { * units: units * offset 737 */ - uint8_t alignmentFill_at_737[1]; + uint8_t alignmentFill_at_737[1] = {}; /** * Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board. * See also directSelfStimulation which is different. * offset 738 */ - Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT]; + Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * units: g/s * offset 742 @@ -1530,7 +1530,7 @@ struct engine_configuration_s { /** * offset 744 */ - pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT]; + pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT] = {}; /** * offset 746 */ @@ -1540,7 +1540,7 @@ struct engine_configuration_s { * units: units * offset 747 */ - uint8_t alignmentFill_at_747[1]; + uint8_t alignmentFill_at_747[1] = {}; /** * On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking. * offset 748 @@ -1565,7 +1565,7 @@ struct engine_configuration_s { * units: units * offset 753 */ - uint8_t alignmentFill_at_753[3]; + uint8_t alignmentFill_at_753[3] = {}; /** offset 756 bit 0 */ bool is_enabled_spi_1 : 1 {}; @@ -1678,7 +1678,7 @@ struct engine_configuration_s { /** * offset 760 */ - brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; + brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT] = {}; /** * offset 768 */ @@ -1688,7 +1688,7 @@ struct engine_configuration_s { * units: units * offset 769 */ - uint8_t alignmentFill_at_769[1]; + uint8_t alignmentFill_at_769[1] = {}; /** * offset 770 */ @@ -1706,7 +1706,7 @@ struct engine_configuration_s { * units: units * offset 775 */ - uint8_t alignmentFill_at_775[1]; + uint8_t alignmentFill_at_775[1] = {}; /** * offset 776 */ @@ -1722,7 +1722,7 @@ struct engine_configuration_s { * units: units * offset 781 */ - uint8_t alignmentFill_at_781[1]; + uint8_t alignmentFill_at_781[1] = {}; /** * Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost. * units: kPa @@ -1756,7 +1756,7 @@ struct engine_configuration_s { * units: units * offset 789 */ - uint8_t alignmentFill_at_789[1]; + uint8_t alignmentFill_at_789[1] = {}; /** * units: kg * offset 790 @@ -1803,7 +1803,7 @@ struct engine_configuration_s { /** * offset 806 */ - Gpio max31855_cs[EGT_CHANNEL_COUNT]; + Gpio max31855_cs[EGT_CHANNEL_COUNT] = {}; /** * Continental/GM flex fuel sensor, 50-150hz type * offset 822 @@ -1850,7 +1850,7 @@ struct engine_configuration_s { * units: units * offset 833 */ - uint8_t alignmentFill_at_833[1]; + uint8_t alignmentFill_at_833[1] = {}; /** * offset 834 */ @@ -1869,7 +1869,7 @@ struct engine_configuration_s { * units: units * offset 839 */ - uint8_t alignmentFill_at_839[1]; + uint8_t alignmentFill_at_839[1] = {}; /** * Some Subaru and some Mazda use double-solenoid idle air valve * offset 840 @@ -1894,7 +1894,7 @@ struct engine_configuration_s { * units: units * offset 846 */ - uint8_t alignmentFill_at_846[2]; + uint8_t alignmentFill_at_846[2] = {}; /** * This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies. * units: count @@ -1947,7 +1947,7 @@ struct engine_configuration_s { * units: units * offset 867 */ - uint8_t alignmentFill_at_867[1]; + uint8_t alignmentFill_at_867[1] = {}; /** * offset 868 */ @@ -1966,7 +1966,7 @@ struct engine_configuration_s { /** * offset 872 */ - script_setting_t scriptSetting[SCRIPT_SETTING_COUNT]; + script_setting_t scriptSetting[SCRIPT_SETTING_COUNT] = {}; /** * offset 904 */ @@ -2027,7 +2027,7 @@ struct engine_configuration_s { * units: units * offset 927 */ - uint8_t alignmentFill_at_927[1]; + uint8_t alignmentFill_at_927[1] = {}; /** offset 928 bit 0 */ bool clutchUpPinInverted : 1 {}; @@ -2136,7 +2136,7 @@ struct engine_configuration_s { /** * offset 932 */ - dc_io etbIo[ETB_COUNT]; + dc_io etbIo[ETB_COUNT] = {}; /** * Wastegate control Solenoid * offset 948 @@ -2151,7 +2151,7 @@ struct engine_configuration_s { * units: units * offset 951 */ - uint8_t alignmentFill_at_951[1]; + uint8_t alignmentFill_at_951[1] = {}; /** * offset 952 */ @@ -2245,7 +2245,7 @@ struct engine_configuration_s { /** * offset 1048 */ - dc_io stepperDcIo[DC_PER_STEPPER]; + dc_io stepperDcIo[DC_PER_STEPPER] = {}; /** * For example, BMW, GM or Chevrolet * REQUIRED for rusEFI Online @@ -2268,11 +2268,11 @@ struct engine_configuration_s { /** * offset 1160 */ - output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT]; + output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT] = {}; /** * offset 1172 */ - dc_function_e etbFunctions[ETB_COUNT]; + dc_function_e etbFunctions[ETB_COUNT] = {}; /** * offset 1174 */ @@ -2282,7 +2282,7 @@ struct engine_configuration_s { * units: units * offset 1175 */ - uint8_t alignmentFill_at_1175[1]; + uint8_t alignmentFill_at_1175[1] = {}; /** * offset 1176 */ @@ -2296,7 +2296,7 @@ struct engine_configuration_s { * units: units * offset 1179 */ - uint8_t alignmentFill_at_1179[1]; + uint8_t alignmentFill_at_1179[1] = {}; /** * offset 1180 */ @@ -2304,27 +2304,27 @@ struct engine_configuration_s { /** * offset 1182 */ - output_pin_e luaOutputPins[LUA_PWM_COUNT]; + output_pin_e luaOutputPins[LUA_PWM_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 1198 */ - uint8_t alignmentFill_at_1198[2]; + uint8_t alignmentFill_at_1198[2] = {}; /** * Angle between cam sensor and VVT zero position * units: value * offset 1200 */ - float vvtOffsets[CAM_INPUTS_COUNT]; + float vvtOffsets[CAM_INPUTS_COUNT] = {}; /** * offset 1216 */ - vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT]; + vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT] = {}; /** * offset 1248 */ - gppwm_note_t gpPwmNote[GPPWM_CHANNELS]; + gppwm_note_t gpPwmNote[GPPWM_CHANNELS] = {}; /** * units: ADC * offset 1312 @@ -2457,7 +2457,7 @@ struct engine_configuration_s { * units: units * offset 1321 */ - uint8_t alignmentFill_at_1321[1]; + uint8_t alignmentFill_at_1321[1] = {}; /** * A/C button input * offset 1322 @@ -2483,7 +2483,7 @@ struct engine_configuration_s { * units: units * offset 1327 */ - uint8_t alignmentFill_at_1327[1]; + uint8_t alignmentFill_at_1327[1] = {}; /** offset 1328 bit 0 */ bool isInjectionEnabled : 1 {}; @@ -2618,7 +2618,7 @@ struct engine_configuration_s { /** * offset 1340 */ - Gpio camInputsDebug[CAM_INPUTS_COUNT]; + Gpio camInputsDebug[CAM_INPUTS_COUNT] = {}; /** * Idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling. * units: RPM @@ -2678,7 +2678,7 @@ struct engine_configuration_s { /** * offset 1420 */ - Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT]; + Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT] = {}; /** * RPM range above upper limit for extra air taper * units: RPM @@ -2717,7 +2717,7 @@ struct engine_configuration_s { * units: units * offset 1435 */ - uint8_t alignmentFill_at_1435[1]; + uint8_t alignmentFill_at_1435[1] = {}; /** * offset 1436 */ @@ -2732,7 +2732,7 @@ struct engine_configuration_s { * units: units * offset 1439 */ - uint8_t alignmentFill_at_1439[1]; + uint8_t alignmentFill_at_1439[1] = {}; /** * kPa value which is too low to be true * units: kPa @@ -2780,7 +2780,7 @@ struct engine_configuration_s { /** * offset 1480 */ - Gpio auxValves[AUX_DIGITAL_VALVE_COUNT]; + Gpio auxValves[AUX_DIGITAL_VALVE_COUNT] = {}; /** * offset 1484 */ @@ -2958,7 +2958,7 @@ struct engine_configuration_s { /** * offset 1520 */ - brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT]; + brain_input_pin_e auxSpeedSensorInputPin[AUX_SPEED_SENSOR_COUNT] = {}; /** * offset 1524 */ @@ -3190,7 +3190,7 @@ struct engine_configuration_s { * units: units * offset 1571 */ - uint8_t alignmentFill_at_1571[1]; + uint8_t alignmentFill_at_1571[1] = {}; /** * offset 1572 */ @@ -3231,7 +3231,7 @@ struct engine_configuration_s { * units: units * offset 1583 */ - uint8_t alignmentFill_at_1583[1]; + uint8_t alignmentFill_at_1583[1] = {}; /** * MAP value above which fuel is cut in case of overboost. * Set to 0 to disable overboost cut. @@ -3243,12 +3243,12 @@ struct engine_configuration_s { * units: kg/h * offset 1588 */ - scaled_channel tchargeBins[16]; + scaled_channel tchargeBins[16] = {}; /** * units: ratio * offset 1604 */ - scaled_channel tchargeValues[16]; + scaled_channel tchargeValues[16] = {}; /** * Fixed timing, useful for TDC testing * units: deg @@ -3277,7 +3277,7 @@ struct engine_configuration_s { * VVT output solenoid pin for this cam * offset 1636 */ - output_pin_e vvtPins[CAM_INPUTS_COUNT]; + output_pin_e vvtPins[CAM_INPUTS_COUNT] = {}; /** * This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling. * units: percent @@ -3325,7 +3325,7 @@ struct engine_configuration_s { * set vvt_mode X * offset 1672 */ - vvt_mode_e vvtMode[CAMS_PER_BANK]; + vvt_mode_e vvtMode[CAMS_PER_BANK] = {}; /** * Additional idle % when fan #2 is active * units: % @@ -3341,11 +3341,11 @@ struct engine_configuration_s { /** * offset 1676 */ - adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT]; + adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT] = {}; /** * offset 1684 */ - output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT]; + output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT] = {}; /** * offset 1708 */ @@ -3420,7 +3420,7 @@ struct engine_configuration_s { * units: deg * offset 1808 */ - angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]; + angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT] = {}; /** * units: seconds * offset 1856 @@ -3486,16 +3486,16 @@ struct engine_configuration_s { * TODO: rename to vvtPid * offset 1876 */ - pid_s auxPid[CAMS_PER_BANK]; + pid_s auxPid[CAMS_PER_BANK] = {}; /** * offset 1916 */ - float injectorCorrectionPolynomial[8]; + float injectorCorrectionPolynomial[8] = {}; /** * units: C * offset 1948 */ - int8_t primeBins[PRIME_CURVE_COUNT]; + int8_t primeBins[PRIME_CURVE_COUNT] = {}; /** * offset 1956 */ @@ -3509,7 +3509,7 @@ struct engine_configuration_s { * units: units * offset 1977 */ - uint8_t alignmentFill_at_1977[1]; + uint8_t alignmentFill_at_1977[1] = {}; /** * offset 1978 */ @@ -3543,7 +3543,7 @@ struct engine_configuration_s { * units: units * offset 1987 */ - uint8_t alignmentFill_at_1987[1]; + uint8_t alignmentFill_at_1987[1] = {}; /** * offset 1988 */ @@ -3553,7 +3553,7 @@ struct engine_configuration_s { * units: units * offset 1990 */ - uint8_t alignmentFill_at_1990[2]; + uint8_t alignmentFill_at_1990[2] = {}; /** * units: hz * offset 1992 @@ -3562,7 +3562,7 @@ struct engine_configuration_s { /** * offset 1996 */ - sent_input_pin_e sentInputPins[SENT_INPUT_COUNT]; + sent_input_pin_e sentInputPins[SENT_INPUT_COUNT] = {}; /** * This sets the RPM above which fuel cut is active. * units: rpm @@ -3604,7 +3604,7 @@ struct engine_configuration_s { * units: units * offset 2010 */ - uint8_t alignmentFill_at_2010[2]; + uint8_t alignmentFill_at_2010[2] = {}; /** * offset 2012 */ @@ -3616,15 +3616,15 @@ struct engine_configuration_s { /** * offset 2052 */ - gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT]; + gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT] = {}; /** * offset 2148 */ - gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT]; + gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT] = {}; /** * offset 2212 */ - gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT]; + gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT] = {}; /** * Heat transfer coefficient at zero flow. * 0 means the air charge is fully heated to the same temperature as CLT. @@ -3744,12 +3744,12 @@ struct engine_configuration_s { * Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor * offset 2412 */ - uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]; + uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT] = {}; /** * units: mg * offset 2424 */ - scaled_channel primeValues[PRIME_CURVE_COUNT]; + scaled_channel primeValues[PRIME_CURVE_COUNT] = {}; /** * Trigger comparator center point voltage * units: V @@ -3778,12 +3778,12 @@ struct engine_configuration_s { * units: ratio * offset 2436 */ - scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + scaled_channel tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: RPM * offset 2448 */ - uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE]; + uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 2454 */ @@ -3801,11 +3801,11 @@ struct engine_configuration_s { * units: units * offset 2458 */ - uint8_t alignmentFill_at_2458[2]; + uint8_t alignmentFill_at_2458[2] = {}; /** * offset 2460 */ - gppwm_channel gppwm[GPPWM_CHANNELS]; + gppwm_channel gppwm[GPPWM_CHANNELS] = {}; /** * Boost Current * units: mA @@ -3872,23 +3872,23 @@ struct engine_configuration_s { /** * offset 2913 */ - pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT]; + pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 2919 */ - uint8_t alignmentFill_at_2919[1]; + uint8_t alignmentFill_at_2919[1] = {}; /** * units: ratio * offset 2920 */ - float triggerGapOverrideFrom[GAP_TRACKING_LENGTH]; + float triggerGapOverrideFrom[GAP_TRACKING_LENGTH] = {}; /** * units: ratio * offset 2992 */ - float triggerGapOverrideTo[GAP_TRACKING_LENGTH]; + float triggerGapOverrideTo[GAP_TRACKING_LENGTH] = {}; /** * Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank. * units: rpm @@ -3948,7 +3948,7 @@ struct engine_configuration_s { * units: units * offset 3075 */ - uint8_t alignmentFill_at_3075[1]; + uint8_t alignmentFill_at_3075[1] = {}; /** * Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm. * units: cc @@ -3984,12 +3984,12 @@ struct engine_configuration_s { /** * offset 3086 */ - output_pin_e stepper_raw_output[4]; + output_pin_e stepper_raw_output[4] = {}; /** * units: ratio * offset 3094 */ - scaled_channel gearRatio[TCU_GEAR_COUNT]; + scaled_channel gearRatio[TCU_GEAR_COUNT] = {}; /** * We need to give engine time to build oil pressure without diverting it to VVT * units: ms @@ -4000,17 +4000,17 @@ struct engine_configuration_s { * units: Nm * offset 3116 */ - scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE]; + scaled_channel torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE] = {}; /** * units: RPM * offset 3152 */ - uint16_t torqueRpmBins[TORQUE_CURVE_SIZE]; + uint16_t torqueRpmBins[TORQUE_CURVE_SIZE] = {}; /** * units: Load * offset 3164 */ - uint16_t torqueLoadBins[TORQUE_CURVE_SIZE]; + uint16_t torqueLoadBins[TORQUE_CURVE_SIZE] = {}; /** * offset 3176 */ @@ -4046,7 +4046,7 @@ struct engine_configuration_s { * units: units * offset 3223 */ - uint8_t alignmentFill_at_3223[1]; + uint8_t alignmentFill_at_3223[1] = {}; /** * offset 3224 */ @@ -4060,7 +4060,7 @@ struct engine_configuration_s { * units: units * offset 3227 */ - uint8_t alignmentFill_at_3227[1]; + uint8_t alignmentFill_at_3227[1] = {}; /** * offset 3228 */ @@ -4078,7 +4078,7 @@ struct engine_configuration_s { * units: units * offset 3233 */ - uint8_t alignmentFill_at_3233[1]; + uint8_t alignmentFill_at_3233[1] = {}; /** * offset 3234 */ @@ -4096,7 +4096,7 @@ struct engine_configuration_s { * units: units * offset 3239 */ - uint8_t alignmentFill_at_3239[1]; + uint8_t alignmentFill_at_3239[1] = {}; /** * offset 3240 */ @@ -4116,7 +4116,7 @@ struct engine_configuration_s { * units: units * offset 3245 */ - uint8_t alignmentFill_at_3245[1]; + uint8_t alignmentFill_at_3245[1] = {}; /** * offset 3246 */ @@ -4131,11 +4131,11 @@ struct engine_configuration_s { * units: units * offset 3265 */ - uint8_t alignmentFill_at_3265[1]; + uint8_t alignmentFill_at_3265[1] = {}; /** * offset 3266 */ - uint16_t highSpeedOffsets[HIGH_SPEED_COUNT]; + uint16_t highSpeedOffsets[HIGH_SPEED_COUNT] = {}; /** * offset 3330 */ @@ -4145,11 +4145,11 @@ struct engine_configuration_s { * units: units * offset 3331 */ - uint8_t alignmentFill_at_3331[1]; + uint8_t alignmentFill_at_3331[1] = {}; /** * offset 3332 */ - switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]; + switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT] = {}; /** * units: rpm * offset 3348 @@ -4202,7 +4202,7 @@ struct engine_configuration_s { * units: units * offset 3362 */ - uint8_t alignmentFill_at_3362[2]; + uint8_t alignmentFill_at_3362[2] = {}; /** * units: % * offset 3364 @@ -4242,7 +4242,7 @@ struct engine_configuration_s { /** * offset 3380 */ - pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]; + pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT] = {}; /** * offset 3388 */ @@ -4311,13 +4311,13 @@ struct engine_configuration_s { * units: % * offset 3405 */ - scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT]; + scaled_channel gearBasedOpenLoopBoostAdder[TCU_GEAR_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3415 */ - uint8_t alignmentFill_at_3415[1]; + uint8_t alignmentFill_at_3415[1] = {}; /** * How many test bench pulses do you want * offset 3416 @@ -4338,11 +4338,11 @@ struct engine_configuration_s { /** * offset 3422 */ - switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT]; + switch_input_pin_e tcu_rangeInput[RANGE_INPUT_COUNT] = {}; /** * offset 3434 */ - pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; + pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT] = {}; /** * Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead. * units: ratio @@ -4354,7 +4354,7 @@ struct engine_configuration_s { * units: units * offset 3442 */ - uint8_t alignmentFill_at_3442[2]; + uint8_t alignmentFill_at_3442[2] = {}; /** * offset 3444 */ @@ -4384,7 +4384,7 @@ struct engine_configuration_s { /** * offset 3574 */ - Gpio dacOutputPins[DAC_OUTPUT_COUNT]; + Gpio dacOutputPins[DAC_OUTPUT_COUNT] = {}; /** * offset 3578 */ @@ -4397,7 +4397,7 @@ struct engine_configuration_s { /** * offset 3582 */ - uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]; + uint8_t simulatorCamPosition[CAM_INPUTS_COUNT] = {}; /** * offset 3586 */ @@ -4410,17 +4410,17 @@ struct engine_configuration_s { * units: ratio * offset 3588 */ - float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideFrom[VVT_TRACKING_LENGTH] = {}; /** * units: ratio * offset 3604 */ - float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH]; + float triggerVVTGapOverrideTo[VVT_TRACKING_LENGTH] = {}; /** * units: % * offset 3620 */ - int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlEtbDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * If injector duty cycle hits this value, instantly cut fuel. * units: % @@ -4444,21 +4444,21 @@ struct engine_configuration_s { * units: units * offset 3659 */ - uint8_t alignmentFill_at_3659[1]; + uint8_t alignmentFill_at_3659[1] = {}; /** * offset 3660 */ - output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT]; + output_pin_e injectionPinsStage2[MAX_CYLINDER_COUNT] = {}; /** * units: Deg * offset 3684 */ - int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlTimingDrop[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * units: % * offset 3720 */ - int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE]; + int8_t tractionControlIgnitionSkip[TRACTION_CONTROL_ETB_DROP_SIZE][TRACTION_CONTROL_ETB_DROP_SIZE] = {}; /** * offset 3756 */ @@ -4540,7 +4540,7 @@ struct engine_configuration_s { * units: units * offset 3790 */ - uint8_t alignmentFill_at_3790[2]; + uint8_t alignmentFill_at_3790[2] = {}; /** * Secondary TTL channel baud rate * units: BPs @@ -4560,7 +4560,7 @@ struct engine_configuration_s { * units: units * offset 3799 */ - uint8_t alignmentFill_at_3799[1]; + uint8_t alignmentFill_at_3799[1] = {}; /** * offset 3800 */ @@ -4568,17 +4568,17 @@ struct engine_configuration_s { /** * offset 3804 */ - uint32_t device_uid[3]; + uint32_t device_uid[3] = {}; /** * offset 3816 */ - adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT]; + adc_channel_e tcu_rangeAnalogInput[RANGE_INPUT_COUNT] = {}; /** * need 4 byte alignment * units: units * offset 3822 */ - uint8_t alignmentFill_at_3822[2]; + uint8_t alignmentFill_at_3822[2] = {}; /** * units: Ohm * offset 3824 @@ -4605,7 +4605,7 @@ struct engine_configuration_s { * units: units * offset 3834 */ - uint8_t alignmentFill_at_3834[2]; + uint8_t alignmentFill_at_3834[2] = {}; /** * offset 3836 */ @@ -4633,7 +4633,7 @@ struct engine_configuration_s { * units: units * offset 3861 */ - uint8_t alignmentFill_at_3861[3]; + uint8_t alignmentFill_at_3861[3] = {}; /** * offset 3864 */ @@ -4689,7 +4689,7 @@ struct engine_configuration_s { * units: units * offset 3917 */ - uint8_t alignmentFill_at_3917[3]; + uint8_t alignmentFill_at_3917[3] = {}; /** * This is the pressure at which your injector flow is known. * For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here. @@ -4717,7 +4717,7 @@ struct engine_configuration_s { * units: units * offset 3927 */ - uint8_t alignmentFill_at_3927[1]; + uint8_t alignmentFill_at_3927[1] = {}; /** offset 3928 bit 0 */ bool nitrousControlEnabled : 1 {}; @@ -4823,7 +4823,7 @@ struct engine_configuration_s { * units: units * offset 3933 */ - uint8_t alignmentFill_at_3933[1]; + uint8_t alignmentFill_at_3933[1] = {}; /** * Pin that activates nitrous control * offset 3934 @@ -4846,7 +4846,7 @@ struct engine_configuration_s { * units: units * offset 3939 */ - uint8_t alignmentFill_at_3939[1]; + uint8_t alignmentFill_at_3939[1] = {}; /** * offset 3940 */ @@ -4865,7 +4865,7 @@ struct engine_configuration_s { * units: units * offset 3949 */ - uint8_t alignmentFill_at_3949[1]; + uint8_t alignmentFill_at_3949[1] = {}; /** * units: kPa * offset 3950 @@ -4881,7 +4881,7 @@ struct engine_configuration_s { * units: units * offset 3953 */ - uint8_t alignmentFill_at_3953[1]; + uint8_t alignmentFill_at_3953[1] = {}; /** * units: rpm * offset 3954 @@ -4927,7 +4927,7 @@ struct engine_configuration_s { * units: units * offset 3966 */ - uint8_t alignmentFill_at_3966[2]; + uint8_t alignmentFill_at_3966[2] = {}; /** * Retard timing to remove from actual final timing (after all corrections) due to additional air. * units: deg @@ -4944,7 +4944,7 @@ struct engine_configuration_s { * units: units * offset 3974 */ - uint8_t alignmentFill_at_3974[2]; + uint8_t alignmentFill_at_3974[2] = {}; /** * Exponential Average Alpha filtering parameter * offset 3976 @@ -4960,13 +4960,13 @@ struct engine_configuration_s { * units: units * offset 3984 */ - uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING]; + uint8_t unusedOftenChangesDuringFirmwareUpdate[END_OF_CALIBRATION_PADDING] = {}; /** * need 4 byte alignment * units: units * offset 4042 */ - uint8_t alignmentFill_at_4042[2]; + uint8_t alignmentFill_at_4042[2] = {}; }; static_assert(sizeof(engine_configuration_s) == 4044); @@ -4975,7 +4975,7 @@ struct ign_cyl_trim_s { /** * offset 0 */ - scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE]; + scaled_channel table[IGN_TRIM_SIZE][IGN_TRIM_SIZE] = {}; }; static_assert(sizeof(ign_cyl_trim_s) == 16); @@ -4984,7 +4984,7 @@ struct fuel_cyl_trim_s { /** * offset 0 */ - scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE]; + scaled_channel table[FUEL_TRIM_SIZE][FUEL_TRIM_SIZE] = {}; }; static_assert(sizeof(fuel_cyl_trim_s) == 16); @@ -4993,17 +4993,17 @@ struct blend_table_s { /** * offset 0 */ - scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]; + scaled_channel table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT] = {}; /** * units: Load * offset 128 */ - uint16_t loadBins[BLEND_TABLE_COUNT]; + uint16_t loadBins[BLEND_TABLE_COUNT] = {}; /** * units: RPM * offset 144 */ - uint16_t rpmBins[BLEND_TABLE_COUNT]; + uint16_t rpmBins[BLEND_TABLE_COUNT] = {}; /** * offset 160 */ @@ -5015,18 +5015,18 @@ struct blend_table_s { /** * offset 162 */ - scaled_channel blendBins[8]; + scaled_channel blendBins[8] = {}; /** * units: % * offset 178 */ - scaled_channel blendValues[8]; + scaled_channel blendValues[8] = {}; /** * need 4 byte alignment * units: units * offset 186 */ - uint8_t alignmentFill_at_186[2]; + uint8_t alignmentFill_at_186[2] = {}; }; static_assert(sizeof(blend_table_s) == 188); @@ -5040,189 +5040,189 @@ struct persistent_config_s { * units: mult * offset 4044 */ - float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT]; + float postCrankingFactor[CRANKING_ENRICH_COUNT][CRANKING_ENRICH_COUNT] = {}; /** * units: count * offset 4188 */ - uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT]; + uint16_t postCrankingDurationBins[CRANKING_ENRICH_COUNT] = {}; /** * units: C * offset 4200 */ - int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT]; + int16_t postCrankingCLTBins[CRANKING_ENRICH_COUNT] = {}; /** * target TPS value, 0 to 100% * TODO: use int8 data date once we template interpolation method * units: target TPS position * offset 4212 */ - float etbBiasBins[ETB_BIAS_CURVE_LENGTH]; + float etbBiasBins[ETB_BIAS_CURVE_LENGTH] = {}; /** * PWM bias, open loop component of PID closed loop control * units: ETB duty cycle bias * offset 4244 */ - float etbBiasValues[ETB_BIAS_CURVE_LENGTH]; + float etbBiasValues[ETB_BIAS_CURVE_LENGTH] = {}; /** * units: % * offset 4276 */ - scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE] = {}; /** * units: Load * offset 4340 */ - uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE]; + uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE] = {}; /** * units: RPM * offset 4348 */ - scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE]; + scaled_channel iacPidMultRpmBins[IAC_PID_MULT_SIZE] = {}; /** * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * units: RPM * offset 4356 */ - uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]; + uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE] = {}; /** * units: ms * offset 4372 */ - scaled_channel sparkDwellValues[DWELL_CURVE_SIZE]; + scaled_channel sparkDwellValues[DWELL_CURVE_SIZE] = {}; /** * CLT-based target RPM for automatic idle controller * units: C * offset 4388 */ - scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpmBins[CLT_CURVE_SIZE] = {}; /** * See idleRpmPid * units: RPM * offset 4404 */ - scaled_channel cltIdleRpm[CLT_CURVE_SIZE]; + scaled_channel cltIdleRpm[CLT_CURVE_SIZE] = {}; /** * CLT-based timing correction * units: C * offset 4420 */ - float cltTimingBins[CLT_TIMING_CURVE_SIZE]; + float cltTimingBins[CLT_TIMING_CURVE_SIZE] = {}; /** * units: degree * offset 4452 */ - float cltTimingExtra[CLT_TIMING_CURVE_SIZE]; + float cltTimingExtra[CLT_TIMING_CURVE_SIZE] = {}; /** * units: x * offset 4484 */ - float scriptCurve1Bins[SCRIPT_CURVE_16]; + float scriptCurve1Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4548 */ - float scriptCurve1[SCRIPT_CURVE_16]; + float scriptCurve1[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4612 */ - float scriptCurve2Bins[SCRIPT_CURVE_16]; + float scriptCurve2Bins[SCRIPT_CURVE_16] = {}; /** * units: y * offset 4676 */ - float scriptCurve2[SCRIPT_CURVE_16]; + float scriptCurve2[SCRIPT_CURVE_16] = {}; /** * units: x * offset 4740 */ - float scriptCurve3Bins[SCRIPT_CURVE_8]; + float scriptCurve3Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4772 */ - float scriptCurve3[SCRIPT_CURVE_8]; + float scriptCurve3[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4804 */ - float scriptCurve4Bins[SCRIPT_CURVE_8]; + float scriptCurve4Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4836 */ - float scriptCurve4[SCRIPT_CURVE_8]; + float scriptCurve4[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4868 */ - float scriptCurve5Bins[SCRIPT_CURVE_8]; + float scriptCurve5Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4900 */ - float scriptCurve5[SCRIPT_CURVE_8]; + float scriptCurve5[SCRIPT_CURVE_8] = {}; /** * units: x * offset 4932 */ - float scriptCurve6Bins[SCRIPT_CURVE_8]; + float scriptCurve6Bins[SCRIPT_CURVE_8] = {}; /** * units: y * offset 4964 */ - float scriptCurve6[SCRIPT_CURVE_8]; + float scriptCurve6[SCRIPT_CURVE_8] = {}; /** * units: kPa * offset 4996 */ - float baroCorrPressureBins[BARO_CORR_SIZE]; + float baroCorrPressureBins[BARO_CORR_SIZE] = {}; /** * units: RPM * offset 5012 */ - float baroCorrRpmBins[BARO_CORR_SIZE]; + float baroCorrRpmBins[BARO_CORR_SIZE] = {}; /** * units: ratio * offset 5028 */ - float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE]; + float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE] = {}; /** * Cranking fuel correction coefficient based on TPS * units: Ratio * offset 5092 */ - float crankingTpsCoef[CRANKING_CURVE_SIZE]; + float crankingTpsCoef[CRANKING_CURVE_SIZE] = {}; /** * units: % * offset 5124 */ - float crankingTpsBins[CRANKING_CURVE_SIZE]; + float crankingTpsBins[CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: RPM * offset 5156 */ - uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE]; + uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Cranking (see useSeparateAdvanceForCranking) * units: deg * offset 5164 */ - scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE]; + scaled_channel crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: RPM * offset 5172 */ - scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE]; + scaled_channel iacCoastingRpmBins[CLT_CURVE_SIZE] = {}; /** * RPM-based idle position for coasting * units: % * offset 5188 */ - scaled_channel iacCoasting[CLT_CURVE_SIZE]; + scaled_channel iacCoasting[CLT_CURVE_SIZE] = {}; /** * offset 5204 */ @@ -5230,74 +5230,74 @@ struct persistent_config_s { /** * offset 5324 */ - scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableOpenLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * units: RPM * offset 5388 */ - scaled_channel boostRpmBins[BOOST_RPM_COUNT]; + scaled_channel boostRpmBins[BOOST_RPM_COUNT] = {}; /** * offset 5396 */ - scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT]; + scaled_channel boostTableClosedLoop[BOOST_LOAD_COUNT][BOOST_RPM_COUNT] = {}; /** * offset 5460 */ - uint16_t boostLoadBins[BOOST_LOAD_COUNT]; + uint16_t boostLoadBins[BOOST_LOAD_COUNT] = {}; /** * units: % * offset 5476 */ - uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE] = {}; /** * units: % * offset 5540 */ - uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE]; + uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE] = {}; /** * units: RPM * offset 5548 */ - scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE]; + scaled_channel pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: C * offset 5556 */ - float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE] = {}; /** * CLT-based cranking position multiplier for simple manual idle controller * units: % * offset 5588 */ - float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE]; + float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: RPM * offset 5620 */ - scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE]; + scaled_channel idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * Optional timing advance table for Idle (see useSeparateAdvanceForIdle) * units: deg * offset 5628 */ - float idleAdvance[IDLE_ADVANCE_CURVE_SIZE]; + float idleAdvance[IDLE_ADVANCE_CURVE_SIZE] = {}; /** * units: RPM * offset 5660 */ - scaled_channel idleVeRpmBins[IDLE_VE_SIZE]; + scaled_channel idleVeRpmBins[IDLE_VE_SIZE] = {}; /** * units: load * offset 5664 */ - uint8_t idleVeLoadBins[IDLE_VE_SIZE]; + uint8_t idleVeLoadBins[IDLE_VE_SIZE] = {}; /** * units: % * offset 5668 */ - scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]; + scaled_channel idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE] = {}; /** * offset 5700 */ @@ -5306,59 +5306,59 @@ struct persistent_config_s { * units: C * offset 13700 */ - float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorrBins[CLT_FUEL_CURVE_SIZE] = {}; /** * units: ratio * offset 13764 */ - float cltFuelCorr[CLT_FUEL_CURVE_SIZE]; + float cltFuelCorr[CLT_FUEL_CURVE_SIZE] = {}; /** * units: C * offset 13828 */ - float iatFuelCorrBins[IAT_CURVE_SIZE]; + float iatFuelCorrBins[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13892 */ - float iatFuelCorr[IAT_CURVE_SIZE]; + float iatFuelCorr[IAT_CURVE_SIZE] = {}; /** * units: ratio * offset 13956 */ - float crankingFuelCoef[CRANKING_CURVE_SIZE]; + float crankingFuelCoef[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 13988 */ - float crankingFuelBins[CRANKING_CURVE_SIZE]; + float crankingFuelBins[CRANKING_CURVE_SIZE] = {}; /** * units: counter * offset 14020 */ - float crankingCycleBins[CRANKING_CURVE_SIZE]; + float crankingCycleBins[CRANKING_CURVE_SIZE] = {}; /** * units: C * offset 14052 */ - int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE]; + int16_t crankingCycleFuelCltBins[CRANKING_CYCLE_CLT_SIZE] = {}; /** * units: mult * offset 14060 */ - float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE]; + float crankingCycleFuelCoef[CRANKING_CYCLE_CLT_SIZE][CRANKING_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: C * offset 14188 */ - float cltIdleCorrBins[CLT_CURVE_SIZE]; + float cltIdleCorrBins[CLT_CURVE_SIZE] = {}; /** * CLT-based idle position multiplier for simple manual idle controller * units: ratio * offset 14252 */ - float cltIdleCorr[CLT_CURVE_SIZE]; + float cltIdleCorr[CLT_CURVE_SIZE] = {}; /** * Also known as MAF transfer function. * kg/hour value. @@ -5366,679 +5366,679 @@ struct persistent_config_s { * units: kg/hour * offset 14316 */ - float mafDecoding[MAF_DECODING_COUNT]; + float mafDecoding[MAF_DECODING_COUNT] = {}; /** * units: V * offset 14444 */ - float mafDecodingBins[MAF_DECODING_COUNT]; + float mafDecodingBins[MAF_DECODING_COUNT] = {}; /** * units: deg * offset 14572 */ - scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrTable[IAT_IGN_CORR_COUNT][IAT_IGN_CORR_COUNT] = {}; /** * units: C * offset 14636 */ - int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]; + int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT] = {}; /** * units: Load * offset 14644 */ - scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT]; + scaled_channel ignitionIatCorrLoadBins[IAT_IGN_CORR_COUNT] = {}; /** * units: deg * offset 14652 */ - int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]; + int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT] = {}; /** * units: Load * offset 15164 */ - uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]; + uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT] = {}; /** * units: RPM * offset 15196 */ - uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT]; + uint16_t injPhaseRpmBins[INJ_PHASE_RPM_COUNT] = {}; /** * units: onoff * offset 15228 */ - uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]; + uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT] = {}; /** * units: kPa * offset 15288 */ - scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel mapEstimateTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: % TPS * offset 15800 */ - scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT]; + scaled_channel mapEstimateTpsBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 15832 */ - uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT]; + uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 15864 */ - int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable1[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 15928 */ - uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 15944 */ - uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE] = {}; /** * units: value * offset 15960 */ - int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE]; + int8_t vvtTable2[VVT_TABLE_SIZE][VVT_TABLE_SIZE] = {}; /** * units: L * offset 16024 */ - uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE] = {}; /** * units: RPM * offset 16040 */ - uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]; + uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE] = {}; /** * units: deg * offset 16056 */ - scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]; + scaled_channel ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT] = {}; /** * units: Load * offset 16568 */ - uint16_t ignitionLoadBins[IGN_LOAD_COUNT]; + uint16_t ignitionLoadBins[IGN_LOAD_COUNT] = {}; /** * units: RPM * offset 16600 */ - uint16_t ignitionRpmBins[IGN_RPM_COUNT]; + uint16_t ignitionRpmBins[IGN_RPM_COUNT] = {}; /** * units: % * offset 16632 */ - scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel veTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * units: {bitStringValue(fuelUnits, fuelAlgorithm) } * offset 17144 */ - uint16_t veLoadBins[FUEL_LOAD_COUNT]; + uint16_t veLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17176 */ - uint16_t veRpmBins[FUEL_RPM_COUNT]; + uint16_t veRpmBins[FUEL_RPM_COUNT] = {}; /** * units: lambda * offset 17208 */ - scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT]; + scaled_channel lambdaTable[FUEL_LOAD_COUNT][FUEL_RPM_COUNT] = {}; /** * offset 17464 */ - uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]; + uint16_t lambdaLoadBins[FUEL_LOAD_COUNT] = {}; /** * units: RPM * offset 17496 */ - uint16_t lambdaRpmBins[FUEL_RPM_COUNT]; + uint16_t lambdaRpmBins[FUEL_RPM_COUNT] = {}; /** * units: value * offset 17528 */ - float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {}; /** * units: from * offset 17784 */ - float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: to * offset 17816 */ - float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE]; + float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE] = {}; /** * units: value * offset 17848 */ - float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18104 */ - int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable1LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18120 */ - int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable1RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18136 */ - float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE]; + float scriptTable2[TABLE_2_LOAD_SIZE][TABLE_2_RPM_SIZE] = {}; /** * units: L * offset 18392 */ - int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]; + int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE] = {}; /** * units: RPM * offset 18408 */ - int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]; + int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE] = {}; /** * units: value * offset 18424 */ - uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8]; + uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {}; /** * units: L * offset 18488 */ - int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable3LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18504 */ - int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]; + int16_t scriptTable3RpmBins[SCRIPT_TABLE_8] = {}; /** * units: value * offset 18520 */ - uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM]; + uint8_t scriptTable4[SCRIPT_TABLE_8][TABLE_4_RPM] = {}; /** * units: L * offset 18600 */ - int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]; + int16_t scriptTable4LoadBins[SCRIPT_TABLE_8] = {}; /** * units: RPM * offset 18616 */ - int16_t scriptTable4RpmBins[TABLE_4_RPM]; + int16_t scriptTable4RpmBins[TABLE_4_RPM] = {}; /** * offset 18636 */ - uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]; + uint16_t ignTrimLoadBins[IGN_TRIM_SIZE] = {}; /** * units: rpm * offset 18644 */ - uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]; + uint16_t ignTrimRpmBins[IGN_TRIM_SIZE] = {}; /** * offset 18652 */ - ign_cyl_trim_s ignTrims[12]; + ign_cyl_trim_s ignTrims[12] = {}; /** * offset 18844 */ - uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimLoadBins[FUEL_TRIM_SIZE] = {}; /** * units: rpm * offset 18852 */ - uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE]; + uint16_t fuelTrimRpmBins[FUEL_TRIM_SIZE] = {}; /** * offset 18860 */ - fuel_cyl_trim_s fuelTrims[12]; + fuel_cyl_trim_s fuelTrims[12] = {}; /** * units: ratio * offset 19052 */ - scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE]; + scaled_channel crankingFuelCoefE100[CRANKING_CURVE_SIZE] = {}; /** * units: Airmass * offset 19068 */ - scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_pcAirmassBins[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19076 */ - uint8_t tcu_pcValsR[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsR[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19084 */ - uint8_t tcu_pcValsN[TCU_TABLE_WIDTH]; + uint8_t tcu_pcValsN[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19092 */ - uint8_t tcu_pcVals1[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals1[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19100 */ - uint8_t tcu_pcVals2[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals2[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19108 */ - uint8_t tcu_pcVals3[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals3[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19116 */ - uint8_t tcu_pcVals4[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals4[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19124 */ - uint8_t tcu_pcVals12[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals12[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19132 */ - uint8_t tcu_pcVals23[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals23[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19140 */ - uint8_t tcu_pcVals34[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals34[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19148 */ - uint8_t tcu_pcVals21[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals21[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19156 */ - uint8_t tcu_pcVals32[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals32[TCU_TABLE_WIDTH] = {}; /** * units: % * offset 19164 */ - uint8_t tcu_pcVals43[TCU_TABLE_WIDTH]; + uint8_t tcu_pcVals43[TCU_TABLE_WIDTH] = {}; /** * units: TPS * offset 19172 */ - uint8_t tcu_tccTpsBins[8]; + uint8_t tcu_tccTpsBins[8] = {}; /** * units: MPH * offset 19180 */ - uint8_t tcu_tccLockSpeed[8]; + uint8_t tcu_tccLockSpeed[8] = {}; /** * units: MPH * offset 19188 */ - uint8_t tcu_tccUnlockSpeed[8]; + uint8_t tcu_tccUnlockSpeed[8] = {}; /** * units: KPH * offset 19196 */ - uint8_t tcu_32SpeedBins[8]; + uint8_t tcu_32SpeedBins[8] = {}; /** * units: % * offset 19204 */ - uint8_t tcu_32Vals[8]; + uint8_t tcu_32Vals[8] = {}; /** * units: % * offset 19212 */ - scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimTable[ETB2_TRIM_SIZE][ETB2_TRIM_SIZE] = {}; /** * units: % * offset 19248 */ - uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE]; + uint8_t throttle2TrimTpsBins[ETB2_TRIM_SIZE] = {}; /** * units: RPM * offset 19254 */ - scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE]; + scaled_channel throttle2TrimRpmBins[ETB2_TRIM_SIZE] = {}; /** * units: deg * offset 19260 */ - scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardTable[KNOCK_TABLE_SIZE][KNOCK_TABLE_SIZE] = {}; /** * units: % * offset 19296 */ - uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE]; + uint8_t maxKnockRetardLoadBins[KNOCK_TABLE_SIZE] = {}; /** * units: RPM * offset 19302 */ - scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE]; + scaled_channel maxKnockRetardRpmBins[KNOCK_TABLE_SIZE] = {}; /** * units: deg * offset 19308 */ - scaled_channel ALSTimingRetardTable[4][4]; + scaled_channel ALSTimingRetardTable[4][4] = {}; /** * units: TPS * offset 19340 */ - uint16_t alsIgnRetardLoadBins[4]; + uint16_t alsIgnRetardLoadBins[4] = {}; /** * units: RPM * offset 19348 */ - uint16_t alsIgnRetardrpmBins[4]; + uint16_t alsIgnRetardrpmBins[4] = {}; /** * units: percent * offset 19356 */ - scaled_channel ALSFuelAdjustment[4][4]; + scaled_channel ALSFuelAdjustment[4][4] = {}; /** * units: TPS * offset 19388 */ - uint16_t alsFuelAdjustmentLoadBins[4]; + uint16_t alsFuelAdjustmentLoadBins[4] = {}; /** * units: RPM * offset 19396 */ - uint16_t alsFuelAdjustmentrpmBins[4]; + uint16_t alsFuelAdjustmentrpmBins[4] = {}; /** * units: ratio * offset 19404 */ - scaled_channel ALSIgnSkipTable[4][4]; + scaled_channel ALSIgnSkipTable[4][4] = {}; /** * units: TPS * offset 19436 */ - uint16_t alsIgnSkipLoadBins[4]; + uint16_t alsIgnSkipLoadBins[4] = {}; /** * units: RPM * offset 19444 */ - uint16_t alsIgnSkiprpmBins[4]; + uint16_t alsIgnSkiprpmBins[4] = {}; /** * offset 19452 */ - blend_table_s ignBlends[IGN_BLEND_COUNT]; + blend_table_s ignBlends[IGN_BLEND_COUNT] = {}; /** * offset 20204 */ - blend_table_s veBlends[VE_BLEND_COUNT]; + blend_table_s veBlends[VE_BLEND_COUNT] = {}; /** * units: % * offset 20956 */ - scaled_channel throttleEstimateEffectiveAreaBins[12]; + scaled_channel throttleEstimateEffectiveAreaBins[12] = {}; /** * In units of g/s normalized to choked flow conditions * units: g/s * offset 20980 */ - scaled_channel throttleEstimateEffectiveAreaValues[12]; + scaled_channel throttleEstimateEffectiveAreaValues[12] = {}; /** * offset 21004 */ - blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostOpenLoopBlends[BOOST_BLEND_COUNT] = {}; /** * offset 21380 */ - blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT] = {}; /** * units: level * offset 21756 */ - float tcu_rangeP[RANGE_INPUT_COUNT]; + float tcu_rangeP[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21780 */ - float tcu_rangeR[RANGE_INPUT_COUNT]; + float tcu_rangeR[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21804 */ - float tcu_rangeN[RANGE_INPUT_COUNT]; + float tcu_rangeN[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21828 */ - float tcu_rangeD[RANGE_INPUT_COUNT]; + float tcu_rangeD[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21852 */ - float tcu_rangeM[RANGE_INPUT_COUNT]; + float tcu_rangeM[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21876 */ - float tcu_rangeM3[RANGE_INPUT_COUNT]; + float tcu_rangeM3[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21900 */ - float tcu_rangeM2[RANGE_INPUT_COUNT]; + float tcu_rangeM2[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21924 */ - float tcu_rangeM1[RANGE_INPUT_COUNT]; + float tcu_rangeM1[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21948 */ - float tcu_rangePlus[RANGE_INPUT_COUNT]; + float tcu_rangePlus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21972 */ - float tcu_rangeMinus[RANGE_INPUT_COUNT]; + float tcu_rangeMinus[RANGE_INPUT_COUNT] = {}; /** * units: level * offset 21996 */ - float tcu_rangeLow[RANGE_INPUT_COUNT]; + float tcu_rangeLow[RANGE_INPUT_COUNT] = {}; /** * units: lambda * offset 22020 */ - scaled_channel lambdaMaxDeviationTable[4][4]; + scaled_channel lambdaMaxDeviationTable[4][4] = {}; /** * offset 22036 */ - uint16_t lambdaMaxDeviationLoadBins[4]; + uint16_t lambdaMaxDeviationLoadBins[4] = {}; /** * units: RPM * offset 22044 */ - uint16_t lambdaMaxDeviationRpmBins[4]; + uint16_t lambdaMaxDeviationRpmBins[4] = {}; /** * units: % * offset 22052 */ - uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT]; + uint8_t injectorStagingTable[INJ_STAGING_COUNT][INJ_STAGING_COUNT] = {}; /** * offset 22088 */ - uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingLoadBins[INJ_STAGING_COUNT] = {}; /** * units: RPM * offset 22100 */ - uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT]; + uint16_t injectorStagingRpmBins[INJ_STAGING_COUNT] = {}; /** * units: deg C * offset 22112 */ - int8_t wwCltBins[WWAE_TABLE_SIZE]; + int8_t wwCltBins[WWAE_TABLE_SIZE] = {}; /** * offset 22120 */ - scaled_channel wwTauCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauCltValues[WWAE_TABLE_SIZE] = {}; /** * offset 22128 */ - scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaCltValues[WWAE_TABLE_SIZE] = {}; /** * units: kPa * offset 22136 */ - int8_t wwMapBins[WWAE_TABLE_SIZE]; + int8_t wwMapBins[WWAE_TABLE_SIZE] = {}; /** * offset 22144 */ - scaled_channel wwTauMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwTauMapValues[WWAE_TABLE_SIZE] = {}; /** * offset 22152 */ - scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE]; + scaled_channel wwBetaMapValues[WWAE_TABLE_SIZE] = {}; /** * units: % * offset 22160 */ - scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: deg * offset 22176 */ - scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]; + scaled_channel hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE] = {}; /** * units: volts * offset 22192 */ - uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE]; + uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE] = {}; /** * units: ms * offset 22200 */ - scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE]; + scaled_channel hpfpDeadtimeMS[HPFP_DEADTIME_SIZE] = {}; /** * units: kPa * offset 22216 */ - uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]; + uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE] = {}; /** * units: load * offset 22416 */ - scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetLoadBins[HPFP_TARGET_SIZE] = {}; /** * units: RPM * offset 22436 */ - scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE]; + scaled_channel hpfpTargetRpmBins[HPFP_TARGET_SIZE] = {}; /** * units: % * offset 22446 */ - int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE]; + int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE] = {}; /** * units: cc/lobe * offset 22546 */ - scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22566 */ - scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE]; + scaled_channel hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE] = {}; /** * units: RPM * offset 22576 */ - uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]; + uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE] = {}; /** * Knock sensor output knock detection threshold depending on current RPM. * units: dB * offset 22608 */ - scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]; + scaled_channel knockBaseNoise[ENGINE_NOISE_CURVE_SIZE] = {}; /** * units: RPM * offset 22624 */ - scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: multiplier * offset 22628 */ - scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE]; + scaled_channel tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE] = {}; /** * units: C * offset 22632 */ - int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: RPM * offset 22636 */ - uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE] = {}; /** * units: volt * offset 22644 */ - scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]; + scaled_channel fuelLevelBins[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: % * offset 22660 */ - uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT]; + uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT] = {}; /** * units: volts * offset 22668 */ - scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE] = {}; /** * units: multiplier * offset 22676 */ - scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE]; + scaled_channel dwellVoltageCorrValues[DWELL_CURVE_SIZE] = {}; /** * units: % * offset 22684 */ - scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH]; + scaled_channel tcu_shiftTpsBins[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22692 */ - uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed12[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22700 */ - uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed23[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22708 */ - uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed34[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22716 */ - uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed21[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22724 */ - uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed32[TCU_TABLE_WIDTH] = {}; /** * units: MPH * offset 22732 */ - uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH]; + uint8_t tcu_shiftSpeed43[TCU_TABLE_WIDTH] = {}; /** * units: ms * offset 22740 @@ -6048,69 +6048,69 @@ struct persistent_config_s { * units: Volts * offset 22744 */ - scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE]; + scaled_channel alternatorVoltageTargetTable[ALTERNATOR_VOLTAGE_TARGET_SIZE][ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: Load * offset 22776 */ - uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetLoadBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: RPM * offset 22784 */ - uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE]; + uint16_t alternatorVoltageTargetRpmBins[ALTERNATOR_VOLTAGE_TARGET_SIZE] = {}; /** * units: C * offset 22792 */ - float cltBoostCorrBins[BOOST_CURVE_SIZE]; + float cltBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22812 */ - float cltBoostCorr[BOOST_CURVE_SIZE]; + float cltBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22832 */ - float iatBoostCorrBins[BOOST_CURVE_SIZE]; + float iatBoostCorrBins[BOOST_CURVE_SIZE] = {}; /** * units: ratio * offset 22852 */ - float iatBoostCorr[BOOST_CURVE_SIZE]; + float iatBoostCorr[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22872 */ - float cltBoostAdderBins[BOOST_CURVE_SIZE]; + float cltBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22892 */ - float cltBoostAdder[BOOST_CURVE_SIZE]; + float cltBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: C * offset 22912 */ - float iatBoostAdderBins[BOOST_CURVE_SIZE]; + float iatBoostAdderBins[BOOST_CURVE_SIZE] = {}; /** * offset 22932 */ - float iatBoostAdder[BOOST_CURVE_SIZE]; + float iatBoostAdder[BOOST_CURVE_SIZE] = {}; /** * units: RPM * offset 22952 */ - scaled_channel minimumOilPressureBins[8]; + scaled_channel minimumOilPressureBins[8] = {}; /** * units: kPa * offset 22960 */ - scaled_channel minimumOilPressureValues[8]; + scaled_channel minimumOilPressureValues[8] = {}; /** * offset 22968 */ - blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT]; + blend_table_s targetAfrBlends[TARGET_AFR_BLEND_COUNT] = {}; }; static_assert(sizeof(persistent_config_s) == 23344); diff --git a/firmware/live_data_generated/ac_control_generated.h b/firmware/live_data_generated/ac_control_generated.h index 00bc682722..2cf9330d27 100644 --- a/firmware/live_data_generated/ac_control_generated.h +++ b/firmware/live_data_generated/ac_control_generated.h @@ -15,7 +15,7 @@ struct ac_control_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * AC enabled offset 4 bit 0 */ diff --git a/firmware/live_data_generated/boost_control_generated.h b/firmware/live_data_generated/boost_control_generated.h index f02427e974..1946b25dcc 100644 --- a/firmware/live_data_generated/boost_control_generated.h +++ b/firmware/live_data_generated/boost_control_generated.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEFI tool config_definition_base.jar based on (unknown script) controllers/actuators/boost_control.txt Fri Jan 05 01:19:47 UTC 2024 +// this section was generated automatically by rusEFI tool config_definition_base-all.jar based on (unknown script) controllers/actuators/boost_control.txt // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -142,7 +142,7 @@ struct boost_control_s { * units: units * offset 21 */ - uint8_t alignmentFill_at_21[1]; + uint8_t alignmentFill_at_21[1] = {}; /** * @@GAUGE_NAME_BOOST_TARGET@@ * units: kPa @@ -153,4 +153,4 @@ struct boost_control_s { static_assert(sizeof(boost_control_s) == 24); // end -// this section was generated automatically by rusEFI tool config_definition_base.jar based on (unknown script) controllers/actuators/boost_control.txt Fri Jan 05 01:19:47 UTC 2024 +// this section was generated automatically by rusEFI tool config_definition_base-all.jar based on (unknown script) controllers/actuators/boost_control.txt diff --git a/firmware/live_data_generated/dc_motors_generated.h b/firmware/live_data_generated/dc_motors_generated.h index 7a6b001ee3..8d64d1059b 100644 --- a/firmware/live_data_generated/dc_motors_generated.h +++ b/firmware/live_data_generated/dc_motors_generated.h @@ -22,7 +22,7 @@ struct dc_motors_s { * units: units * offset 5 */ - uint8_t alignmentFill_at_5[3]; + uint8_t alignmentFill_at_5[3] = {}; /** offset 8 bit 0 */ bool isEnabled0 : 1 {}; diff --git a/firmware/live_data_generated/electronic_throttle_generated.h b/firmware/live_data_generated/electronic_throttle_generated.h index c5d26d24ad..1086dd7d4b 100644 --- a/firmware/live_data_generated/electronic_throttle_generated.h +++ b/firmware/live_data_generated/electronic_throttle_generated.h @@ -53,7 +53,7 @@ struct electronic_throttle_s { * units: units * offset 30 */ - uint8_t alignmentFill_at_30[2]; + uint8_t alignmentFill_at_30[2] = {}; /** offset 32 bit 0 */ bool etbRevLimitActive : 1 {}; @@ -181,7 +181,7 @@ struct electronic_throttle_s { * units: units * offset 43 */ - uint8_t alignmentFill_at_43[1]; + uint8_t alignmentFill_at_43[1] = {}; /** * ETB jam timer * units: sec diff --git a/firmware/live_data_generated/engine_state_generated.h b/firmware/live_data_generated/engine_state_generated.h index a5468752bd..5fb0d50956 100644 --- a/firmware/live_data_generated/engine_state_generated.h +++ b/firmware/live_data_generated/engine_state_generated.h @@ -128,7 +128,7 @@ struct speed_density_s { * units: units * offset 2 */ - uint8_t alignmentFill_at_2[2]; + uint8_t alignmentFill_at_2[2] = {}; /** * Air: Charge temperature estimate K * offset 4 @@ -165,7 +165,7 @@ struct cranking_fuel_s { * units: units * offset 14 */ - uint8_t alignmentFill_at_14[2]; + uint8_t alignmentFill_at_14[2] = {}; }; static_assert(sizeof(cranking_fuel_s) == 16); @@ -230,7 +230,7 @@ struct engine_state_s { * units: units * offset 49 */ - uint8_t alignmentFill_at_49[3]; + uint8_t alignmentFill_at_49[3] = {}; /** offset 52 bit 0 */ bool startStopPhysicalState : 1 {}; @@ -386,7 +386,7 @@ struct engine_state_s { * units: units * offset 93 */ - uint8_t alignmentFill_at_93[3]; + uint8_t alignmentFill_at_93[3] = {}; }; static_assert(sizeof(engine_state_s) == 96); diff --git a/firmware/live_data_generated/fan_control_generated.h b/firmware/live_data_generated/fan_control_generated.h index 654cc84bd5..9e9ba90004 100644 --- a/firmware/live_data_generated/fan_control_generated.h +++ b/firmware/live_data_generated/fan_control_generated.h @@ -110,7 +110,7 @@ struct fan_control_s { * units: units * offset 5 */ - uint8_t alignmentFill_at_5[3]; + uint8_t alignmentFill_at_5[3] = {}; }; static_assert(sizeof(fan_control_s) == 8); diff --git a/firmware/live_data_generated/ignition_state_generated.h b/firmware/live_data_generated/ignition_state_generated.h index 4e5a8c3354..151bf44e3c 100644 --- a/firmware/live_data_generated/ignition_state_generated.h +++ b/firmware/live_data_generated/ignition_state_generated.h @@ -73,7 +73,7 @@ struct ignition_state_s { * units: units * offset 26 */ - uint8_t alignmentFill_at_26[2]; + uint8_t alignmentFill_at_26[2] = {}; /** * Ign: Dwell voltage correction * offset 28 diff --git a/firmware/live_data_generated/knock_controller_generated.h b/firmware/live_data_generated/knock_controller_generated.h index a3a58f214c..d3cc108993 100644 --- a/firmware/live_data_generated/knock_controller_generated.h +++ b/firmware/live_data_generated/knock_controller_generated.h @@ -16,7 +16,7 @@ struct knock_controller_s { * units: dBv * offset 4 */ - int8_t m_knockCyl[12]; + int8_t m_knockCyl[12] = {}; /** * @@GAUGE_NAME_KNOCK_RETARD@@ * units: deg @@ -43,7 +43,7 @@ struct knock_controller_s { * units: compressed data * offset 32 */ - uint32_t m_knockSpectrum[16]; + uint32_t m_knockSpectrum[16] = {}; /** * Knock: ChannelAndCylNumber * units: compressed N + N diff --git a/firmware/live_data_generated/lambda_monitor_generated.h b/firmware/live_data_generated/lambda_monitor_generated.h index 3d5343434c..b0f3811ec4 100644 --- a/firmware/live_data_generated/lambda_monitor_generated.h +++ b/firmware/live_data_generated/lambda_monitor_generated.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEFI tool config_definition_base.jar based on (unknown script) controllers/math/lambda_monitor.txt Wed Jan 03 20:30:10 UTC 2024 +// this section was generated automatically by rusEFI tool config_definition_base-all.jar based on (unknown script) controllers/math/lambda_monitor.txt // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -111,9 +111,9 @@ struct lambda_monitor_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; }; static_assert(sizeof(lambda_monitor_s) == 8); // end -// this section was generated automatically by rusEFI tool config_definition_base.jar based on (unknown script) controllers/math/lambda_monitor.txt Wed Jan 03 20:30:10 UTC 2024 +// this section was generated automatically by rusEFI tool config_definition_base-all.jar based on (unknown script) controllers/math/lambda_monitor.txt diff --git a/firmware/live_data_generated/output_channels_generated.h b/firmware/live_data_generated/output_channels_generated.h index a3222f61ef..0ea472cfc7 100644 --- a/firmware/live_data_generated/output_channels_generated.h +++ b/firmware/live_data_generated/output_channels_generated.h @@ -386,7 +386,7 @@ struct output_channels_s { * units: units * offset 78 */ - uint8_t alignmentFill_at_78[2]; + uint8_t alignmentFill_at_78[2] = {}; /** * @@GAUGE_NAME_UPTIME@@ * units: sec @@ -502,7 +502,7 @@ struct output_channels_s { * units: units * offset 122 */ - uint8_t alignmentFill_at_122[2]; + uint8_t alignmentFill_at_122[2] = {}; /** * offset 124 */ @@ -534,7 +534,7 @@ struct output_channels_s { * units: error * offset 140 */ - uint16_t recentErrorCode[8]; + uint16_t recentErrorCode[8] = {}; /** * units: val * offset 156 @@ -600,7 +600,7 @@ struct output_channels_s { * units: deg C * offset 200 */ - scaled_channel egt[EGT_CHANNEL_COUNT]; + scaled_channel egt[EGT_CHANNEL_COUNT] = {}; /** * units: V * offset 216 @@ -640,7 +640,7 @@ struct output_channels_s { * units: units * offset 229 */ - uint8_t alignmentFill_at_229[3]; + uint8_t alignmentFill_at_229[3] = {}; /** * units: V * offset 232 @@ -713,7 +713,7 @@ struct output_channels_s { * units: % * offset 264 */ - scaled_channel fuelPidCorrection[STFT_BANK_COUNT]; + scaled_channel fuelPidCorrection[STFT_BANK_COUNT] = {}; /** * units: V * offset 268 @@ -745,7 +745,7 @@ struct output_channels_s { * units: deg * offset 278 */ - int8_t vvtTargets[4]; + int8_t vvtTargets[4] = {}; /** * @@GAUGE_NAME_TURBO_SPEED@@ * units: hz @@ -757,7 +757,7 @@ struct output_channels_s { * units: deg * offset 284 */ - scaled_channel ignitionAdvanceCyl[MAX_CYLINDER_COUNT]; + scaled_channel ignitionAdvanceCyl[MAX_CYLINDER_COUNT] = {}; /** * units: % * offset 308 @@ -817,7 +817,7 @@ struct output_channels_s { * units: units * offset 326 */ - uint8_t alignmentFill_at_326[2]; + uint8_t alignmentFill_at_326[2] = {}; /** * offset 328 */ @@ -893,7 +893,7 @@ struct output_channels_s { * units: units * offset 374 */ - uint8_t alignmentFill_at_374[2]; + uint8_t alignmentFill_at_374[2] = {}; /** * offset 376 */ @@ -966,7 +966,7 @@ struct output_channels_s { /** * offset 484 */ - pid_status_s vvtStatus[CAM_INPUTS_COUNT]; + pid_status_s vvtStatus[CAM_INPUTS_COUNT] = {}; /** * Aux speed 1 * units: s @@ -989,21 +989,21 @@ struct output_channels_s { * units: V * offset 554 */ - scaled_channel rawAnalogInput[LUA_ANALOG_INPUT_COUNT]; + scaled_channel rawAnalogInput[LUA_ANALOG_INPUT_COUNT] = {}; /** * GPPWM Output * units: % * offset 570 */ - scaled_channel gppwmOutput[4]; + scaled_channel gppwmOutput[4] = {}; /** * offset 574 */ - scaled_channel gppwmXAxis[4]; + scaled_channel gppwmXAxis[4] = {}; /** * offset 582 */ - scaled_channel gppwmYAxis[4]; + scaled_channel gppwmYAxis[4] = {}; /** * units: V * offset 590 @@ -1012,73 +1012,73 @@ struct output_channels_s { /** * offset 592 */ - scaled_channel ignBlendParameter[IGN_BLEND_COUNT]; + scaled_channel ignBlendParameter[IGN_BLEND_COUNT] = {}; /** * units: % * offset 600 */ - scaled_channel ignBlendBias[IGN_BLEND_COUNT]; + scaled_channel ignBlendBias[IGN_BLEND_COUNT] = {}; /** * units: deg * offset 604 */ - scaled_channel ignBlendOutput[IGN_BLEND_COUNT]; + scaled_channel ignBlendOutput[IGN_BLEND_COUNT] = {}; /** * offset 612 */ - scaled_channel veBlendParameter[VE_BLEND_COUNT]; + scaled_channel veBlendParameter[VE_BLEND_COUNT] = {}; /** * units: % * offset 620 */ - scaled_channel veBlendBias[VE_BLEND_COUNT]; + scaled_channel veBlendBias[VE_BLEND_COUNT] = {}; /** * units: % * offset 624 */ - scaled_channel veBlendOutput[VE_BLEND_COUNT]; + scaled_channel veBlendOutput[VE_BLEND_COUNT] = {}; /** * offset 632 */ - scaled_channel boostOpenLoopBlendParameter[BOOST_BLEND_COUNT]; + scaled_channel boostOpenLoopBlendParameter[BOOST_BLEND_COUNT] = {}; /** * units: % * offset 636 */ - scaled_channel boostOpenLoopBlendBias[BOOST_BLEND_COUNT]; + scaled_channel boostOpenLoopBlendBias[BOOST_BLEND_COUNT] = {}; /** * units: % * offset 638 */ - scaled_channel boostOpenLoopBlendOutput[BOOST_BLEND_COUNT]; + scaled_channel boostOpenLoopBlendOutput[BOOST_BLEND_COUNT] = {}; /** * offset 640 */ - scaled_channel boostClosedLoopBlendParameter[BOOST_BLEND_COUNT]; + scaled_channel boostClosedLoopBlendParameter[BOOST_BLEND_COUNT] = {}; /** * units: % * offset 644 */ - scaled_channel boostClosedLoopBlendBias[BOOST_BLEND_COUNT]; + scaled_channel boostClosedLoopBlendBias[BOOST_BLEND_COUNT] = {}; /** * units: % * offset 646 */ - scaled_channel boostClosedLoopBlendOutput[BOOST_BLEND_COUNT]; + scaled_channel boostClosedLoopBlendOutput[BOOST_BLEND_COUNT] = {}; /** * offset 650 */ - scaled_channel targetAfrBlendParameter[TARGET_AFR_BLEND_COUNT]; + scaled_channel targetAfrBlendParameter[TARGET_AFR_BLEND_COUNT] = {}; /** * units: % * offset 654 */ - scaled_channel targetAfrBlendBias[TARGET_AFR_BLEND_COUNT]; + scaled_channel targetAfrBlendBias[TARGET_AFR_BLEND_COUNT] = {}; /** * units: % * offset 656 */ - scaled_channel targetAfrBlendOutput[TARGET_AFR_BLEND_COUNT]; + scaled_channel targetAfrBlendOutput[TARGET_AFR_BLEND_COUNT] = {}; /** * offset 660 */ @@ -1092,7 +1092,7 @@ struct output_channels_s { * units: units * offset 662 */ - uint8_t alignmentFill_at_662[2]; + uint8_t alignmentFill_at_662[2] = {}; /** offset 664 bit 0 */ bool coilState3 : 1 {}; @@ -1202,7 +1202,7 @@ struct output_channels_s { * units: units * offset 670 */ - uint8_t alignmentFill_at_670[2]; + uint8_t alignmentFill_at_670[2] = {}; /** offset 672 bit 0 */ bool injectorState3 : 1 {}; @@ -1316,7 +1316,7 @@ struct output_channels_s { * units: value * offset 684 */ - float luaGauges[LUA_GAUGE_COUNT]; + float luaGauges[LUA_GAUGE_COUNT] = {}; /** * units: V * offset 716 @@ -1410,7 +1410,7 @@ struct output_channels_s { * units: units * offset 750 */ - uint8_t alignmentFill_at_750[2]; + uint8_t alignmentFill_at_750[2] = {}; /** * offset 752 */ @@ -1418,11 +1418,11 @@ struct output_channels_s { /** * offset 756 */ - uint8_t ignitorDiagnostic[MAX_CYLINDER_COUNT]; + uint8_t ignitorDiagnostic[MAX_CYLINDER_COUNT] = {}; /** * offset 768 */ - uint8_t injectorDiagnostic[MAX_CYLINDER_COUNT]; + uint8_t injectorDiagnostic[MAX_CYLINDER_COUNT] = {}; /** * @@GAUGE_NAME_FUEL_LAST_INJECTION_STAGE_2@@ * units: ms @@ -1468,7 +1468,7 @@ struct output_channels_s { * units: units * offset 791 */ - uint8_t alignmentFill_at_791[1]; + uint8_t alignmentFill_at_791[1] = {}; /** * @@GAUGE_NAME_AC_PRESSURE@@ * units: kPa @@ -1533,13 +1533,13 @@ struct output_channels_s { /** * offset 818 */ - uint8_t unusedAtTheEnd[52]; + uint8_t unusedAtTheEnd[52] = {}; /** * need 4 byte alignment * units: units * offset 870 */ - uint8_t alignmentFill_at_870[2]; + uint8_t alignmentFill_at_870[2] = {}; }; static_assert(sizeof(output_channels_s) == 872); diff --git a/firmware/live_data_generated/tcu_controller_generated.h b/firmware/live_data_generated/tcu_controller_generated.h index 356a72aed2..6031188ca6 100644 --- a/firmware/live_data_generated/tcu_controller_generated.h +++ b/firmware/live_data_generated/tcu_controller_generated.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEFI tool config_definition_base-all.jar based on (unknown script) controllers/tcu/tcu_controller.txt Sat Apr 20 03:42:50 UTC 2024 +// this section was generated automatically by rusEFI tool config_definition_base-all.jar based on (unknown script) controllers/tcu/tcu_controller.txt // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -16,7 +16,7 @@ struct tcu_controller_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[1]; + uint8_t alignmentFill_at_1[1] = {}; /** * @@GAUGE_NAME_TC_RATIO@@ * units: value @@ -49,7 +49,7 @@ struct tcu_controller_s { * units: units * offset 11 */ - uint8_t alignmentFill_at_11[1]; + uint8_t alignmentFill_at_11[1] = {}; /** offset 12 bit 0 */ bool isShifting : 1 {}; @@ -150,4 +150,4 @@ struct tcu_controller_s { static_assert(sizeof(tcu_controller_s) == 16); // end -// this section was generated automatically by rusEFI tool config_definition_base-all.jar based on (unknown script) controllers/tcu/tcu_controller.txt Sat Apr 20 03:42:50 UTC 2024 +// this section was generated automatically by rusEFI tool config_definition_base-all.jar based on (unknown script) controllers/tcu/tcu_controller.txt diff --git a/firmware/live_data_generated/throttle_model_generated.h b/firmware/live_data_generated/throttle_model_generated.h index da8794f729..e57a4c0199 100644 --- a/firmware/live_data_generated/throttle_model_generated.h +++ b/firmware/live_data_generated/throttle_model_generated.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEFI tool config_definition_base.jar based on (unknown script) controllers/math/throttle_model.txt Wed Jan 03 20:30:10 UTC 2024 +// this section was generated automatically by rusEFI tool config_definition_base-all.jar based on (unknown script) controllers/math/throttle_model.txt // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -113,7 +113,7 @@ struct throttle_model_s { * units: units * offset 6 */ - uint8_t alignmentFill_at_6[2]; + uint8_t alignmentFill_at_6[2] = {}; /** * Air: Throttle flow estimate * units: g/s @@ -124,4 +124,4 @@ struct throttle_model_s { static_assert(sizeof(throttle_model_s) == 12); // end -// this section was generated automatically by rusEFI tool config_definition_base.jar based on (unknown script) controllers/math/throttle_model.txt Wed Jan 03 20:30:10 UTC 2024 +// this section was generated automatically by rusEFI tool config_definition_base-all.jar based on (unknown script) controllers/math/throttle_model.txt diff --git a/firmware/live_data_generated/trigger_central_generated.h b/firmware/live_data_generated/trigger_central_generated.h index 2c72164032..17e5dff107 100644 --- a/firmware/live_data_generated/trigger_central_generated.h +++ b/firmware/live_data_generated/trigger_central_generated.h @@ -10,7 +10,7 @@ struct trigger_central_s { * Hardware events since boot * offset 0 */ - uint16_t hwEventCounters[HW_EVENT_TYPES]; + uint16_t hwEventCounters[HW_EVENT_TYPES] = {}; /** * Sync: total cams front counter * offset 8 @@ -21,7 +21,7 @@ struct trigger_central_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; /** * InstantMAP at readout angle * units: kPa @@ -50,7 +50,7 @@ struct trigger_central_s { * units: units * offset 22 */ - uint8_t alignmentFill_at_22[2]; + uint8_t alignmentFill_at_22[2] = {}; /** * Sync: Engine Phase * units: deg @@ -72,7 +72,7 @@ struct trigger_central_s { * units: units * offset 33 */ - uint8_t alignmentFill_at_33[3]; + uint8_t alignmentFill_at_33[3] = {}; /** * Sync: MAP: prev angle * units: deg diff --git a/firmware/live_data_generated/trigger_state_generated.h b/firmware/live_data_generated/trigger_state_generated.h index a6e6f9f5e7..8dfa54f658 100644 --- a/firmware/live_data_generated/trigger_state_generated.h +++ b/firmware/live_data_generated/trigger_state_generated.h @@ -24,7 +24,7 @@ struct trigger_state_s { * "sync: Cam Position" * offset 12 */ - float vvtToothPosition[4]; + float vvtToothPosition[4] = {}; /** * @@GAUGE_NAME_TRG_GAP@@ * offset 28 @@ -39,7 +39,7 @@ struct trigger_state_s { * units: units * offset 33 */ - uint8_t alignmentFill_at_33[3]; + uint8_t alignmentFill_at_33[3] = {}; }; static_assert(sizeof(trigger_state_s) == 36); diff --git a/firmware/live_data_generated/trigger_state_primary_generated.h b/firmware/live_data_generated/trigger_state_primary_generated.h index d64ddb81bc..2a4bc3893f 100644 --- a/firmware/live_data_generated/trigger_state_primary_generated.h +++ b/firmware/live_data_generated/trigger_state_primary_generated.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEFI tool config_definition_base.jar based on (unknown script) controllers/trigger/trigger_state_primary.txt Wed Jan 03 20:30:10 UTC 2024 +// this section was generated automatically by rusEFI tool config_definition_base-all.jar based on (unknown script) controllers/trigger/trigger_state_primary.txt // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -15,7 +15,7 @@ struct trigger_state_primary_s { * units: units * offset 1 */ - uint8_t alignmentFill_at_1[3]; + uint8_t alignmentFill_at_1[3] = {}; /** * sync: Known Engine Phase offset 4 bit 0 */ @@ -117,4 +117,4 @@ struct trigger_state_primary_s { static_assert(sizeof(trigger_state_primary_s) == 8); // end -// this section was generated automatically by rusEFI tool config_definition_base.jar based on (unknown script) controllers/trigger/trigger_state_primary.txt Wed Jan 03 20:30:10 UTC 2024 +// this section was generated automatically by rusEFI tool config_definition_base-all.jar based on (unknown script) controllers/trigger/trigger_state_primary.txt diff --git a/firmware/live_data_generated/vvt_generated.h b/firmware/live_data_generated/vvt_generated.h index a0797370b8..d3de8d69fb 100644 --- a/firmware/live_data_generated/vvt_generated.h +++ b/firmware/live_data_generated/vvt_generated.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEFI tool config_definition_base.jar based on (unknown script) controllers/actuators/vvt.txt Wed Jan 03 20:30:10 UTC 2024 +// this section was generated automatically by rusEFI tool config_definition_base-all.jar based on (unknown script) controllers/actuators/vvt.txt // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -20,9 +20,9 @@ struct vvt_s { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; }; static_assert(sizeof(vvt_s) == 4); // end -// this section was generated automatically by rusEFI tool config_definition_base.jar based on (unknown script) controllers/actuators/vvt.txt Wed Jan 03 20:30:10 UTC 2024 +// this section was generated automatically by rusEFI tool config_definition_base-all.jar based on (unknown script) controllers/actuators/vvt.txt diff --git a/firmware/live_data_generated/wideband_state_generated.h b/firmware/live_data_generated/wideband_state_generated.h index 8a3c31a084..5d5505996d 100644 --- a/firmware/live_data_generated/wideband_state_generated.h +++ b/firmware/live_data_generated/wideband_state_generated.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEFI tool config_definition_base.jar based on (unknown script) controllers/sensors//wideband_state.txt Wed Jan 03 20:30:10 UTC 2024 +// this section was generated automatically by rusEFI tool config_definition_base-all.jar based on (unknown script) controllers/sensors//wideband_state.txt // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -27,7 +27,7 @@ struct wideband_state_s { * units: units * offset 3 */ - uint8_t alignmentFill_at_3[1]; + uint8_t alignmentFill_at_3[1] = {}; /** * WBO: Temperature * units: C @@ -51,9 +51,9 @@ struct wideband_state_s { * units: units * offset 10 */ - uint8_t alignmentFill_at_10[2]; + uint8_t alignmentFill_at_10[2] = {}; }; static_assert(sizeof(wideband_state_s) == 12); // end -// this section was generated automatically by rusEFI tool config_definition_base.jar based on (unknown script) controllers/sensors//wideband_state.txt Wed Jan 03 20:30:10 UTC 2024 +// this section was generated automatically by rusEFI tool config_definition_base-all.jar based on (unknown script) controllers/sensors//wideband_state.txt