refactoring - auto-generating names

This commit is contained in:
rusefi 2021-10-16 17:49:02 -04:00
parent d438f9f9cb
commit 0635060e4f
6 changed files with 116 additions and 65 deletions

View File

@ -0,0 +1,90 @@
#include "global.h"
#include "sensor_type.h"
// was generated automatically by rusEFI tool from sensor_type.h // by enum2string.jar tool on Sat Oct 16 17:24:03 EDT 2021
// see also gen_config_and_enums.bat
const char *getSensorType(SensorType value){
switch(value) {
case AcceleratorPedal:
return "AcceleratorPedal";
case AcceleratorPedalPrimary:
return "AcceleratorPedalPrimary";
case AcceleratorPedalSecondary:
return "AcceleratorPedalSecondary";
case Aux1:
return "Aux1";
case Aux2:
return "Aux2";
case Aux3:
return "Aux3";
case Aux4:
return "Aux4";
case AuxTemp1:
return "AuxTemp1";
case AuxTemp2:
return "AuxTemp2";
case BarometricPressure:
return "BarometricPressure";
case BatteryVoltage:
return "BatteryVoltage";
case Clt:
return "Clt";
case DriverThrottleIntent:
return "DriverThrottleIntent";
case FuelEthanolPercent:
return "FuelEthanolPercent";
case FuelLevel:
return "FuelLevel";
case FuelPressureHigh:
return "FuelPressureHigh";
case FuelPressureInjector:
return "FuelPressureInjector";
case FuelPressureLow:
return "FuelPressureLow";
case Iat:
return "Iat";
case IdlePosition:
return "IdlePosition";
case Invalid:
return "Invalid";
case Lambda1:
return "Lambda1";
case Lambda2:
return "Lambda2";
case Maf:
return "Maf";
case Map:
return "Map";
case MapFast:
return "MapFast";
case MapSlow:
return "MapSlow";
case OilPressure:
return "OilPressure";
case PlaceholderLast:
return "PlaceholderLast";
case Rpm:
return "Rpm";
case Tps1:
return "Tps1";
case Tps1Primary:
return "Tps1Primary";
case Tps1Secondary:
return "Tps1Secondary";
case Tps2:
return "Tps2";
case Tps2Primary:
return "Tps2Primary";
case Tps2Secondary:
return "Tps2Secondary";
case TurbochargerSpeed:
return "TurbochargerSpeed";
case VehicleSpeed:
return "VehicleSpeed";
case WastegatePosition:
return "WastegatePosition";
}
return NULL;
}

View File

@ -0,0 +1,8 @@
// was generated automatically by rusEFI tool from sensor_type.h // by enum2string.jar tool on Sat Oct 16 17:24:03 EDT 2021
// see also gen_config_and_enums.bat
#include "sensor_type.h"
#pragma once
const char *getSensorType(SensorType value);

View File

@ -1,62 +1,5 @@
#include "pch.h"
static const char* const s_sensorNames[] = {
"Invalid",
"CLT",
"IAT",
"RPM",
"MAP",
"MAF",
"Oil Pressure",
"Fuel Pressure (LP)",
"Fuel Pressure (HP)",
"Fuel Pressure (injector)",
"TPS 1",
"TPS 1 Primary",
"TPS 1 Secondary",
"TPS 2",
"TPS 2 Primary",
"TPS 2 Secondary",
"Acc Pedal",
"Acc Pedal Primary",
"Acc Pedal Secondary",
"Driver Acc Intent",
"Aux Temp 1",
"Aux Temp 2",
"Lambda 1",
"Lambda 2",
"Wastegate Position",
"Idle Valve Position",
"Flex Fuel",
"Battery Voltage",
"Barometric Pressure",
"Fuel Level %",
"Aux 1",
"Aux 2",
"Aux 3",
"Aux 4",
"Vehicle speed",
"Turbo speed",
"MAP (fast)",
"MAP (slow)",
};
#include "auto_generated_sensor.h"
// This struct represents one sensor in the registry.
// It stores whether the sensor should use a mock value,
@ -171,8 +114,6 @@ private:
static SensorRegistryEntry s_sensorRegistry[static_cast<size_t>(SensorType::PlaceholderLast)] = {};
static_assert(efi::size(s_sensorNames) == efi::size(s_sensorRegistry));
bool Sensor::Register() {
return s_sensorRegistry[getIndex()].Register(this);
}
@ -263,7 +204,7 @@ bool Sensor::Register() {
}
/*static*/ const char* Sensor::getSensorName(SensorType type) {
return s_sensorNames[static_cast<size_t>(type)];
return getSensorType(type);
}
/*static*/ bool Sensor::s_inhibitSensorTimeouts = false;
@ -276,7 +217,7 @@ bool Sensor::Register() {
/*static*/ void Sensor::showAllSensorInfo() {
for (size_t i = 1; i < efi::size(s_sensorRegistry); i++) {
auto& entry = s_sensorRegistry[i];
const char* name = s_sensorNames[i];
const char* name = getSensorType((SensorType)i);
entry.showInfo(name);
}

View File

@ -13,9 +13,6 @@
/**
**************************************
* SEE sensor.h ON HOW TO ADD NEW SENSOR TYPES
* While changing SensorType make sure to change s_sensorNames
* TODO: SensorType to s_sensorNames mapping has to be done by code generation! We already have relevant tools
* maybe we just need a better naming convention?
**************************************
*/
typedef enum __attribute__ ((__packed__)) {

View File

@ -3,6 +3,7 @@ CONTROLLERS_SENSORS_SRC =
CONTROLLERS_SENSORS_SRC_CPP = $(PROJECT_DIR)/controllers/sensors/thermistors.cpp \
$(PROJECT_DIR)/controllers/sensors/allsensors.cpp \
$(PROJECT_DIR)/controllers/sensors/auto_generated_sensor.cpp \
$(PROJECT_DIR)/controllers/sensors/map.cpp \
$(PROJECT_DIR)/controllers/sensors/maf.cpp \
$(PROJECT_DIR)/controllers/sensors/tps.cpp \

View File

@ -12,12 +12,16 @@ java -DSystemOut.name=gen_enum_to_string \
-generatedFile codes \
-enumInputFile controllers/algo/obd_error_codes.h
[ $? -eq 0 ] || { echo "ERROR generating obd_error_codes"; exit 1; }
java -DSystemOut.name=gen_enum_to_string \
-jar ../java_tools/enum2string.jar \
-outputPath controllers/algo \
-generatedFile commonenum \
-enumInputFile controllers/algo/rusefi_enums.h
[ $? -eq 0 ] || { echo "ERROR generating enums"; exit 1; }
# TODO: rearrange enums so that we have WAY less duplicated generated code? at the moment too many enums are generated 4 times
java -DSystemOut.name=gen_enum_to_string \
@ -25,6 +29,16 @@ java -DSystemOut.name=gen_enum_to_string \
-outputPath controllers/algo \
-enumInputFile controllers/algo/rusefi_hw_enums.h \
[ $? -eq 0 ] || { echo "ERROR generating hw_enums"; exit 1; }
java -DSystemOut.name=gen_enum_to_string \
-jar ../java_tools/enum2string.jar \
-outputPath controllers/sensors \
-generatedFile sensor \
-enumInputFile controllers/sensors/sensor_type.h
[ $? -eq 0 ] || { echo "ERROR generating sensors"; exit 1; }
pwd
cd config/boards/kinetis/config
bash kinetis_gen_enum_to_string.sh