confusing Map3D API fix #6139

This commit is contained in:
Andrey 2024-03-04 17:58:24 -05:00
parent 20972847de
commit 3096db5c72
12 changed files with 26 additions and 32 deletions

View File

@ -277,8 +277,8 @@ void initBoostCtrl() {
#endif
// Set up open & closed loop tables
boostMapOpen.init(config->boostTableOpenLoop, config->boostTpsBins, config->boostRpmBins);
boostMapClosed.init(config->boostTableClosedLoop, config->boostTpsBins, config->boostRpmBins);
boostMapOpen.initTable(config->boostTableOpenLoop, config->boostRpmBins, config->boostTpsBins);
boostMapClosed.initTable(config->boostTableClosedLoop, config->boostRpmBins, config->boostTpsBins);
// Set up boost controller instance
engine->module<BoostController>().unmock().init(&boostPwmControl, &boostMapOpen, &boostMapClosed, &engineConfiguration->boostPid);

View File

@ -1033,9 +1033,9 @@ void initElectronicThrottle() {
#endif /* EFI_PROD_CODE */
pedal2tpsMap.init(config->pedalToTpsTable, config->pedalToTpsPedalBins, config->pedalToTpsRpmBins);
throttle2TrimTable.init(config->throttle2TrimTable, config->throttle2TrimTpsBins, config->throttle2TrimRpmBins);
tcEtbDropTable.init(engineConfiguration->tractionControlEtbDrop, engineConfiguration->tractionControlSpeedBins, engineConfiguration->tractionControlSlipBins);
pedal2tpsMap.initTable(config->pedalToTpsTable, config->pedalToTpsRpmBins, config->pedalToTpsPedalBins);
throttle2TrimTable.initTable(config->throttle2TrimTable, config->throttle2TrimRpmBins, config->throttle2TrimTpsBins);
tcEtbDropTable.initTable(engineConfiguration->tractionControlEtbDrop, engineConfiguration->tractionControlSlipBins, engineConfiguration->tractionControlSpeedBins);
doInitElectronicThrottle();
}

View File

@ -46,7 +46,7 @@ void initGpPwm() {
}
// Set up this channel's lookup table
tables[i]->init(cfg.table, cfg.loadBins, cfg.rpmBins);
tables[i]->initTable(cfg.table, cfg.rpmBins, cfg.loadBins);
// Finally configure the channel
channels[i].init(usePwm, &outputs[i], &pins[i], tables[i], &cfg);

View File

@ -99,7 +99,7 @@ expected<percent_t> VvtController::getClosedLoop(angle_t target, angle_t observa
// "retard" means that additional solenoid duty makes indicated VVT position more negative
bool isInverted = shouldInvertVvt(m_cam);
m_pid.setErrorAmplification(isInverted ? -1.0f : 1.0f);
float retVal = m_pid.getOutput(target, observation);
#if EFI_TUNER_STUDIO
@ -184,10 +184,8 @@ void initVvtActuators() {
engineConfiguration->vvtControlMinRpm = engineConfiguration->cranking.rpm;
}
vvtTable1.init(config->vvtTable1, config->vvtTable1LoadBins,
config->vvtTable1RpmBins);
vvtTable2.init(config->vvtTable2, config->vvtTable2LoadBins,
config->vvtTable2RpmBins);
vvtTable1.initTable(config->vvtTable1, config->vvtTable1RpmBins, config->vvtTable1LoadBins);
vvtTable2.initTable(config->vvtTable2, config->vvtTable2RpmBins, config->vvtTable2LoadBins);
engine->module<VvtController1>()->init(&vvtTable1, &vvtPwms[0]);

View File

@ -235,7 +235,7 @@ void updateAccelParameters() {
void initAccelEnrichment() {
tpsTpsMap.init(config->tpsTpsAccelTable, config->tpsTpsAccelFromRpmBins, config->tpsTpsAccelToRpmBins);
tpsTpsMap.initTable(config->tpsTpsAccelTable, config->tpsTpsAccelToRpmBins, config->tpsTpsAccelFromRpmBins);
#if ! EFI_UNIT_TEST

View File

@ -252,7 +252,7 @@ size_t getMultiSparkCount(int rpm) {
}
void initIgnitionAdvanceControl() {
tcTimingDropTable.init(engineConfiguration->tractionControlTimingDrop, engineConfiguration->tractionControlSpeedBins, engineConfiguration->tractionControlSlipBins);
tcTimingDropTable.initTable(engineConfiguration->tractionControlTimingDrop, engineConfiguration->tractionControlSlipBins, engineConfiguration->tractionControlSpeedBins);
}
#endif // EFI_ENGINE_CONTROL

View File

@ -344,7 +344,7 @@ float getInjectionMass(int rpm) {
* is to prepare the fuel map data structure for 3d interpolation
*/
void initFuelMap() {
mapEstimationTable.init(config->mapEstimateTable, config->mapEstimateTpsBins, config->mapEstimateRpmBins);
mapEstimationTable.initTable(config->mapEstimateTable, config->mapEstimateRpmBins, config->mapEstimateTpsBins);
}
/**

View File

@ -14,7 +14,7 @@
void KnockController::onConfigurationChange(engine_configuration_s const * previousConfig) {
KnockControllerBase::onConfigurationChange(previousConfig);
m_maxRetardTable.init(config->maxKnockRetardTable, config->maxKnockRetardRpmBins, config->maxKnockRetardLoadBins);
m_maxRetardTable.initTable(config->maxKnockRetardTable, config->maxKnockRetardLoadBins, config->maxKnockRetardRpmBins);
}
int getCylinderKnockBank(uint8_t cylinderNumber) {

View File

@ -83,12 +83,8 @@ float getCurveValue(int index, float key) {
}
void initScriptImpl() {
scriptTable1.init(config->scriptTable1, config->scriptTable1LoadBins,
config->scriptTable1RpmBins);
scriptTable2.init(config->scriptTable2, config->scriptTable2LoadBins,
config->scriptTable2RpmBins);
scriptTable3.init(config->scriptTable3, config->scriptTable3LoadBins,
config->scriptTable3RpmBins);
scriptTable4.init(config->scriptTable4, config->scriptTable4LoadBins,
config->scriptTable4RpmBins);
scriptTable1.initTable(config->scriptTable1, config->scriptTable1RpmBins, config->scriptTable1LoadBins);
scriptTable2.initTable(config->scriptTable2, config->scriptTable2RpmBins, config->scriptTable2LoadBins);
scriptTable3.initTable(config->scriptTable3, config->scriptTable3RpmBins, config->scriptTable3LoadBins);
scriptTable4.initTable(config->scriptTable4, config->scriptTable4RpmBins, config->scriptTable4LoadBins);
}

View File

@ -115,5 +115,5 @@ temperature_t IFuelComputer::getTCharge(int rpm, float tps) {
}
void initSpeedDensity() {
veMap.init(config->veTable, config->veLoadBins, config->veRpmBins);
veMap.initTable(config->veTable, config->veRpmBins, config->veLoadBins);
}

View File

@ -29,9 +29,9 @@ public:
template<int TColNum, int TRowNum, typename TValue, typename TXColumn, typename TRow>
class Map3D : public ValueProvider3D {
public:
template <typename TValueInit, typename TRowInit, typename TXColumnInit>
void init(TValueInit (&table)[TRowNum][TColNum],
const TRowInit (&rowBins)[TRowNum], const TXColumnInit (&columnBins)[TColNum]) {
template <typename TValueInit, typename TXColumnInit, typename TRowInit>
void initTable(TValueInit (&table)[TRowNum][TColNum],
const TXColumnInit (&columnBins)[TColNum], const TRowInit (&rowBins)[TRowNum]) {
// This splits out here so that we don't need one overload of init per possible combination of table/rows/columns types/dimensions
// Overload resolution figures out the correct versions of the functions below to call, some of which have assertions about what's allowed
initValues(table);

View File

@ -39,23 +39,23 @@ static float getValue(float rpm, float maf) {
Map3D<RPM_COUNT, VALUE_COUNT, float, float, float> x1;
// note "5, 4" above
// note "map[4][5], Bins[4], rpm[5] below
x1.init(map, mafBins, rpmBins);
x1.initTable(map, rpmBins, mafBins);
float result1 = x1.getValue(rpm, maf);
Map3D<RPM_COUNT, VALUE_COUNT, float, float, int> x2;
x2.init(map, mafBinsScaledInt, rpmBins);
x2.initTable(map, rpmBins, mafBinsScaledInt);
float result2 = x2.getValue(rpm, maf);
EXPECT_NEAR_M4(result1, result2);
Map3D<RPM_COUNT, VALUE_COUNT, float, float, uint8_t> x3;
x3.init(map, mafBinsScaledByte, rpmBins);
x3.initTable(map, rpmBins, mafBinsScaledByte);
float result3 = x3.getValue(rpm, maf);
EXPECT_NEAR_M4(result1, result3);
Map3D<RPM_COUNT, VALUE_COUNT, float, uint8_t, float> x4;
x4.init(map, mafBins, rpmBinsScaledByte);
x4.initTable(map, rpmBinsScaledByte, mafBins);
float result4 = x4.getValue(rpm, maf);
EXPECT_NEAR_M4(result1, result4);
@ -68,7 +68,7 @@ static float getValue(float rpm, float maf) {
// Test with values stored in scaled bytes
Map3D<RPM_COUNT, VALUE_COUNT, uint32_t, float, float> x6;
x6.init(mapScaledChannel, mafBins, rpmBins);
x6.initTable(mapScaledChannel, rpmBins, mafBins);
float result6 = x6.getValue(rpm, maf);
EXPECT_NEAR(result1, result6, 1e-3);