fix(color): NV14/EL18 dead zone resetting user choice, improvements to logic (#4064)

This commit is contained in:
philmoz
2023-11-11 19:35:13 +10:00
committed by GitHub
parent 51c258f2e9
commit 399e55084a
2 changed files with 7 additions and 26 deletions
+7 -21
View File
@@ -487,20 +487,7 @@ void evalInputs(uint8_t mode)
BeepANACenter anaCenter = 0;
#if defined(STICK_DEAD_ZONE)
static int16_t P_OFFSET = 0;
static int16_t N_OFFSET = 0;
static float aParam = 0.0f;
static float bParam = 0.0f;
static int16_t lastDeadZone = -1;
if (lastDeadZone != g_eeGeneral.stickDeadZone) {
P_OFFSET =
(g_eeGeneral.stickDeadZone ? 2 << (g_eeGeneral.stickDeadZone - 1) : 0);
N_OFFSET = (-1) * P_OFFSET;
aParam = 1024.0 / (1024.0 - (float)P_OFFSET);
bParam = 1024.0 * (aParam - 1.0f);
lastDeadZone = g_eeGeneral.stickDeadZone;
}
int16_t deadZoneOffset = g_eeGeneral.stickDeadZone ? 2 << (g_eeGeneral.stickDeadZone - 1) : 0;
#endif
auto max_calib_analogs = adcGetInputOffset(ADC_INPUT_VBAT);
@@ -515,16 +502,15 @@ void evalInputs(uint8_t mode)
#if defined(STICK_DEAD_ZONE)
// dead zone invented by FlySky in my opinion it should goes into ADC
// float calculations are not efficient
if (g_eeGeneral.stickDeadZone && ch != inputMappingGetThrottle()) {
if (v > P_OFFSET) {
if (v > deadZoneOffset) {
// y=ax+b
v = (int)((aParam * (float)v) - bParam);
} else if ((v <= P_OFFSET) && (v >= N_OFFSET)) {
v = (int16_t)((int32_t)(v - deadZoneOffset) * 1024L / (1024L - deadZoneOffset));
} else if (v < -deadZoneOffset) {
// y=ax+b
v = (int16_t)((int32_t)(v + deadZoneOffset) * 1024L / (1024L - deadZoneOffset));
} else {
v = 0;
} else if (v < N_OFFSET) {
// y=ax+b
v = (int)((aParam * (float)v) + bParam);
}
}
#endif
-5
View File
@@ -100,11 +100,6 @@ void postRadioSettingsLoad()
g_eeGeneral.internalModule = DEFAULT_INTERNAL_MODULE;
}
#endif
#if defined(STICK_DEAD_ZONE)
if (!g_eeGeneral.stickDeadZone) {
g_eeGeneral.stickDeadZone = DEFAULT_STICK_DEADZONE;
}
#endif
#if !defined(DEBUG)
// clean up leftovers from a previous DEBUG config
for (uint8_t port_nr = 0; port_nr < MAX_AUX_SERIAL; port_nr++) {