Browse Source

AP_HAL_Linux: rename RCOutput_Navio to RCOutput_PCA9685

The RCOutput_Navio is now generic enough to be used by other boards.
Rename it to use the name of the chip, PCA9685.
mission-4.1.18
Lucas De Marchi 10 years ago committed by Andrew Tridgell
parent
commit
18321a77c4
  1. 2
      libraries/AP_HAL_Linux/AP_HAL_Linux_Namespace.h
  2. 2
      libraries/AP_HAL_Linux/AP_HAL_Linux_Private.h
  3. 2
      libraries/AP_HAL_Linux/HAL_Linux_Class.cpp
  4. 32
      libraries/AP_HAL_Linux/RCOutput_PCA9685.cpp
  5. 14
      libraries/AP_HAL_Linux/RCOutput_PCA9685.h

2
libraries/AP_HAL_Linux/AP_HAL_Linux_Namespace.h

@ -28,7 +28,7 @@ namespace Linux { @@ -28,7 +28,7 @@ namespace Linux {
class LinuxRCInput_ZYNQ;
class LinuxRCOutput_PRU;
class LinuxRCOutput_AioPRU;
class LinuxRCOutput_Navio;
class LinuxRCOutput_PCA9685;
class LinuxRCOutput_ZYNQ;
class LinuxRCOutput_Bebop;
class LinuxSemaphore;

2
libraries/AP_HAL_Linux/AP_HAL_Linux_Private.h

@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
#include "RCInput_Navio.h"
#include "RCOutput_PRU.h"
#include "RCOutput_AioPRU.h"
#include "RCOutput_Navio.h"
#include "RCOutput_PCA9685.h"
#include "RCOutput_ZYNQ.h"
#include "RCOutput_Bebop.h"
#include "Semaphores.h"

2
libraries/AP_HAL_Linux/HAL_Linux_Class.cpp

@ -94,7 +94,7 @@ static LinuxRCOutput_AioPRU rcoutDriver; @@ -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(true, 3, RPI_GPIO_27);
static LinuxRCOutput_PCA9685 rcoutDriver(true, 3, 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

32
libraries/AP_HAL_Linux/RCOutput_Navio.cpp → libraries/AP_HAL_Linux/RCOutput_PCA9685.cpp

@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
#if CONFIG_HAL_BOARD == HAL_BOARD_LINUX
#include "RCOutput_Navio.h"
#include "RCOutput_PCA9685.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
@ -58,9 +58,9 @@ using namespace Linux; @@ -58,9 +58,9 @@ using namespace Linux;
static const AP_HAL::HAL& hal = AP_HAL_BOARD_DRIVER;
LinuxRCOutput_Navio::LinuxRCOutput_Navio(bool external_clock,
uint8_t channel_offset,
uint8_t oe_pin_number) :
LinuxRCOutput_PCA9685::LinuxRCOutput_PCA9685(bool external_clock,
uint8_t channel_offset,
uint8_t oe_pin_number) :
_i2c_sem(NULL),
_enable_pin(NULL),
_frequency(50),
@ -75,16 +75,16 @@ LinuxRCOutput_Navio::LinuxRCOutput_Navio(bool external_clock, @@ -75,16 +75,16 @@ LinuxRCOutput_Navio::LinuxRCOutput_Navio(bool external_clock,
_osc_clock = PCA9685_INTERNAL_CLOCK;
}
LinuxRCOutput_Navio::~LinuxRCOutput_Navio()
LinuxRCOutput_PCA9685::~LinuxRCOutput_PCA9685()
{
delete [] _pulses_buffer;
}
void LinuxRCOutput_Navio::init(void* machtnicht)
void LinuxRCOutput_PCA9685::init(void* machtnicht)
{
_i2c_sem = hal.i2c->get_semaphore();
if (_i2c_sem == NULL) {
hal.scheduler->panic(PSTR("PANIC: RCOutput_Navio did not get "
hal.scheduler->panic(PSTR("PANIC: RCOutput_PCA9685 did not get "
"valid I2C semaphore!"));
return; /* never reached */
}
@ -100,7 +100,7 @@ void LinuxRCOutput_Navio::init(void* machtnicht) @@ -100,7 +100,7 @@ void LinuxRCOutput_Navio::init(void* machtnicht)
_enable_pin->write(0);
}
void LinuxRCOutput_Navio::reset_all_channels()
void LinuxRCOutput_PCA9685::reset_all_channels()
{
if (!_i2c_sem->take(10)) {
return;
@ -115,7 +115,7 @@ void LinuxRCOutput_Navio::reset_all_channels() @@ -115,7 +115,7 @@ void LinuxRCOutput_Navio::reset_all_channels()
_i2c_sem->give();
}
void LinuxRCOutput_Navio::set_freq(uint32_t chmask, uint16_t freq_hz)
void LinuxRCOutput_PCA9685::set_freq(uint32_t chmask, uint16_t freq_hz)
{
/* Correctly finish last pulses */
@ -158,22 +158,22 @@ void LinuxRCOutput_Navio::set_freq(uint32_t chmask, uint16_t freq_hz) @@ -158,22 +158,22 @@ void LinuxRCOutput_Navio::set_freq(uint32_t chmask, uint16_t freq_hz)
_i2c_sem->give();
}
uint16_t LinuxRCOutput_Navio::get_freq(uint8_t ch)
uint16_t LinuxRCOutput_PCA9685::get_freq(uint8_t ch)
{
return _frequency;
}
void LinuxRCOutput_Navio::enable_ch(uint8_t ch)
void LinuxRCOutput_PCA9685::enable_ch(uint8_t ch)
{
}
void LinuxRCOutput_Navio::disable_ch(uint8_t ch)
void LinuxRCOutput_PCA9685::disable_ch(uint8_t ch)
{
write(ch, 0);
}
void LinuxRCOutput_Navio::write(uint8_t ch, uint16_t period_us)
void LinuxRCOutput_PCA9685::write(uint8_t ch, uint16_t period_us)
{
if(ch >= PWM_CHAN_COUNT){
return;
@ -201,18 +201,18 @@ void LinuxRCOutput_Navio::write(uint8_t ch, uint16_t period_us) @@ -201,18 +201,18 @@ void LinuxRCOutput_Navio::write(uint8_t ch, uint16_t period_us)
_i2c_sem->give();
}
void LinuxRCOutput_Navio::write(uint8_t ch, uint16_t* period_us, uint8_t len)
void LinuxRCOutput_PCA9685::write(uint8_t ch, uint16_t* period_us, uint8_t len)
{
for (int i = 0; i < len; i++)
write(ch + i, period_us[i]);
}
uint16_t LinuxRCOutput_Navio::read(uint8_t ch)
uint16_t LinuxRCOutput_PCA9685::read(uint8_t ch)
{
return _pulses_buffer[ch];
}
void LinuxRCOutput_Navio::read(uint16_t* period_us, uint8_t len)
void LinuxRCOutput_PCA9685::read(uint16_t* period_us, uint8_t len)
{
for (int i = 0; i < len; i++)
period_us[i] = read(0 + i);

14
libraries/AP_HAL_Linux/RCOutput_Navio.h → libraries/AP_HAL_Linux/RCOutput_PCA9685.h

@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
#ifndef __AP_HAL_LINUX_RCOUTPUT_NAVIO_H__
#define __AP_HAL_LINUX_RCOUTPUT_NAVIO_H__
#ifndef __AP_HAL_LINUX_RCOUTPUT_PCA9685_H__
#define __AP_HAL_LINUX_RCOUTPUT_PCA9685_H__
#include "AP_HAL_Linux.h"
class Linux::LinuxRCOutput_Navio : public AP_HAL::RCOutput {
class Linux::LinuxRCOutput_PCA9685 : public AP_HAL::RCOutput {
public:
LinuxRCOutput_Navio(bool external_clock, uint8_t channel_offset,
uint8_t oe_pin_number);
~LinuxRCOutput_Navio();
LinuxRCOutput_PCA9685(bool external_clock, uint8_t channel_offset,
uint8_t oe_pin_number);
~LinuxRCOutput_PCA9685();
void init(void* machtnichts);
void reset_all_channels();
void set_freq(uint32_t chmask, uint16_t freq_hz);
@ -35,4 +35,4 @@ private: @@ -35,4 +35,4 @@ private:
uint8_t _oe_pin_number;
};
#endif // __AP_HAL_LINUX_RCOUTPUT_NAVIO_H__
#endif // __AP_HAL_LINUX_RCOUTPUT_PCA9685_H__
Loading…
Cancel
Save