1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-14 20:10:18 +03:00

Removed issue with sparse 'defaultAdjustmentConfigs' in adjustment ranges.

This commit is contained in:
mikeller 2018-11-11 00:44:20 +13:00
parent b58e8f827f
commit bc09e929b5
4 changed files with 10 additions and 10 deletions

View file

@ -697,7 +697,7 @@ static void updateAdjustmentStates(void)
// Only use slots if center value has not been specified, otherwise apply values directly (scaled) from aux channel // Only use slots if center value has not been specified, otherwise apply values directly (scaled) from aux channel
if (isRangeActive(adjustmentRange->auxChannelIndex, &adjustmentRange->range) && if (isRangeActive(adjustmentRange->auxChannelIndex, &adjustmentRange->range) &&
(adjustmentRange->adjustmentCenter == 0)) { (adjustmentRange->adjustmentCenter == 0)) {
const adjustmentConfig_t *adjustmentConfig = &defaultAdjustmentConfigs[adjustmentRange->adjustmentFunction - ADJUSTMENT_FUNCTION_CONFIG_INDEX_OFFSET]; const adjustmentConfig_t *adjustmentConfig = &defaultAdjustmentConfigs[adjustmentRange->adjustmentConfig - ADJUSTMENT_FUNCTION_CONFIG_INDEX_OFFSET];
configureAdjustment(adjustmentRange->adjustmentIndex, adjustmentRange->auxSwitchChannelIndex, adjustmentConfig); configureAdjustment(adjustmentRange->adjustmentIndex, adjustmentRange->auxSwitchChannelIndex, adjustmentConfig);
} }
} }
@ -792,7 +792,7 @@ void processRcAdjustments(controlRateConfig_t *controlRateConfig)
int index = activeAbsoluteAdjustmentArray[i]; int index = activeAbsoluteAdjustmentArray[i];
const adjustmentRange_t * const adjustmentRange = adjustmentRanges(index); const adjustmentRange_t * const adjustmentRange = adjustmentRanges(index);
const uint8_t channelIndex = NON_AUX_CHANNEL_COUNT + adjustmentRange->auxSwitchChannelIndex; const uint8_t channelIndex = NON_AUX_CHANNEL_COUNT + adjustmentRange->auxSwitchChannelIndex;
const adjustmentConfig_t *adjustmentConfig = &defaultAdjustmentConfigs[adjustmentRange->adjustmentFunction - ADJUSTMENT_FUNCTION_CONFIG_INDEX_OFFSET]; const adjustmentConfig_t *adjustmentConfig = &defaultAdjustmentConfigs[adjustmentRange->adjustmentConfig - ADJUSTMENT_FUNCTION_CONFIG_INDEX_OFFSET];
// If setting is defined for step adjustment and center value has been specified, apply values directly (scaled) from aux channel // If setting is defined for step adjustment and center value has been specified, apply values directly (scaled) from aux channel
if ((rcData[channelIndex] != lastRcData[index]) && if ((rcData[channelIndex] != lastRcData[index]) &&
@ -802,7 +802,7 @@ void processRcAdjustments(controlRateConfig_t *controlRateConfig)
int value = (((rcData[channelIndex] - PWM_RANGE_MIDDLE) * adjustmentRange->adjustmentScale) / (PWM_RANGE_MIDDLE - PWM_RANGE_MIN)) + adjustmentRange->adjustmentCenter; int value = (((rcData[channelIndex] - PWM_RANGE_MIDDLE) * adjustmentRange->adjustmentScale) / (PWM_RANGE_MIDDLE - PWM_RANGE_MIN)) + adjustmentRange->adjustmentCenter;
lastRcData[index] = rcData[channelIndex]; lastRcData[index] = rcData[channelIndex];
applyAbsoluteAdjustment(controlRateConfig, adjustmentRange->adjustmentFunction, value); applyAbsoluteAdjustment(controlRateConfig, adjustmentConfig->adjustmentFunction, value);
pidInitConfig(pidProfile); pidInitConfig(pidProfile);
} }
} }

View file

@ -85,7 +85,7 @@ typedef struct adjustmentRange_s {
channelRange_t range; channelRange_t range;
// ..then apply the adjustment function to the auxSwitchChannel ... // ..then apply the adjustment function to the auxSwitchChannel ...
uint8_t adjustmentFunction; uint8_t adjustmentConfig;
uint8_t auxSwitchChannelIndex; uint8_t auxSwitchChannelIndex;
// ... via slot // ... via slot

View file

@ -1257,7 +1257,7 @@ static void printAdjustmentRange(uint8_t dumpMask, const adjustmentRange_t *adju
arDefault->auxChannelIndex, arDefault->auxChannelIndex,
MODE_STEP_TO_CHANNEL_VALUE(arDefault->range.startStep), MODE_STEP_TO_CHANNEL_VALUE(arDefault->range.startStep),
MODE_STEP_TO_CHANNEL_VALUE(arDefault->range.endStep), MODE_STEP_TO_CHANNEL_VALUE(arDefault->range.endStep),
arDefault->adjustmentFunction, arDefault->adjustmentConfig,
arDefault->auxSwitchChannelIndex, arDefault->auxSwitchChannelIndex,
arDefault->adjustmentCenter, arDefault->adjustmentCenter,
arDefault->adjustmentScale arDefault->adjustmentScale
@ -1269,7 +1269,7 @@ static void printAdjustmentRange(uint8_t dumpMask, const adjustmentRange_t *adju
ar->auxChannelIndex, ar->auxChannelIndex,
MODE_STEP_TO_CHANNEL_VALUE(ar->range.startStep), MODE_STEP_TO_CHANNEL_VALUE(ar->range.startStep),
MODE_STEP_TO_CHANNEL_VALUE(ar->range.endStep), MODE_STEP_TO_CHANNEL_VALUE(ar->range.endStep),
ar->adjustmentFunction, ar->adjustmentConfig,
ar->auxSwitchChannelIndex, ar->auxSwitchChannelIndex,
ar->adjustmentCenter, ar->adjustmentCenter,
ar->adjustmentScale ar->adjustmentScale
@ -1315,7 +1315,7 @@ static void cliAdjustmentRange(char *cmdline)
if (ptr) { if (ptr) {
val = atoi(ptr); val = atoi(ptr);
if (val >= 0 && val < ADJUSTMENT_FUNCTION_COUNT) { if (val >= 0 && val < ADJUSTMENT_FUNCTION_COUNT) {
ar->adjustmentFunction = val; ar->adjustmentConfig = val;
validArgumentCount++; validArgumentCount++;
} }
} }
@ -1359,7 +1359,7 @@ static void cliAdjustmentRange(char *cmdline)
ar->auxChannelIndex, ar->auxChannelIndex,
MODE_STEP_TO_CHANNEL_VALUE(ar->range.startStep), MODE_STEP_TO_CHANNEL_VALUE(ar->range.startStep),
MODE_STEP_TO_CHANNEL_VALUE(ar->range.endStep), MODE_STEP_TO_CHANNEL_VALUE(ar->range.endStep),
ar->adjustmentFunction, ar->adjustmentConfig,
ar->auxSwitchChannelIndex, ar->auxSwitchChannelIndex,
ar->adjustmentCenter, ar->adjustmentCenter,
ar->adjustmentScale ar->adjustmentScale

View file

@ -974,7 +974,7 @@ static bool mspProcessOutCommand(uint8_t cmdMSP, sbuf_t *dst)
sbufWriteU8(dst, adjRange->auxChannelIndex); sbufWriteU8(dst, adjRange->auxChannelIndex);
sbufWriteU8(dst, adjRange->range.startStep); sbufWriteU8(dst, adjRange->range.startStep);
sbufWriteU8(dst, adjRange->range.endStep); sbufWriteU8(dst, adjRange->range.endStep);
sbufWriteU8(dst, adjRange->adjustmentFunction); sbufWriteU8(dst, adjRange->adjustmentConfig);
sbufWriteU8(dst, adjRange->auxSwitchChannelIndex); sbufWriteU8(dst, adjRange->auxSwitchChannelIndex);
} }
break; break;
@ -1623,7 +1623,7 @@ static mspResult_e mspProcessInCommand(uint8_t cmdMSP, sbuf_t *src)
adjRange->auxChannelIndex = sbufReadU8(src); adjRange->auxChannelIndex = sbufReadU8(src);
adjRange->range.startStep = sbufReadU8(src); adjRange->range.startStep = sbufReadU8(src);
adjRange->range.endStep = sbufReadU8(src); adjRange->range.endStep = sbufReadU8(src);
adjRange->adjustmentFunction = sbufReadU8(src); adjRange->adjustmentConfig = sbufReadU8(src);
adjRange->auxSwitchChannelIndex = sbufReadU8(src); adjRange->auxSwitchChannelIndex = sbufReadU8(src);
} else { } else {
return MSP_RESULT_ERROR; return MSP_RESULT_ERROR;