fix(color): NV14/EL18 dead zone resetting user choice, improvements to logic (#4064)
This commit is contained in:
+7
-21
@@ -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
|
||||
|
||||
@@ -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++) {
|
||||
|
||||
Reference in New Issue
Block a user