mirror of https://github.com/ArduPilot/ardupilot
AP_Notify: made DiscreteRGBLed more generic
- made pins and polarity configurable - got rid of all Navio specific code
This commit is contained in:
parent
ef4e3aa333
commit
5b3627f83e
|
@ -80,7 +80,7 @@ struct AP_Notify::notify_events_type AP_Notify::events;
|
||||||
ToshibaLED_I2C toshibaled;
|
ToshibaLED_I2C toshibaled;
|
||||||
NotifyDevice *AP_Notify::_devices[] = {&navioled, &toshibaled};
|
NotifyDevice *AP_Notify::_devices[] = {&navioled, &toshibaled};
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO2
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO2
|
||||||
DiscreteRGBLed navioled;
|
DiscreteRGBLed navioled(4, 27, 6, false);
|
||||||
ToshibaLED_I2C toshibaled;
|
ToshibaLED_I2C toshibaled;
|
||||||
NotifyDevice *AP_Notify::_devices[] = {&navioled, &toshibaled};
|
NotifyDevice *AP_Notify::_devices[] = {&navioled, &toshibaled};
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BBBMINI
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BBBMINI
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
/*
|
|
||||||
DiscreteRGBLed driver
|
|
||||||
*/
|
|
||||||
/*
|
/*
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -16,49 +13,43 @@
|
||||||
|
|
||||||
#include "DiscreteRGBLed.h"
|
#include "DiscreteRGBLed.h"
|
||||||
|
|
||||||
#define NAVIO_LED_BRIGHT 1 // full brightness
|
|
||||||
#define NAVIO_LED_MEDIUM 1 // medium brightness
|
|
||||||
#define NAVIO_LED_DIM 1 // dim brightness
|
|
||||||
#define NAVIO_LED_OFF 0 // off
|
|
||||||
|
|
||||||
# define GREEN_PIN 27
|
|
||||||
# define BLUE_PIN 6
|
|
||||||
# define RED_PIN 4
|
|
||||||
|
|
||||||
extern const AP_HAL::HAL& hal;
|
extern const AP_HAL::HAL& hal;
|
||||||
|
|
||||||
DiscreteRGBLed::DiscreteRGBLed()
|
DiscreteRGBLed::DiscreteRGBLed(uint16_t red, uint16_t green, uint16_t blue, bool normal_polarity)
|
||||||
: RGBLed(NAVIO_LED_OFF, NAVIO_LED_BRIGHT, NAVIO_LED_MEDIUM, NAVIO_LED_DIM)
|
: RGBLed(normal_polarity ? 0 : 1,
|
||||||
|
normal_polarity ? 1 : 0,
|
||||||
|
normal_polarity ? 1 : 0,
|
||||||
|
normal_polarity ? 1 : 0),
|
||||||
|
red_pin_number(red),
|
||||||
|
green_pin_number(green),
|
||||||
|
blue_pin_number(blue)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <unistd.h>
|
|
||||||
bool DiscreteRGBLed::hw_init(void)
|
bool DiscreteRGBLed::hw_init(void)
|
||||||
{
|
{
|
||||||
red_pin = hal.gpio->channel(RED_PIN);
|
red_pin = hal.gpio->channel(red_pin_number);
|
||||||
green_pin = hal.gpio->channel(GREEN_PIN);
|
green_pin = hal.gpio->channel(green_pin_number);
|
||||||
blue_pin = hal.gpio->channel(BLUE_PIN);
|
blue_pin = hal.gpio->channel(blue_pin_number);
|
||||||
|
|
||||||
red_pin->mode(HAL_GPIO_OUTPUT);
|
red_pin->mode(HAL_GPIO_OUTPUT);
|
||||||
green_pin->mode(HAL_GPIO_OUTPUT);
|
green_pin->mode(HAL_GPIO_OUTPUT);
|
||||||
blue_pin->mode(HAL_GPIO_OUTPUT);
|
blue_pin->mode(HAL_GPIO_OUTPUT);
|
||||||
|
|
||||||
red_pin->write(0);
|
red_pin->write(0);
|
||||||
green_pin->write(0);
|
green_pin->write(0);
|
||||||
blue_pin->write(0);
|
blue_pin->write(0);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// set_rgb - set color as a combination of red, green and blue values
|
// set_rgb - set color as a combination of red, green and blue values
|
||||||
bool DiscreteRGBLed::hw_set_rgb(uint8_t red, uint8_t green, uint8_t blue)
|
bool DiscreteRGBLed::hw_set_rgb(uint8_t red, uint8_t green, uint8_t blue)
|
||||||
{
|
{
|
||||||
/* We fix the GPIO polarity right here */
|
red_pin->write(!!red);
|
||||||
|
green_pin->write(!!green);
|
||||||
red_pin->write(!red);
|
blue_pin->write(!!blue);
|
||||||
green_pin->write(!green);
|
|
||||||
blue_pin->write(!blue);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,12 +22,14 @@
|
||||||
|
|
||||||
class DiscreteRGBLed: public RGBLed {
|
class DiscreteRGBLed: public RGBLed {
|
||||||
public:
|
public:
|
||||||
DiscreteRGBLed();
|
DiscreteRGBLed(uint16_t red, uint16_t green, uint16_t blue, bool polarity);
|
||||||
|
|
||||||
bool hw_init(void) override;
|
bool hw_init(void) override;
|
||||||
bool hw_set_rgb(uint8_t r, uint8_t g, uint8_t b) override;
|
bool hw_set_rgb(uint8_t red, uint8_t green, uint8_t blue) override;
|
||||||
private:
|
private:
|
||||||
AP_HAL::DigitalSource *red_pin;
|
AP_HAL::DigitalSource *red_pin;
|
||||||
AP_HAL::DigitalSource *green_pin;
|
AP_HAL::DigitalSource *green_pin;
|
||||||
AP_HAL::DigitalSource *blue_pin;
|
AP_HAL::DigitalSource *blue_pin;
|
||||||
|
|
||||||
|
uint16_t red_pin_number, green_pin_number, blue_pin_number;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue