From 3beaf34aa1c3f01d89b26165a78a21ffc1679060 Mon Sep 17 00:00:00 2001 From: Lucas De Marchi Date: Tue, 25 Aug 2015 15:51:00 -0300 Subject: [PATCH] AP_HAL_Linux: RCOutput_Navio: allow to have other OE pin While at it also rename enable_pin to follow the convention of starting with underscore for private members. --- libraries/AP_HAL_Linux/HAL_Linux_Class.cpp | 2 +- libraries/AP_HAL_Linux/RCOutput_Navio.cpp | 14 +++++++------- libraries/AP_HAL_Linux/RCOutput_Navio.h | 5 +++-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/libraries/AP_HAL_Linux/HAL_Linux_Class.cpp b/libraries/AP_HAL_Linux/HAL_Linux_Class.cpp index 1e4511e4f3..d73d01c9a3 100644 --- a/libraries/AP_HAL_Linux/HAL_Linux_Class.cpp +++ b/libraries/AP_HAL_Linux/HAL_Linux_Class.cpp @@ -94,7 +94,7 @@ static LinuxRCOutput_AioPRU rcoutDriver; use the PCA9685 based RCOutput driver on Navio */ #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO -static LinuxRCOutput_Navio rcoutDriver; +static LinuxRCOutput_Navio rcoutDriver(RPI_GPIO_27); #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ZYNQ static LinuxRCOutput_ZYNQ rcoutDriver; #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BEBOP diff --git a/libraries/AP_HAL_Linux/RCOutput_Navio.cpp b/libraries/AP_HAL_Linux/RCOutput_Navio.cpp index 1db5143d52..9d8f85d2e5 100644 --- a/libraries/AP_HAL_Linux/RCOutput_Navio.cpp +++ b/libraries/AP_HAL_Linux/RCOutput_Navio.cpp @@ -47,15 +47,15 @@ using namespace Linux; #define PWM_CHAN_COUNT 13 -#define PCA9685_OUTPUT_ENABLE RPI_GPIO_27 static const AP_HAL::HAL& hal = AP_HAL_BOARD_DRIVER; -LinuxRCOutput_Navio::LinuxRCOutput_Navio(): +LinuxRCOutput_Navio::LinuxRCOutput_Navio(uint8_t oe_pin_number) : _i2c_sem(NULL), - enable_pin(NULL), + _enable_pin(NULL), _frequency(50), - _pulses_buffer(new uint16_t[PWM_CHAN_COUNT]) + _pulses_buffer(new uint16_t[PWM_CHAN_COUNT]), + _oe_pin_number(oe_pin_number) { } @@ -79,9 +79,9 @@ void LinuxRCOutput_Navio::init(void* machtnicht) set_freq(0, 50); /* Enable PCA9685 PWM */ - enable_pin = hal.gpio->channel(PCA9685_OUTPUT_ENABLE); - enable_pin->mode(HAL_GPIO_OUTPUT); - enable_pin->write(0); + _enable_pin = hal.gpio->channel(_oe_pin_number); + _enable_pin->mode(HAL_GPIO_OUTPUT); + _enable_pin->write(0); } void LinuxRCOutput_Navio::reset_all_channels() diff --git a/libraries/AP_HAL_Linux/RCOutput_Navio.h b/libraries/AP_HAL_Linux/RCOutput_Navio.h index 42a6cd1a10..ad70d9e4c8 100644 --- a/libraries/AP_HAL_Linux/RCOutput_Navio.h +++ b/libraries/AP_HAL_Linux/RCOutput_Navio.h @@ -6,7 +6,7 @@ class Linux::LinuxRCOutput_Navio : public AP_HAL::RCOutput { public: - LinuxRCOutput_Navio(); + LinuxRCOutput_Navio(uint8_t oe_pin_number); ~LinuxRCOutput_Navio(); void init(void* machtnichts); void reset_all_channels(); @@ -23,10 +23,11 @@ private: void reset(); AP_HAL::Semaphore *_i2c_sem; - AP_HAL::DigitalSource *enable_pin; + AP_HAL::DigitalSource *_enable_pin; uint16_t _frequency; uint16_t *_pulses_buffer; + uint8_t _oe_pin_number; }; #endif // __AP_HAL_LINUX_RCOUTPUT_NAVIO_H__