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:
parent
b58e8f827f
commit
bc09e929b5
4 changed files with 10 additions and 10 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue