SD card log fields list should be auto-generated #3985

This commit is contained in:
rusefillc 2022-10-10 21:23:27 -04:00
parent 63ff2579cb
commit e00d4a819a
5 changed files with 76 additions and 48 deletions

View File

@ -40,36 +40,36 @@ bit isIdleClosedLoop;
uint16_t autoscale RPMValue;@@GAUGE_NAME_RPM@@;"RPM",1, 0, 0, 8000, 0
uint16_t rpmAcceleration;dRPM;"RPM/s",1, 0, 0, 5, 0
uint16_t rpmAcceleration;dRPM;"RPM/s",1, 0, 0, 5, 2
uint16_t autoscale speedToRpmRatio;@@GAUGE_NAME_GEAR_RATIO@@;"value",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0
uint8_t autoscale vehicleSpeedKph;@@GAUGE_NAME_VVS@@;"kph",1, 0, 0, 0, 0
uint16_t autoscale speedToRpmRatio;@@GAUGE_NAME_GEAR_RATIO@@;"value",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 2
uint8_t autoscale vehicleSpeedKph;@@GAUGE_NAME_VVS@@;"kph",1, 0, 0, 0, 1
int8_t autoscale internalMcuTemperature;@@GAUGE_NAME_CPU_TEMP@@;"deg C",1, 0, 0, 0, 0
int16_t autoscale coolant;@@GAUGE_NAME_CLT@@;"deg C",{1/@@PACK_MULT_TEMPERATURE@@}, 0, 0, 0, 0
int16_t autoscale intake;@@GAUGE_NAME_IAT@@;"deg C",{1/@@PACK_MULT_TEMPERATURE@@}, 0, 0, 0, 0
int16_t autoscale coolant;@@GAUGE_NAME_CLT@@;"deg C",{1/@@PACK_MULT_TEMPERATURE@@}, 0, 0, 0, 1
int16_t autoscale intake;@@GAUGE_NAME_IAT@@;"deg C",{1/@@PACK_MULT_TEMPERATURE@@}, 0, 0, 0, 1
int16_t autoscale auxTemp1;;"deg C",{1/@@PACK_MULT_TEMPERATURE@@}, 0, 0, 0, 0
int16_t autoscale auxTemp2;;"deg C",{1/@@PACK_MULT_TEMPERATURE@@}, 0, 0, 0, 0
int16_t autoscale auxTemp1;;"deg C",{1/@@PACK_MULT_TEMPERATURE@@}, 0, 0, 0, 1
int16_t autoscale auxTemp2;;"deg C",{1/@@PACK_MULT_TEMPERATURE@@}, 0, 0, 0, 1
int16_t autoscale TPSValue;@@GAUGE_NAME_TPS@@;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0
int16_t autoscale throttlePedalPosition;@@GAUGE_NAME_THROTTLE_PEDAL@@;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0
int16_t autoscale TPSValue;@@GAUGE_NAME_TPS@@;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 2
int16_t autoscale throttlePedalPosition;@@GAUGE_NAME_THROTTLE_PEDAL@@;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 2
uint16_t tpsADC;;"ADC", 1, 0, 0, 0, 0
uint16_t autoscale rawMaf;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 5, 3
uint16_t autoscale mafMeasured;@@GAUGE_NAME_AIR_FLOW_MEASURED@@;"kg/h",{1/@@PACK_MULT_MASS_FLOW@@}, 0, 0, 0, 0
uint16_t autoscale MAPValue;@@GAUGE_NAME_MAP@@;"kPa",{1/@@PACK_MULT_PRESSURE@@}, 0, 0, 0, 0
uint16_t autoscale baroPressure;;"kPa",{1/@@PACK_MULT_PRESSURE@@}, 0, 0, 0, 0
uint16_t autoscale mafMeasured;@@GAUGE_NAME_AIR_FLOW_MEASURED@@;"kg/h",{1/@@PACK_MULT_MASS_FLOW@@}, 0, 0, 0, 1
uint16_t autoscale MAPValue;@@GAUGE_NAME_MAP@@;"kPa",{1/@@PACK_MULT_PRESSURE@@}, 0, 0, 0, 1
uint16_t autoscale baroPressure;;"kPa",{1/@@PACK_MULT_PRESSURE@@}, 0, 0, 0, 1
uint16_t autoscale lambdaValue;@@GAUGE_NAME_LAMBDA@@;"",{1/@@PACK_MULT_LAMBDA@@}, 0, 0, 0, 0
uint16_t autoscale lambdaValue;@@GAUGE_NAME_LAMBDA@@;"",{1/@@PACK_MULT_LAMBDA@@}, 0, 0, 0, 3
uint8_t autoscale knockRetard;@@GAUGE_NAME_KNOCK_RETARD@@;"deg",{1/10}, 0, 0, 0, 0
uint8_t autoscale idleCurrentPosition;;"%", 0.5, 0, 0, 100, 1
uint16_t autoscale VBatt;@@GAUGE_NAME_VBAT@@;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 0, 0
uint16_t autoscale VBatt;@@GAUGE_NAME_VBAT@@;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 0, 2
uint16_t autoscale oilPressure;@@GAUGE_NAME_OIL_PRESSURE@@;"kPa",{1/@@PACK_MULT_PRESSURE@@}, 0, 0, 0, 0
int16_t autoscale vvtPositionB1I;@@GAUGE_NAME_VVT_B1I@@;"deg",{1/@@PACK_MULT_ANGLE@@}, 0, 0, 0, 0
int16_t autoscale vvtPositionB1I;@@GAUGE_NAME_VVT_B1I@@;"deg",{1/@@PACK_MULT_ANGLE@@}, 0, 0, 0, 1
uint16_t autoscale chargeAirMass;@@GAUGE_NAME_AIR_MASS@@;"g",{1/1000}, 0, 0, 0, 0
uint16_t autoscale crankingFuelMs;crankingFuelMs\nairmass in mg, 0-65 grams;"ms",{1/@@PACK_MULT_FUEL_MASS@@}, 0, 0, 0, 0
@ -162,13 +162,13 @@ uint16_t rpmAcceleration;dRPM;"RPM/s",1, 0, 0, 5, 0
uint16_t[8 iterate] recentErrorCode;;"error", 1, 0, 0, 0, 0
! todo: re-implement enableLogDebugChannels
float autoscale debugFloatField1;;"val", 1, 0, 0, 0, 0
float autoscale debugFloatField2;;"val", 1, 0, 0, 0, 0
float autoscale debugFloatField3;;"val", 1, 0, 0, 0, 0
float autoscale debugFloatField4;;"val", 1, 0, 0, 0, 0
float autoscale debugFloatField5;;"val", 1, 0, 0, 0, 0
float autoscale debugFloatField6;;"val", 1, 0, 0, 0, 0
float autoscale debugFloatField7;;"val", 1, 0, 0, 0, 0
float autoscale debugFloatField1;;"val", 1, 0, 0, 0, 3
float autoscale debugFloatField2;;"val", 1, 0, 0, 0, 3
float autoscale debugFloatField3;;"val", 1, 0, 0, 0, 3
float autoscale debugFloatField4;;"val", 1, 0, 0, 0, 3
float autoscale debugFloatField5;;"val", 1, 0, 0, 0, 3
float autoscale debugFloatField6;;"val", 1, 0, 0, 0, 3
float autoscale debugFloatField7;;"val", 1, 0, 0, 0, 3
uint32_t autoscale debugIntField1;;"val", 1, 0, 0, 0, 0
uint32_t autoscale debugIntField2;;"val", 1, 0, 0, 0, 0
@ -177,8 +177,8 @@ uint16_t rpmAcceleration;dRPM;"RPM/s",1, 0, 0, 5, 0
int16_t autoscale debugIntField5;;"val", 1, 0, 0, 0, 0
! todo: reimplement { LIS302DLCsPin != 0 || imuType != 0 }
int16_t autoscale accelerationX;@@GAUGE_NAME_ACCEL_X@@;"G",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0
int16_t autoscale accelerationY;@@GAUGE_NAME_ACCEL_Y@@;"G",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0
int16_t autoscale accelerationX;@@GAUGE_NAME_ACCEL_X@@;"G",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 2
int16_t autoscale accelerationY;@@GAUGE_NAME_ACCEL_Y@@;"G",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 2
! todo: { max31855_cs1 != 0}
uint16_t[EGT_CHANNEL_COUNT iterate] egt;;"deg C", 1, 0, 0, 0, 0
@ -212,15 +212,15 @@ uint16_t rpmAcceleration;dRPM;"RPM/s",1, 0, 0, 5, 0
int16_t autoscale highFuelPressure;@@GAUGE_NAME_FUEL_PRESSURE_HIGH@@;"bar",{1/@@PACK_MULT_HIGH_PRESSURE@@}, 0, 0, 0, 0
uint16_t autoscale targetLambda;@@GAUGE_NAME_TARGET_LAMBDA@@;"",{1/@@PACK_MULT_LAMBDA@@}, 0, 0, 0, 0
uint16_t autoscale AFRValue;@@GAUGE_NAME_AFR@@;"AFR",{1/@@PACK_MULT_AFR@@}, 0, 0, 0, 0
uint16_t autoscale AFRValue;@@GAUGE_NAME_AFR@@;"AFR",{1/@@PACK_MULT_AFR@@}, 0, 0, 0, 2
uint16_t autoscale VssAcceleration;Vss Accel;"m/s2",{1/@@PACK_MULT_MS@@}, 0, 0, 0, 0
uint16_t autoscale lambdaValue2;@@GAUGE_NAME_LAMBDA2@@;"",{1/@@PACK_MULT_LAMBDA@@}, 0, 0, 0, 0
uint16_t autoscale lambdaValue2;@@GAUGE_NAME_LAMBDA2@@;"",{1/@@PACK_MULT_LAMBDA@@}, 0, 0, 0, 3
uint16_t autoscale AFRValue2;@@GAUGE_NAME_AFR2@@;"AFR",{1/@@PACK_MULT_AFR@@}, 0, 0, 0, 0
int16_t autoscale vvtPositionB1E;@@GAUGE_NAME_VVT_B1E@@;"deg",{1/@@PACK_MULT_ANGLE@@}, 0, 0, 0, 0
int16_t autoscale vvtPositionB2I;@@GAUGE_NAME_VVT_B2I@@;"deg",{1/@@PACK_MULT_ANGLE@@}, 0, 0, 0, 0
int16_t autoscale vvtPositionB2E;@@GAUGE_NAME_VVT_B2E@@;"deg",{1/@@PACK_MULT_ANGLE@@}, 0, 0, 0, 0
uint16_t autoscale AFRValue2;@@GAUGE_NAME_AFR2@@;"AFR",{1/@@PACK_MULT_AFR@@}, 0, 0, 0, 2
int16_t autoscale vvtPositionB1E;@@GAUGE_NAME_VVT_B1E@@;"deg",{1/@@PACK_MULT_ANGLE@@}, 0, 0, 0, 1
int16_t autoscale vvtPositionB2I;@@GAUGE_NAME_VVT_B2I@@;"deg",{1/@@PACK_MULT_ANGLE@@}, 0, 0, 0, 1
int16_t autoscale vvtPositionB2E;@@GAUGE_NAME_VVT_B2E@@;"deg",{1/@@PACK_MULT_ANGLE@@}, 0, 0, 0, 1
int16_t[2 iterate] autoscale fuelPidCorrection;;"%",{1/@@PACK_MULT_PERCENT@@}, 0, -20, 20, 2

View File

@ -2,19 +2,30 @@
// todo https://github.com/rusefi/rusefi/issues/3985
static constexpr LogField fields[] = {
{engine->outputChannels.RPMValue, GAUGE_NAME_RPM, "rpm", 0},
{packedTime, GAUGE_NAME_TIME, "sec", 0},
{engine->outputChannels.RPMValue, "RPM", "RPM", 0},
{engine->outputChannels.rpmAcceleration, "dRPM", "RPM/s", 2},
{engine->outputChannels.speedToRpmRatio, "Gearbox Ratio", "value", 2},
{engine->outputChannels.vehicleSpeedKph, "Vehicle Speed", "kph", 1},
{engine->outputChannels.totalTriggerErrorCounter, GAUGE_NAME_TRG_ERR, "err", 0},
{engine->outputChannels.vehicleSpeedKph, GAUGE_NAME_VVS, "kph", 0},
{engine->outputChannels.internalMcuTemperature, GAUGE_NAME_CPU_TEMP, "C", 0},
{engine->outputChannels.coolant, GAUGE_NAME_CLT, "C", 1},
{engine->outputChannels.intake, GAUGE_NAME_IAT, "C", 1},
{engine->outputChannels.auxTemp1, GAUGE_NAME_AUX_TEMP1, "C", 1},
{engine->outputChannels.auxTemp2, GAUGE_NAME_AUX_TEMP2, "C", 1},
{engine->outputChannels.TPSValue, GAUGE_NAME_TPS, "%", 2},
{engine->outputChannels.TPS2Value, GAUGE_NAME_TPS2, "%", 2},
{engine->outputChannels.internalMcuTemperature, "CPU Temperature", "deg C", 0},
{engine->outputChannels.coolant, "CLT", "deg C", 1},
{engine->outputChannels.intake, "IAT", "deg C", 1},
{engine->outputChannels.auxTemp1, "auxTemp1", "deg C", 1},
{engine->outputChannels.auxTemp2, "auxTemp2", "deg C", 1},
{engine->outputChannels.TPSValue, "TPS", "%", 2},
{engine->outputChannels.throttlePedalPosition, GAUGE_NAME_THROTTLE_PEDAL, "%", 2},
{engine->outputChannels.MAPValue, GAUGE_NAME_MAP, "kPa", 1},
{engine->outputChannels.tpsADC, "tpsADC", "ADC", 0},
{engine->outputChannels.rawMaf, "rawMaf", "V", 3},
{engine->outputChannels.mafMeasured, "MAF sensor", "kg/h", 1},
{engine->outputChannels.MAPValue, "MAP", "kPa", 1},
{engine->outputChannels.TPS2Value, GAUGE_NAME_TPS2, "%", 2},
{engine->outputChannels.AFRValue, GAUGE_NAME_AFR, "afr", 2},
{engine->outputChannels.AFRValue2, GAUGE_NAME_AFR2, "afr", 2},
{engine->outputChannels.lambdaValue, GAUGE_NAME_LAMBDA, "", 3},
@ -82,7 +93,6 @@ static constexpr LogField fields[] = {
{engine->outputChannels.fuelTankLevel, GAUGE_NAME_FUEL_LEVEL, "%", 0},
// {engine->outputChannels.fuelingLoad, GAUGE_NAME_FUEL_LOAD, "%", 1},
// {engine->outputChannels.ignitionLoad, GAUGE_NAME_IGNITION_LOAD, "%", 1},
{engine->outputChannels.mafMeasured, GAUGE_NAME_AIR_FLOW_MEASURED, "kg/h", 1},
{engine->outputChannels.mafEstimate, GAUGE_NAME_AIR_FLOW_ESTIMATE, "kg/h", 1},
{engine->outputChannels.tcuDesiredGear, GAUGE_NAME_DESIRED_GEAR, "gear", 0},
{engine->outputChannels.tcuCurrentGear, GAUGE_NAME_CURRENT_GEAR, "gear", 0},

View File

@ -47,7 +47,7 @@
!
! each field is declared as
! type name;comment;scale,offset,min,max,number_of_digits
! hello;I like rusEFI;1,0,-10,10,2
! hello;I like rusEFI;"ms",1,0,-10,10,2
!
!
!

View File

@ -41,7 +41,12 @@ public class SdCardFieldsConsumer implements ConfigurationConsumer {
}
private String processOutput(ReaderState readerState, ConfigField configField, String prefix) {
if (configField.getName().startsWith(ConfigStructure.ALIGNMENT_FILL_AT))
return "";
if (configField.getName().startsWith(ConfigStructure.UNUSED_BIT_PREFIX))
return "";
if (configField.isBit())
return "";
return "\t{engine->outputChannels." + configField.getName() +
", "

View File

@ -12,9 +12,9 @@ public class SdCardFieldsGeneratorTest {
@Test
public void outputs() {
String test = "struct_no_prefix output_channels_s\n" +
"uint16_t autoscale RPMValue;@@GAUGE_NAME_RPM@@;\"RPM\",1, 0, 0, 8000, 0\n" +
"uint16_t autoscale RPMValue;@@GAUGE_NAME_RPM@@;\"RPM\",1, 0, 0, 8000, 2\n" +
"\n" +
"uint16_t rpmAcceleration;dRPM;\"RPM/s\",1, 0, 0, 5, 0\n" +
"uint16_t rpmAcceleration;dRPM;\"RPM/s\",1, 0, 0, 5, 2\n" +
"\n" +
"\tuint16_t autoscale speedToRpmRatio;@@GAUGE_NAME_GEAR_RATIO@@;\"value\",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0\n" +
"\tint8_t autoscale internalMcuTemperature;@@GAUGE_NAME_CPU_TEMP@@;\"deg C\",1, 0, 0, 0, 0\n" +
@ -29,10 +29,23 @@ public class SdCardFieldsGeneratorTest {
SdCardFieldsConsumer consumer = new SdCardFieldsConsumer(LazyFile.TEST);
state.readBufferedReader(test, consumer);
assertEquals("\t{engine->outputChannels.RPMValue, \"hello\", \"RPM\", 0},\n" +
"\t{engine->outputChannels.rpmAcceleration, \"dRPM\", \"RPM/s\", 0},\n" +
assertEquals("\t{engine->outputChannels.RPMValue, \"hello\", \"RPM\", 2},\n" +
"\t{engine->outputChannels.rpmAcceleration, \"dRPM\", \"RPM/s\", 2},\n" +
"\t{engine->outputChannels.speedToRpmRatio, \"ra\", \"value\", 0},\n" +
"\t{engine->outputChannels.internalMcuTemperature, \"te\", \"deg C\", 0},\n" +
"\t{engine->outputChannels.alignmentFill_at_7, \"need 4 byte alignment\", \"units\", 0},\n", consumer.getBody());
"\t{engine->outputChannels.internalMcuTemperature, \"te\", \"deg C\", 0},\n", consumer.getBody());
}
@Test
public void bitAndAlignment() {
String test = "struct_no_prefix output_channels_s\n" +
"uint16_t autoscale RPMValue;feee;\"RPM\",1, 0, 0, 8000, 2\n" +
"bit sd_logging_internal\n" +
"end_struct";
ReaderState state = new ReaderState();
SdCardFieldsConsumer consumer = new SdCardFieldsConsumer(LazyFile.TEST);
state.readBufferedReader(test, consumer);
assertEquals("\t{engine->outputChannels.RPMValue, \"feee\", \"RPM\", 2},\n", consumer.getBody());
}
}