SRV_Channel: consolidate digital and reversible outputs to make clear the dependency
This commit is contained in:
parent
df1086c4f3
commit
8deeae7146
@ -504,11 +504,8 @@ public:
|
||||
// disable output to a set of channels given by a mask. This is used by the AP_BLHeli code
|
||||
static void set_disabled_channel_mask(uint16_t mask) { disabled_mask = mask; }
|
||||
|
||||
// add to mask of outputs which can do reverse thrust using digital controls
|
||||
static void set_reversible_mask(uint16_t mask);
|
||||
|
||||
// add to mask of outputs which use digital (non-PWM) output, such as DShot
|
||||
static void set_digital_mask(uint16_t mask);
|
||||
// add to mask of outputs which use digital (non-PWM) output and optionally can reverse thrust, such as DShot
|
||||
static void set_digital_outputs(uint16_t dig_mask, uint16_t rev_mask);
|
||||
|
||||
// return true if all of the outputs in mask are digital
|
||||
static bool have_digital_outputs(uint16_t mask) { return mask != 0 && (mask & digital_mask) == mask; }
|
||||
|
@ -226,18 +226,6 @@ void SRV_Channels::enable_aux_servos()
|
||||
#endif
|
||||
}
|
||||
|
||||
// add to mask of outputs which can do reverse thrust using digital controls
|
||||
// digital mask must have been set first
|
||||
void SRV_Channels::set_reversible_mask(uint16_t mask) {
|
||||
reversible_mask |= mask;
|
||||
for (uint8_t i = 0; i < NUM_SERVO_CHANNELS; i++) {
|
||||
SRV_Channel &c = channels[i];
|
||||
if ((digital_mask & (1U<<i)) && (reversible_mask & (1U<<i))) {
|
||||
c.servo_trim.set(1500);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
for channels which have been marked as digital output then the
|
||||
MIN/MAX/TRIM values have no meaning for controlling output, as
|
||||
@ -248,8 +236,10 @@ void SRV_Channels::set_reversible_mask(uint16_t mask) {
|
||||
set TRIM to either 1000 or 1500 depending on whether the channel
|
||||
is reversible
|
||||
*/
|
||||
void SRV_Channels::set_digital_mask(uint16_t mask) {
|
||||
digital_mask |= mask;
|
||||
void SRV_Channels::set_digital_outputs(uint16_t dig_mask, uint16_t rev_mask) {
|
||||
digital_mask |= dig_mask;
|
||||
reversible_mask |= rev_mask;
|
||||
|
||||
for (uint8_t i = 0; i < NUM_SERVO_CHANNELS; i++) {
|
||||
SRV_Channel &c = channels[i];
|
||||
if (digital_mask & (1U<<i)) {
|
||||
|
Loading…
Reference in New Issue
Block a user