rusefi/firmware/console/binary/tunerstudio_outputs.h

301 lines
10 KiB
C
Raw Normal View History

2015-07-10 06:01:56 -07:00
/*
2020-05-25 10:02:05 -07:00
* @file tunerstudio_outputs.h
2015-07-10 06:01:56 -07:00
* @brief Tuner Studio connectivity configuration
*
* In this file the configuration of TunerStudio is defined
*
* @date Oct 22, 2013
2020-01-13 18:57:43 -08:00
* @author Andrey Belomutskiy, (c) 2012-2020
2015-07-10 06:01:56 -07:00
*/
#pragma once
2015-07-10 06:01:56 -07:00
#include "rusefi_types.h"
#include "scaled_channel.h"
#include "tunerstudio_debug_struct.h"
enum class TsCalMode : uint8_t {
None = 0,
Tps1Max = 1,
Tps1Min = 2,
EtbKp = 3,
EtbKi = 4,
EtbKd = 5,
Tps1SecondaryMax = 6,
Tps1SecondaryMin = 7,
Tps2Max = 8,
Tps2Min = 9,
Tps2SecondaryMax = 10,
Tps2SecondaryMin = 11,
};
2015-07-10 06:01:56 -07:00
/**
2019-12-19 19:40:27 -08:00
* At the moment rusEfi does NOT have any code generation around TS output channels, three locations have to be changed manually
* 1) this TunerStudioOutputChannels firmware version of the structure
* 2) '[OutputChannels]' block in rusefi.input
* 3) com.rusefi.core.Sensor enum in rusEfi console source code
*
2015-07-10 06:01:56 -07:00
* please be aware that 'float' (F32) type requires TunerStudio version 2.6 and later
*/
struct TunerStudioOutputChannels {
2018-01-06 07:53:15 -08:00
/* see also [OutputChannels] in rusefi.input */
2015-07-10 06:01:56 -07:00
/**
* Yes, I do not really enjoy packing bits into integers but we simply have too many boolean flags and I cannot
* water 4 bytes per traffic - I want gauges to work as fast as possible
*/
unsigned int sd_present : 1; // bit 0, 72
unsigned int isIgnitionEnabledIndicator : 1; // bit 1
unsigned int isInjectionEnabledIndicator : 1; // bit 2
unsigned int unusedb3 : 1; // bit 3
2016-01-20 14:01:53 -08:00
unsigned int isCylinderCleanupActivated : 1; // bit 4
2015-07-10 06:01:56 -07:00
unsigned int isFuelPumpOn : 1; // bit 5
unsigned int isFanOn : 1; // bit 6
unsigned int isO2HeaterOn : 1; // bit 7
unsigned int checkEngine : 1; // bit 8
unsigned int needBurn : 1; // bit 9
unsigned int unusedBit10 : 1; // bit 10
2015-07-10 06:01:56 -07:00
unsigned int clutchUpState : 1; // bit 11
unsigned int clutchDownState : 1; // bit 12
unsigned int unusedb13 : 1; // bit 13
unsigned int unusedb14 : 1; // bit 14
2017-05-15 01:53:04 -07:00
unsigned int brakePedalState : 1; // bit 15. 0 - not pressed, 1 = pressed
2017-07-26 19:52:13 -07:00
unsigned int toothLogReady : 1; // bit 16
unsigned int acSwitchState : 1; // bit 17. 0 - not pressed, 1 = pressed
unsigned int isTpsError : 1; // bit 18
unsigned int isCltError : 1; // bit 19
unsigned int isMapError : 1; // bit 20
unsigned int isIatError : 1; // bit 21
unsigned int acState : 1; // bit 22 - 1 if AC is engaged, 0 otherwise
unsigned int isTriggerError : 1; // bit 23
2020-03-28 18:28:32 -07:00
unsigned int hasCriticalError : 1; // bit 24
unsigned int isWarnNow : 1; // bit 25
unsigned int isPedalError : 1; // bit 26
unsigned int isKnockChipOk : 1; // bit 27
2020-03-24 16:55:12 -07:00
unsigned int launchTriggered : 1; // bit 28
unsigned int isTps2Error : 1; // bit 29
unsigned int isIdleClosedLoop : 1; // bit 30
unsigned int isIdleCoasting : 1; // bit 31
// RPM, vss
scaled_channel<uint16_t> rpm; // 4
int16_t rpmAcceleration; // 6
scaled_percent speedToRpmRatio; // 8
scaled_channel<uint8_t> vehicleSpeedKph; // 10
// temperatures
scaled_channel<int8_t> internalMcuTemperature; // offset 11
scaled_temperature coolantTemperature; // offset 12
scaled_temperature intakeAirTemperature; // offset 14
scaled_temperature auxTemp1; // offset 16
scaled_temperature auxTemp2; // offset 18
// throttle, pedal
scaled_percent throttlePosition; // 20
scaled_percent pedalPosition; // 22
uint16_t tpsADC; // 24
// air flow/mass measurment
scaled_voltage massAirFlowVoltage; // 26
scaled_channel<uint16_t, PACK_MULT_MASS_FLOW> massAirFlow; // 28
scaled_pressure manifoldAirPressure; // 30
scaled_pressure baroPressure; // 32
scaled_lambda lambda; // 34
scaled_channel<uint8_t, 10> knockRetard; // 36
uint8_t unused37;
// misc sensors
scaled_voltage vBatt; // 38
scaled_pressure oilPressure; // 40
scaled_angle vvtPositionB1I; // 42
// Fuel math
scaled_channel<uint16_t, 1000> chargeAirMass; // 44 cylinder airmass in mg, 0-65 grams
scaled_fuel_mass_mg crankingFuelMass; // 46
scaled_afr currentTargetAfr; // 48
// This is the raw value we take from the fuel map or base fuel algorithm, before the corrections
scaled_fuel_mass_mg fuelBase; // 50
// Total fuel with CLT, IAT and TPS acceleration without injector lag corrections per cycle, as pulse per cycle
scaled_fuel_mass_mg fuelRunning; // 52
// Actual last injection time - including all compensation and injection mode
scaled_ms actualLastInjection; // 54
scaled_channel<uint8_t, 2> injectorDutyCycle; // 56
scaled_channel<uint8_t, 2> veValue; // 57
scaled_angle injectionOffset; // 58
scaled_temperature tCharge; // 60
// Corrections
scaled_ms injectorLagMs; // 62
scaled_percent iatCorrection; // 64
scaled_percent cltCorrection; // 66
scaled_percent baroCorrection; // 68
uint16_t currentEnginePhase; // 70
// Wall model AE
scaled_ms wallFuelAmount; // 72
scaled_channel<int16_t, 1000> wallFuelCorrection; // 74
// TPS/load AE
scaled_percent unused76; // 76
scaled_percent deltaTps; // 78
scaled_percent unused80; // 80
scaled_ms tpsAccelFuel; // 82
// Ignition
scaled_angle ignitionAdvance; // 84
scaled_ms sparkDwell; // 86
scaled_percent coilDutyCycle; // 88
// Idle & ETB
scaled_percent idlePosition; // 90
scaled_percent etbTarget; // 92
scaled_percent etb1DutyCycle; // 94
scaled_percent etb1Error; // 96
// Fuel system
scaled_percent fuelTankLevel; // 98
scaled_channel<uint16_t> totalFuelConsumption; // 100
scaled_channel<uint16_t, PACK_MULT_FUEL_FLOW> fuelFlowRate; // 102
// Y axis values for selectable tables
scaled_channel<uint16_t, 100> veTableYAxis; // 104
scaled_channel<uint16_t, 100> afrTableYAxis; // 106
// Knock
scaled_channel<float> knockLevel; // 108
// Mode, firmware, protocol, run time
scaled_channel<uint32_t> timeSeconds; // 112
scaled_channel<uint32_t> engineMode; // 116
scaled_channel<uint32_t> firmwareVersion; // 120
// todo: this not needed in light of TS_SIGNATURE but rusEFI console still uses it. Need to migrate
// rusEFI console from TS_FILE_VERSION to TS_SIGNATURE :(
uint32_t tsConfigVersion; // 124
// These two fields indicate to TS that we'd like to set a particular field to a particular value
// We use a maintainConstantValue in TS for each field we'd like to set, like this:
// maintainConstantValue = tpsMax, { (calibrationMode == 1 ) ? calibrationValue : tpsMax }
// maintainConstantValue = tpsMin, { (calibrationMode == 2 ) ? calibrationValue : tpsMin }
// When the mode is set to a particular value, TS will copy the calibrationValue in to the specified field.
//
// With this simple construct, the ECU can send any number of internally computed configuration fields
// back to TunerStudio, getting around the problem of setting values on the controller without TS's knowledge.
// The ECU simply has to sequentially set a mode/value, wait briefly, then repeat until all the values
// it wants to send have been sent.
float calibrationValue; // 128
TsCalMode calibrationMode; // 132
2020-05-09 15:31:41 -07:00
uint8_t padding[1]; // 133
// Values used for load axes for fuel/ign tables
// These may or may not be the same value, depending on mode
scaled_channel<uint16_t, 100> fuelingLoad; // 134
scaled_channel<uint16_t, 100> ignitionLoad; // 136
2020-05-09 17:04:58 -07:00
// we want a hash of engineMake+engineCode+vehicleName in the log file in order to match TS logs to rusEFI Online tune
scaled_channel<uint16_t> engineMakeCodeNameCrc16; // 138
// Errors
2020-10-08 14:50:43 -07:00
scaled_channel<uint32_t> totalTriggerErrorCounter; // 140
int orderingErrorCounter; // 144
scaled_channel<uint16_t> warningCounter; // 148
scaled_channel<uint16_t> lastErrorCode; // 150
int16_t recentErrorCodes[8]; // 152-166
// Debug
scaled_channel<float> debugFloatField1; // 168
scaled_channel<float> debugFloatField2;
scaled_channel<float> debugFloatField3;
scaled_channel<float> debugFloatField4;
scaled_channel<float> debugFloatField5;
scaled_channel<float> debugFloatField6;
scaled_channel<float> debugFloatField7;
scaled_channel<uint32_t> debugIntField1;
scaled_channel<uint32_t> debugIntField2;
scaled_channel<uint32_t> debugIntField3;
scaled_channel<uint16_t> debugIntField4;
scaled_channel<uint16_t> debugIntField5; // 210
// accelerometer
scaled_percent accelerationX; // 212
scaled_percent accelerationY; // 214
// EGT
uint16_t egtValues[EGT_CHANNEL_COUNT] ; // 216
scaled_percent throttle2Position; // 232
2020-02-27 00:21:42 -08:00
scaled_voltage rawTps1Primary; // 234
scaled_voltage rawPpsPrimary; // 236
scaled_voltage rawClt; // 238
scaled_voltage rawIat; // 240
scaled_voltage rawOilPressure; // 242
scaled_channel<uint16_t> tuneCrc16; // 244
// Offset 246: bits
uint8_t sd_logging_internal : 1; // bit 0
uint8_t sd_msd : 1; // bit 1
uint8_t isFan2On : 1; // bit 2
scaled_channel<uint8_t> tcuCurrentGear; // 247
2020-08-05 22:15:41 -07:00
2020-08-21 05:53:23 -07:00
scaled_voltage rawPpsSecondary; // 248
scaled_channel<int8_t> knockLevels[12]; // 250
scaled_channel<uint8_t> tcuDesiredGear; // 262
scaled_channel<uint8_t, 2> flexPercent; // 263
scaled_voltage rawIdlePositionSensor; // 264
scaled_voltage rawWastegatePositionSensor; // 266
scaled_percent wastegatePosition; // 268
scaled_percent idlePositionSensor; // 270
scaled_voltage rawLowFuelPressure; // 272
scaled_voltage rawHighFuelPressure; // 274
2020-10-22 20:17:29 -07:00
scaled_pressure lowFuelPressure; // 276
scaled_high_pressure highFuelPressure; // 278
2020-10-30 14:42:00 -07:00
scaled_lambda targetLambda; // 280
scaled_afr airFuelRatio; // 282
2020-10-30 14:42:00 -07:00
scaled_ms VssAcceleration; //284
scaled_lambda lambda2; // 286
scaled_afr airFuelRatio2; // 288
scaled_angle vvtPositionB1E; // 290
scaled_angle vvtPositionB2I; // 292
scaled_angle vvtPositionB2E; // 294
scaled_percent fuelTrim[2]; // 296 & 298
scaled_voltage rawTps1Secondary; // 300
scaled_voltage rawTps2Primary; // 302
scaled_voltage rawTps2Secondary; // 304
scaled_channel<uint16_t> knockCount;// 306
scaled_percent accelerationZ; // 308
scaled_percent accelerationRoll; // 310
scaled_percent accelerationYaw; // 312
scaled_channel<int8_t> vvtTargets[4]; // 314
2021-11-04 16:43:22 -07:00
scaled_channel<uint16_t> turboSpeed; // 318
2021-11-04 16:43:22 -07:00
uint8_t unusedAtTheEnd[18]; // we have some unused bytes to allow compatible TS changes
// Temporary - will remove soon
TsDebugChannels* getDebugChannels() {
return reinterpret_cast<TsDebugChannels*>(&debugFloatField1);
}
2018-01-06 07:53:15 -08:00
/* see also [OutputChannels] in rusefi.input */
2020-07-31 17:08:26 -07:00
/* see also TS_OUTPUT_SIZE in rusefi_config.txt */
};
2015-07-10 06:01:56 -07:00
2019-10-08 18:02:51 -07:00
extern TunerStudioOutputChannels tsOutputChannels;