Browse Source

SRV_Channel: added a SERVO_32_ENABLE parameter

save on param count for most users
apm_2208
Andrew Tridgell 3 years ago
parent
commit
e185e1252b
  1. 3
      libraries/SRV_Channel/SRV_Channel.h
  2. 8
      libraries/SRV_Channel/SRV_Channel_aux.cpp
  3. 11
      libraries/SRV_Channel/SRV_Channels.cpp

3
libraries/SRV_Channel/SRV_Channel.h

@ -641,6 +641,9 @@ private: @@ -641,6 +641,9 @@ private:
AP_Int8 dshot_rate;
AP_Int8 dshot_esc_type;
AP_Int32 gpio_mask;
#if NUM_SERVO_CHANNELS >= 17
AP_Int8 enable_32_channels;
#endif
// return true if passthrough is disabled
static bool passthrough_disabled(void) {

8
libraries/SRV_Channel/SRV_Channel_aux.cpp

@ -76,7 +76,13 @@ void SRV_Channel::output_ch(void) @@ -76,7 +76,13 @@ void SRV_Channel::output_ch(void)
*/
void SRV_Channels::output_ch_all(void)
{
for (uint8_t i = 0; i < NUM_SERVO_CHANNELS; i++) {
uint8_t max_chan = NUM_SERVO_CHANNELS;
#if NUM_SERVO_CHANNELS >= 17
if (_singleton != nullptr && _singleton->enable_32_channels.get() <= 0) {
max_chan = 16;
}
#endif
for (uint8_t i = 0; i < max_chan; i++) {
channels[i].output_ch();
}
}

11
libraries/SRV_Channel/SRV_Channels.cpp

@ -242,7 +242,16 @@ const AP_Param::GroupInfo SRV_Channels::var_info[] = { @@ -242,7 +242,16 @@ const AP_Param::GroupInfo SRV_Channels::var_info[] = {
// @User: Advanced
// @RebootRequired: True
AP_GROUPINFO("_GPIO_MASK", 26, SRV_Channels, gpio_mask, 0),
#if (NUM_SERVO_CHANNELS >= 17)
// @Param: _32_ENABLE
// @DisplayName: Enable outputs 17 to 31
// @Description: This allows for up to 32 outputs, enabling parameters for outputs above 16
// @User: Advanced
// @Values: 0:Disabled,1:Enabled
AP_GROUPINFO_FLAGS("_32_ENABLE", 43, SRV_Channels, enable_32_channels, 0, AP_PARAM_FLAG_ENABLE),
#endif
#if (NUM_SERVO_CHANNELS >= 17)
// @Group: 17_
// @Path: SRV_Channel.cpp

Loading…
Cancel
Save