RCOutput_PC9685: refactor write/write_gpio

This commit is contained in:
Willian Galvani 2022-08-29 11:30:19 -03:00 committed by Andrew Tridgell
parent 603bc5ecce
commit 710cbacef7
2 changed files with 9 additions and 9 deletions

View File

@ -199,13 +199,7 @@ void RCOutput_PCA9685::write(uint8_t ch, uint16_t period_us)
if (_is_gpio_mask & (1U << ch)) {
return;
}
_pulses_buffer[ch] = period_us;
_pending_write_mask |= (1U << ch);
if (!_corking) {
_corking = true;
push();
}
write_raw(ch, period_us);
}
void RCOutput_PCA9685::write_gpio(uint8_t chan, bool active)
@ -213,8 +207,13 @@ void RCOutput_PCA9685::write_gpio(uint8_t chan, bool active)
if (chan >= (PWM_CHAN_COUNT - _channel_offset)) {
return;
}
_is_relay_mask |= (1U << ch);
_pulses_buffer[ch] = active;
_is_gpio_mask |= (1U << chan);
write_raw(chan, active);
}
void RCOutput_PCA9685::write_raw(uint8_t ch, uint16_t period_us) {
/* Common code used by both write() and write_gpio() */
_pulses_buffer[ch] = period_us;
_pending_write_mask |= (1U << ch);
if (!_corking) {

View File

@ -38,6 +38,7 @@ public:
private:
void reset();
void write_raw(uint8_t ch, uint16_t period_us);
AP_HAL::DigitalSource *_enable_pin;
AP_HAL::OwnPtr<AP_HAL::I2CDevice> _dev;