From 9cce922b7835bf0f5a69f98cd441eb4b5ca1c437 Mon Sep 17 00:00:00 2001 From: rusEfi Date: Mon, 23 Jul 2018 21:38:05 -0400 Subject: [PATCH] per error code --- firmware/controllers/algo/advance_map.cpp | 2 +- firmware/controllers/algo/fuel_math.cpp | 2 +- firmware/controllers/algo/obd_error_codes.h | 10 ++++++++++ firmware/controllers/map_averaging.cpp | 4 ++-- firmware/controllers/math/engine_math.cpp | 4 ++-- firmware/controllers/math/engine_math.h | 6 +++--- firmware/controllers/trigger/aux_valves.cpp | 4 ++-- firmware/controllers/trigger/trigger_central.cpp | 2 +- firmware/controllers/trigger/trigger_structure.cpp | 6 +++--- firmware/development/wave_analyzer.cpp | 2 +- 10 files changed, 26 insertions(+), 16 deletions(-) diff --git a/firmware/controllers/algo/advance_map.cpp b/firmware/controllers/algo/advance_map.cpp index aff54ade50..efd06d81d1 100644 --- a/firmware/controllers/algo/advance_map.cpp +++ b/firmware/controllers/algo/advance_map.cpp @@ -153,7 +153,7 @@ angle_t getAdvance(int rpm, float engineLoad DECLARE_ENGINE_PARAMETER_SUFFIX) { angle += getAdvanceCorrections(rpm PASS_ENGINE_PARAMETER_SUFFIX); } angle -= engineConfiguration->ignitionOffset; - fixAngle(angle, "getAdvance"); + fixAngle(angle, "getAdvance", CUSTOM_ERR_6548); return angle; } diff --git a/firmware/controllers/algo/fuel_math.cpp b/firmware/controllers/algo/fuel_math.cpp index 0e2e2305d7..39d783b481 100644 --- a/firmware/controllers/algo/fuel_math.cpp +++ b/firmware/controllers/algo/fuel_math.cpp @@ -111,7 +111,7 @@ angle_t getInjectionOffset(float rpm DECLARE_ENGINE_PARAMETER_SUFFIX) { } efiAssert(!cisnan(value), "inj offset#1", 0); angle_t result = value + CONFIG(extraInjectionOffset); - fixAngle(result, "inj offset#2"); + fixAngle(result, "inj offset#2", CUSTOM_ERR_6553); return result; } diff --git a/firmware/controllers/algo/obd_error_codes.h b/firmware/controllers/algo/obd_error_codes.h index 01fcad66ee..5f9ffe7ddd 100644 --- a/firmware/controllers/algo/obd_error_codes.h +++ b/firmware/controllers/algo/obd_error_codes.h @@ -1919,6 +1919,16 @@ typedef enum { CUSTOM_ERR_6558 = 6557, CUSTOM_ERR_6559 = 6559, + CUSTOM_ERR_6560 = 6560, + CUSTOM_ERR_6561 = 6561, + CUSTOM_ERR_6562 = 6562, + CUSTOM_ERR_6563 = 6563, + CUSTOM_ERR_6564 = 6564, + CUSTOM_ERR_6565 = 6565, + CUSTOM_ERR_6566 = 6566, + CUSTOM_ERR_6567 = 6567, + CUSTOM_ERR_6568 = 6567, + CUSTOM_ERR_6569 = 6569, // this is needed for proper enum size, this matters for malfunction_central Internal_ForceMyEnumIntSize_cranking_obd_code = ENUM_32_BITS, diff --git a/firmware/controllers/map_averaging.cpp b/firmware/controllers/map_averaging.cpp index 3e94bffa87..7eae07b80a 100644 --- a/firmware/controllers/map_averaging.cpp +++ b/firmware/controllers/map_averaging.cpp @@ -232,7 +232,7 @@ void refreshMapAveragingPreCalc(DECLARE_ENGINE_PARAMETER_SIGNATURE) { for (int i = 0; i < engineConfiguration->specs.cylindersCount; i++) { angle_t cylinderOffset = getEngineCycle(engineConfiguration->operationMode) * i / engineConfiguration->specs.cylindersCount; float cylinderStart = start + cylinderOffset - offsetAngle + tdcPosition(); - fixAngle(cylinderStart, "cylinderStart"); + fixAngle(cylinderStart, "cylinderStart", CUSTOM_ERR_6562); engine->engineState.mapAveragingStart[i] = cylinderStart; } engine->engineState.mapAveragingDuration = interpolate2d("samp", rpm, c->samplingWindowBins, c->samplingWindow, MAP_WINDOW_SIZE); @@ -288,7 +288,7 @@ static void mapAveragingTriggerCallback(trigger_event_e ckpEventType, } - fixAngle(samplingEnd, "samplingEnd"); + fixAngle(samplingEnd, "samplingEnd", CUSTOM_ERR_6563); // only if value is already prepared int structIndex = getRevolutionCounter() % 2; // todo: schedule this based on closest trigger event, same as ignition works diff --git a/firmware/controllers/math/engine_math.cpp b/firmware/controllers/math/engine_math.cpp index a43e45433e..09f5450863 100644 --- a/firmware/controllers/math/engine_math.cpp +++ b/firmware/controllers/math/engine_math.cpp @@ -193,7 +193,7 @@ bool FuelSchedule::addFuelEventsForCylinder(int i DECLARE_ENGINE_PARAMETER_SUFF #if EFI_UNIT_TEST || defined(__DOXYGEN__) ev->engine = engine; #endif - fixAngle(angle, "addFuel#1"); + fixAngle(angle, "addFuel#1", CUSTOM_ERR_6554); ev->outputs[0] = output; ev->outputs[1] = secondOutput; @@ -304,7 +304,7 @@ void TriggerShape::findTriggerPosition(event_trigger_position_s *position, angle // convert engine cycle angle into trigger cycle angle angleOffset += tdcPosition(); efiAssertVoid(!cisnan(angleOffset), "findAngle#2"); - fixAngle(angleOffset, "addFuel#2"); + fixAngle(angleOffset, "addFuel#2", CUSTOM_ERR_6555); int index = triggerIndexByAngle[(int)angleOffset]; angle_t eventAngle = eventAngles[index]; diff --git a/firmware/controllers/math/engine_math.h b/firmware/controllers/math/engine_math.h index fe00f63861..5ef7ce18d1 100644 --- a/firmware/controllers/math/engine_math.h +++ b/firmware/controllers/math/engine_math.h @@ -32,13 +32,13 @@ void setFlatInjectorLag(float value DECLARE_ENGINE_PARAMETER_SUFFIX); * @brief Shifts angle into the [0..720) range for four stroke and [0..360) for two stroke * I guess this implementation would be faster than 'angle % engineCycle' */ -#define fixAngle(angle, msg) \ +#define fixAngle(angle, msg, code) \ { \ if (cisnan(angle)) { \ - firmwareError(CUSTOM_ERR_ANGLE, "angle NaN %s", msg); \ + firmwareError(CUSTOM_ERR_ANGLE, "aNaN%s", msg); \ angle = 0; \ } \ - assertAngleRange(angle, msg, CUSTOM_ERR_6548); \ + assertAngleRange(angle, msg, code); \ float engineCycleDurationLocalCopy = ENGINE(engineCycle); \ /* todo: split this method into 'fixAngleUp' and 'fixAngleDown'*/ \ /* as a performance optimization?*/ \ diff --git a/firmware/controllers/trigger/aux_valves.cpp b/firmware/controllers/trigger/aux_valves.cpp index c67b649059..a33d7bd1a7 100644 --- a/firmware/controllers/trigger/aux_valves.cpp +++ b/firmware/controllers/trigger/aux_valves.cpp @@ -62,12 +62,12 @@ static void auxValveTriggerCallback(trigger_event_e ckpSignalType, */ angle_t extra = phaseIndex * 360 + valveIndex * 180; angle_t onTime = extra + engine->engineState.auxValveStart; - fixAngle(onTime, "onTime"); + fixAngle(onTime, "onTime", CUSTOM_ERR_6556); scheduleByAngle(rpm, &turnOnEvent[valveIndex][phaseIndex], onTime, (schfunc_t) &turnOn, output, &engine->rpmCalculator); angle_t offTime = extra + engine->engineState.auxValveEnd; - fixAngle(offTime, "offTime"); + fixAngle(offTime, "offTime", CUSTOM_ERR_6557); scheduleByAngle(rpm, &turnOffEvent[valveIndex][phaseIndex], offTime, (schfunc_t) &turnOff, output, &engine->rpmCalculator); diff --git a/firmware/controllers/trigger/trigger_central.cpp b/firmware/controllers/trigger/trigger_central.cpp index 5dcce0d691..645955d6db 100644 --- a/firmware/controllers/trigger/trigger_central.cpp +++ b/firmware/controllers/trigger/trigger_central.cpp @@ -134,7 +134,7 @@ void hwHandleVvtCamSignal(trigger_value_e front) { // convert engine cycle angle into trigger cycle angle vvtPosition -= tdcPosition(); - fixAngle(vvtPosition, "vvtPosition"); + fixAngle(vvtPosition, "vvtPosition", CUSTOM_ERR_6558); tc->vvtPosition = (engineConfiguration->vvtDisplayInverted ? -vvtPosition : vvtPosition) + engineConfiguration->vvtOffset; diff --git a/firmware/controllers/trigger/trigger_structure.cpp b/firmware/controllers/trigger/trigger_structure.cpp index f5851cc040..73f7f184c5 100644 --- a/firmware/controllers/trigger/trigger_structure.cpp +++ b/firmware/controllers/trigger/trigger_structure.cpp @@ -82,7 +82,7 @@ void TriggerShape::calculateTriggerSynchPoint(TriggerState *state DECLARE_ENGINE int triggerDefinitionIndex = triggerDefinitionCoordinate >= size ? triggerDefinitionCoordinate - size : triggerDefinitionCoordinate; float angle = getAngle(triggerDefinitionCoordinate) - firstAngle; efiAssertVoid(!cisnan(angle), "trgSyncNaN"); - fixAngle(angle, "trgSync"); + fixAngle(angle, "trgSync", CUSTOM_ERR_6559); if (engineConfiguration->useOnlyRisingEdgeForTrigger) { if (isFrontEvent[triggerDefinitionIndex]) { frontOnlyIndex += 2; @@ -201,7 +201,7 @@ float TriggerStateWithRunningStatistics::calculateInstantRpm(int *prevIndex, efi angle_t currentAngle = TRIGGER_SHAPE(eventAngles[current_index]); // todo: make this '90' depend on cylinder count or trigger shape? angle_t previousAngle = currentAngle - 90; - fixAngle(previousAngle, "prevAngle"); + fixAngle(previousAngle, "prevAngle", CUSTOM_ERR_6560); // todo: prevIndex should be pre-calculated *prevIndex = TRIGGER_SHAPE(triggerIndexByAngle[(int)previousAngle]); @@ -210,7 +210,7 @@ float TriggerStateWithRunningStatistics::calculateInstantRpm(int *prevIndex, efi uint32_t time = nowNt - timeOfLastEvent[*prevIndex]; angle_t angleDiff = currentAngle - prevIndexAngle; // todo: angle diff should be pre-calculated - fixAngle(angleDiff, "angleDiff"); + fixAngle(angleDiff, "angleDiff", CUSTOM_ERR_6561); // just for safety if (time == 0) diff --git a/firmware/development/wave_analyzer.cpp b/firmware/development/wave_analyzer.cpp index 0056b7ded8..3bccaac3b8 100644 --- a/firmware/development/wave_analyzer.cpp +++ b/firmware/development/wave_analyzer.cpp @@ -245,7 +245,7 @@ static void reportWave(Logging *logging, int index) { appendPrintf(logging, "advance%d%s", index, DELIMETER); float angle = (offsetUs / oneDegreeUs) - tdcPosition(); - fixAngle(angle, "waveAn"); + fixAngle(angle, "waveAn", CUSTOM_ERR_6564); appendFloat(logging, angle, 3); appendPrintf(logging, "%s", DELIMETER); }