mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-17 05:15:25 +03:00
Update adjrange
command to take an 'adjustment index/slot'. Apply
adjustment ranges to adjustment slots when channel is within range. example: ``` adjrange 0 0 0 900 1700 0 2 adjrange 1 0 0 1700 2100 1 2 ``` explained: * configure adjrange 0 to use adjustment slot 1 (0) so that when aux1 (0) in the range 900-1700 then do nothing when aux 3 (2) is in any position. * configure adjrange 1 to use adjustment slot 1 (0) so that when aux1 (0) in the range 1700-2100 then do use adjustment 1 (rc rate) when aux 3 (2) is in the appropriate position. Without the entire range of aux1 being defined there is nothing that would stop aux 3 adjusting the rc rate once aux 1 wasn't in the higher range. There are 4 adjustment slots and 12 adjustment ranges. Adjustment slots and adjustment ranges can use the same aux channel. e.g. `adjrange 2 1 0 900 2100 1 3` * configure adjrange 2 to use adjustment slot 2 (1) so that when aux4 (3) in the range 900-2100 then use adjustment 1 (rc rate) when aux 4 (3) is in the appropriate position.
This commit is contained in:
parent
bd39445be8
commit
066c814a8a
4 changed files with 60 additions and 27 deletions
|
@ -113,7 +113,7 @@ typedef struct modeActivationCondition_s {
|
|||
channelRange_t range;
|
||||
} modeActivationCondition_t;
|
||||
|
||||
#define IS_MODE_RANGE_USABLE(modeActivationCondition) (modeActivationCondition->range.startStep < modeActivationCondition->range.endStep)
|
||||
#define IS_RANGE_USABLE(range) ((range)->startStep < (range)->endStep)
|
||||
|
||||
typedef struct controlRateConfig_s {
|
||||
uint8_t rcRate8;
|
||||
|
@ -150,16 +150,21 @@ typedef struct adjustmentRange_s {
|
|||
uint8_t auxChannelIndex;
|
||||
channelRange_t range;
|
||||
|
||||
// ..then apply the adjustment function to the auxSwitchChannel
|
||||
// ..then apply the adjustment function to the auxSwitchChannel ...
|
||||
uint8_t adjustmentFunction;
|
||||
uint8_t auxSwitchChannelIndex;
|
||||
|
||||
// ... via slot
|
||||
uint8_t adjustmentIndex;
|
||||
} adjustmentRange_t;
|
||||
|
||||
#define ADJUSTMENT_INDEX_OFFSET 1
|
||||
|
||||
#define MAX_SIMULTANEOUS_ADJUSTMENT_COUNT 4 // enough for 4 x 3position switches / 4 aux channel
|
||||
#define MAX_ADJUSTMENT_RANGE_COUNT 12 // enough for 2 * 6pos switches.
|
||||
|
||||
void configureAdjustment(uint8_t index, uint8_t auxChannelIndex, const adjustmentConfig_t *adjustmentConfig);
|
||||
void updateAdjustmentStates(adjustmentRange_t *adjustmentRanges);
|
||||
void processRcAdjustments(controlRateConfig_t *controlRateConfig, rxConfig_t *rxConfig);
|
||||
|
||||
void useRcControlsConfig(modeActivationCondition_t *modeActivationConditions);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue