SRV_Channel: add invalid mask for GPIO outputs

This commit is contained in:
Iampete1 2022-01-02 17:40:16 +00:00 committed by Andrew Tridgell
parent a36848cba5
commit d1e02e4fdd
3 changed files with 7 additions and 1 deletions

View File

@ -620,6 +620,9 @@ private:
// mask of outputs which are digitally reversible (eg. DShot-3D)
static uint32_t reversible_mask;
// mask of channels with invalid funtions, eg GPIO
static uint32_t invalid_mask;
SRV_Channel obj_channels[NUM_SERVO_CHANNELS];
// override loop counter

View File

@ -178,10 +178,12 @@ void SRV_Channels::update_aux_servo_function(void)
for (uint16_t i = 0; i < SRV_Channel::k_nr_aux_servo_functions; i++) {
functions[i].channel_mask = 0;
}
invalid_mask = 0;
// set auxiliary ranges
for (uint8_t i = 0; i < NUM_SERVO_CHANNELS; i++) {
if (!channels[i].valid_function()) {
invalid_mask |= 1U<<i;
continue;
}
const uint16_t function = channels[i].function.get();
@ -595,7 +597,7 @@ uint32_t SRV_Channels::get_output_channel_mask(SRV_Channel::Aux_servo_function_t
if (SRV_Channel::valid_function(function)) {
return functions[function].channel_mask;
}
return 0;
return invalid_mask;
}

View File

@ -68,6 +68,7 @@ AP_BLHeli *SRV_Channels::blheli_ptr;
uint32_t SRV_Channels::disabled_mask;
uint32_t SRV_Channels::digital_mask;
uint32_t SRV_Channels::reversible_mask;
uint32_t SRV_Channels::invalid_mask;
bool SRV_Channels::disabled_passthrough;
bool SRV_Channels::initialised;