Browse Source

RCOutput_PC9685: refactor write/write_gpio

master_rangefinder
Willian Galvani 2 years ago committed by Andrew Tridgell
parent
commit
710cbacef7
  1. 17
      libraries/AP_HAL_Linux/RCOutput_PCA9685.cpp
  2. 1
      libraries/AP_HAL_Linux/RCOutput_PCA9685.h

17
libraries/AP_HAL_Linux/RCOutput_PCA9685.cpp

@ -199,13 +199,7 @@ void RCOutput_PCA9685::write(uint8_t ch, uint16_t period_us) @@ -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) @@ -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) {

1
libraries/AP_HAL_Linux/RCOutput_PCA9685.h

@ -38,6 +38,7 @@ public: @@ -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;

Loading…
Cancel
Save