mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-20 23:05:19 +03:00
Add start channel for CHANNEL_FORWARDING
This commit is contained in:
parent
e21cea0ad2
commit
d47eb1e69f
5 changed files with 17 additions and 5 deletions
|
@ -69,6 +69,7 @@
|
||||||
#define servoConfig(x) (&masterConfig.servoConfig)
|
#define servoConfig(x) (&masterConfig.servoConfig)
|
||||||
#define servoMixerConfig(x) (&masterConfig.servoMixerConfig)
|
#define servoMixerConfig(x) (&masterConfig.servoMixerConfig)
|
||||||
#define gimbalConfig(x) (&masterConfig.gimbalConfig)
|
#define gimbalConfig(x) (&masterConfig.gimbalConfig)
|
||||||
|
#define channelForwardingConfig(x) (&masterConfig.channelForwardingConfig)
|
||||||
#define boardAlignment(x) (&masterConfig.boardAlignment)
|
#define boardAlignment(x) (&masterConfig.boardAlignment)
|
||||||
#define imuConfig(x) (&masterConfig.imuConfig)
|
#define imuConfig(x) (&masterConfig.imuConfig)
|
||||||
#define gyroConfig(x) (&masterConfig.gyroConfig)
|
#define gyroConfig(x) (&masterConfig.gyroConfig)
|
||||||
|
@ -131,6 +132,8 @@ typedef struct master_s {
|
||||||
servoProfile_t servoProfile;
|
servoProfile_t servoProfile;
|
||||||
// gimbal-related configuration
|
// gimbal-related configuration
|
||||||
gimbalConfig_t gimbalConfig;
|
gimbalConfig_t gimbalConfig;
|
||||||
|
// Channel forwarding start channel
|
||||||
|
channelForwardingConfig_t channelForwardingConfig;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
boardAlignment_t boardAlignment;
|
boardAlignment_t boardAlignment;
|
||||||
|
|
|
@ -649,6 +649,7 @@ const clivalue_t valueTable[] = {
|
||||||
{ "servo_lowpass", VAR_INT8 | MASTER_VALUE | MODE_LOOKUP, &servoMixerConfig()->servo_lowpass_enable, .config.lookup = { TABLE_OFF_ON } },
|
{ "servo_lowpass", VAR_INT8 | MASTER_VALUE | MODE_LOOKUP, &servoMixerConfig()->servo_lowpass_enable, .config.lookup = { TABLE_OFF_ON } },
|
||||||
{ "servo_pwm_rate", VAR_UINT16 | MASTER_VALUE, &servoConfig()->servoPwmRate, .config.minmax = { 50, 498 } },
|
{ "servo_pwm_rate", VAR_UINT16 | MASTER_VALUE, &servoConfig()->servoPwmRate, .config.minmax = { 50, 498 } },
|
||||||
{ "gimbal_mode", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, &gimbalConfig()->mode, .config.lookup = { TABLE_GIMBAL_MODE } },
|
{ "gimbal_mode", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, &gimbalConfig()->mode, .config.lookup = { TABLE_GIMBAL_MODE } },
|
||||||
|
{ "channel_forwarding_start", VAR_UINT8 | MASTER_VALUE, &channelForwardingConfig()->startChannel, .config.minmax = { AUX1, MAX_SUPPORTED_RC_CHANNEL_COUNT } },
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
{ "rc_rate", VAR_UINT8 | PROFILE_RATE_VALUE, &masterConfig.profile[0].controlRateProfile[0].rcRate8, .config.minmax = { 0, 255 } },
|
{ "rc_rate", VAR_UINT8 | PROFILE_RATE_VALUE, &masterConfig.profile[0].controlRateProfile[0].rcRate8, .config.minmax = { 0, 255 } },
|
||||||
|
|
|
@ -798,6 +798,9 @@ void createDefaultConfig(master_t *config)
|
||||||
|
|
||||||
// gimbal
|
// gimbal
|
||||||
config->gimbalConfig.mode = GIMBAL_MODE_NORMAL;
|
config->gimbalConfig.mode = GIMBAL_MODE_NORMAL;
|
||||||
|
|
||||||
|
// Channel forwarding;
|
||||||
|
config->channelForwardingConfig.startChannel = AUX1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GPS
|
#ifdef GPS
|
||||||
|
@ -911,10 +914,9 @@ void activateConfig(void)
|
||||||
);
|
);
|
||||||
|
|
||||||
#ifdef USE_SERVOS
|
#ifdef USE_SERVOS
|
||||||
servoUseConfigs(&masterConfig.servoMixerConfig, masterConfig.servoProfile.servoConf, &masterConfig.gimbalConfig);
|
servoUseConfigs(&masterConfig.servoMixerConfig, masterConfig.servoProfile.servoConf, &masterConfig.gimbalConfig, &masterConfig.channelForwardingConfig);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
imuConfigure(
|
imuConfigure(
|
||||||
&masterConfig.imuConfig,
|
&masterConfig.imuConfig,
|
||||||
¤tProfile->pidProfile,
|
¤tProfile->pidProfile,
|
||||||
|
|
|
@ -57,6 +57,7 @@ static gimbalConfig_t *gimbalConfig;
|
||||||
int16_t servo[MAX_SUPPORTED_SERVOS];
|
int16_t servo[MAX_SUPPORTED_SERVOS];
|
||||||
static int useServo;
|
static int useServo;
|
||||||
static servoParam_t *servoConf;
|
static servoParam_t *servoConf;
|
||||||
|
static channelForwardingConfig_t *channelForwardingConfig;
|
||||||
|
|
||||||
|
|
||||||
#define COUNT_SERVO_RULES(rules) (sizeof(rules) / sizeof(servoMixer_t))
|
#define COUNT_SERVO_RULES(rules) (sizeof(rules) / sizeof(servoMixer_t))
|
||||||
|
@ -142,11 +143,12 @@ const mixerRules_t servoMixers[] = {
|
||||||
|
|
||||||
static servoMixer_t *customServoMixers;
|
static servoMixer_t *customServoMixers;
|
||||||
|
|
||||||
void servoUseConfigs(servoMixerConfig_t *servoMixerConfigToUse, servoParam_t *servoParamsToUse, struct gimbalConfig_s *gimbalConfigToUse)
|
void servoUseConfigs(servoMixerConfig_t *servoMixerConfigToUse, servoParam_t *servoParamsToUse, struct gimbalConfig_s *gimbalConfigToUse, struct channelForwardingConfig_s *channelForwardingConfigToUse)
|
||||||
{
|
{
|
||||||
servoMixerConfig = servoMixerConfigToUse;
|
servoMixerConfig = servoMixerConfigToUse;
|
||||||
servoConf = servoParamsToUse;
|
servoConf = servoParamsToUse;
|
||||||
gimbalConfig = gimbalConfigToUse;
|
gimbalConfig = gimbalConfigToUse;
|
||||||
|
channelForwardingConfig = channelForwardingConfigToUse;
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t determineServoMiddleOrForwardFromChannel(servoIndex_e servoIndex)
|
int16_t determineServoMiddleOrForwardFromChannel(servoIndex_e servoIndex)
|
||||||
|
@ -250,7 +252,7 @@ void servoMixerLoadMix(int index, servoMixer_t *customServoMixers)
|
||||||
STATIC_UNIT_TESTED void forwardAuxChannelsToServos(uint8_t firstServoIndex)
|
STATIC_UNIT_TESTED void forwardAuxChannelsToServos(uint8_t firstServoIndex)
|
||||||
{
|
{
|
||||||
// start forwarding from this channel
|
// start forwarding from this channel
|
||||||
uint8_t channelOffset = AUX1;
|
uint8_t channelOffset = channelForwardingConfig->startChannel;
|
||||||
|
|
||||||
uint8_t servoOffset;
|
uint8_t servoOffset;
|
||||||
for (servoOffset = 0; servoOffset < MAX_AUX_CHANNEL_COUNT && channelOffset < MAX_SUPPORTED_RC_CHANNEL_COUNT; servoOffset++) {
|
for (servoOffset = 0; servoOffset < MAX_AUX_CHANNEL_COUNT && channelOffset < MAX_SUPPORTED_RC_CHANNEL_COUNT; servoOffset++) {
|
||||||
|
|
|
@ -114,6 +114,10 @@ typedef struct servoProfile_s {
|
||||||
servoParam_t servoConf[MAX_SUPPORTED_SERVOS];
|
servoParam_t servoConf[MAX_SUPPORTED_SERVOS];
|
||||||
} servoProfile_t;
|
} servoProfile_t;
|
||||||
|
|
||||||
|
typedef struct channelForwardingConfig_s {
|
||||||
|
uint8_t startChannel;
|
||||||
|
} channelForwardingConfig_t;
|
||||||
|
|
||||||
extern int16_t servo[MAX_SUPPORTED_SERVOS];
|
extern int16_t servo[MAX_SUPPORTED_SERVOS];
|
||||||
|
|
||||||
void servoTable(void);
|
void servoTable(void);
|
||||||
|
@ -123,7 +127,7 @@ void filterServos(void);
|
||||||
|
|
||||||
void servoMixerInit(servoMixer_t *customServoMixers);
|
void servoMixerInit(servoMixer_t *customServoMixers);
|
||||||
struct gimbalConfig_s;
|
struct gimbalConfig_s;
|
||||||
void servoUseConfigs(servoMixerConfig_t *servoConfigToUse, servoParam_t *servoParamsToUse, struct gimbalConfig_s *gimbalConfigToUse);
|
void servoUseConfigs(servoMixerConfig_t *servoConfigToUse, servoParam_t *servoParamsToUse, struct gimbalConfig_s *gimbalConfigToUse, struct channelForwardingConfig_s *channelForwardingConfigToUse);
|
||||||
void servoMixerLoadMix(int index, servoMixer_t *customServoMixers);
|
void servoMixerLoadMix(int index, servoMixer_t *customServoMixers);
|
||||||
void loadCustomServoMixer(void);
|
void loadCustomServoMixer(void);
|
||||||
void servoConfigureOutput(void);
|
void servoConfigureOutput(void);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue