AP_Notify: made Navio2LED a little easier to configure
- got rid of a lot of not needed defines - allocated channels on init instead of accessing them every time through the HAL reference - simpliefied hw_set_rgb()
This commit is contained in:
parent
da550e5e98
commit
0bd7839b9f
@ -21,53 +21,44 @@
|
||||
#define NAVIO_LED_DIM 1 // dim brightness
|
||||
#define NAVIO_LED_OFF 0 // off
|
||||
|
||||
# define GPIO_A_LED_PIN 27
|
||||
# define GPIO_B_LED_PIN 6
|
||||
# define GPIO_C_LED_PIN 4
|
||||
# define GPIO_LED_ON 0
|
||||
# define GPIO_LED_OFF 1
|
||||
# define GREEN_PIN 27
|
||||
# define BLUE_PIN 6
|
||||
# define RED_PIN 4
|
||||
|
||||
extern const AP_HAL::HAL& hal;
|
||||
|
||||
Navio2LED::Navio2LED():
|
||||
RGBLed(NAVIO_LED_OFF, NAVIO_LED_BRIGHT, NAVIO_LED_MEDIUM, NAVIO_LED_DIM)
|
||||
Navio2LED::Navio2LED()
|
||||
: RGBLed(NAVIO_LED_OFF, NAVIO_LED_BRIGHT, NAVIO_LED_MEDIUM, NAVIO_LED_DIM)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#include <unistd.h>
|
||||
bool Navio2LED::hw_init(void)
|
||||
{
|
||||
// setup the main LEDs as outputs
|
||||
hal.gpio->pinMode(GPIO_A_LED_PIN, HAL_GPIO_OUTPUT);
|
||||
hal.gpio->pinMode(GPIO_B_LED_PIN, HAL_GPIO_OUTPUT);
|
||||
hal.gpio->pinMode(GPIO_C_LED_PIN, HAL_GPIO_OUTPUT);
|
||||
|
||||
// turn all lights off
|
||||
hal.gpio->write(GPIO_A_LED_PIN, GPIO_LED_OFF);
|
||||
hal.gpio->write(GPIO_B_LED_PIN, GPIO_LED_OFF);
|
||||
hal.gpio->write(GPIO_C_LED_PIN, GPIO_LED_OFF);
|
||||
red_pin = hal.gpio->channel(RED_PIN);
|
||||
green_pin = hal.gpio->channel(GREEN_PIN);
|
||||
blue_pin = hal.gpio->channel(BLUE_PIN);
|
||||
|
||||
red_pin->mode(HAL_GPIO_OUTPUT);
|
||||
green_pin->mode(HAL_GPIO_OUTPUT);
|
||||
blue_pin->mode(HAL_GPIO_OUTPUT);
|
||||
|
||||
red_pin->write(0);
|
||||
green_pin->write(0);
|
||||
blue_pin->write(0);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// set_rgb - set color as a combination of red, green and blue values
|
||||
bool Navio2LED::hw_set_rgb(uint8_t red, uint8_t green, uint8_t blue)
|
||||
{
|
||||
if (red == NAVIO_LED_OFF) {
|
||||
hal.gpio->write(GPIO_C_LED_PIN, GPIO_LED_OFF);
|
||||
} else {
|
||||
hal.gpio->write(GPIO_C_LED_PIN, GPIO_LED_ON);
|
||||
}
|
||||
if (green == NAVIO_LED_OFF) {
|
||||
hal.gpio->write(GPIO_A_LED_PIN, GPIO_LED_OFF);
|
||||
} else {
|
||||
hal.gpio->write(GPIO_A_LED_PIN, GPIO_LED_ON);
|
||||
}
|
||||
if (blue == NAVIO_LED_OFF) {
|
||||
hal.gpio->write(GPIO_B_LED_PIN, GPIO_LED_OFF);
|
||||
} else {
|
||||
hal.gpio->write(GPIO_B_LED_PIN, GPIO_LED_ON);
|
||||
}
|
||||
/* We fix the GPIO polarity right here */
|
||||
|
||||
red_pin->write(!red);
|
||||
green_pin->write(!green);
|
||||
blue_pin->write(!blue);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -16,8 +16,7 @@
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __NAVIO2_LED_H__
|
||||
#define __NAVIO2_LED_H__
|
||||
#pragma once
|
||||
|
||||
#include "RGBLed.h"
|
||||
|
||||
@ -27,6 +26,8 @@ public:
|
||||
|
||||
bool hw_init(void) override;
|
||||
bool hw_set_rgb(uint8_t r, uint8_t g, uint8_t b) override;
|
||||
private:
|
||||
AP_HAL::DigitalSource *red_pin;
|
||||
AP_HAL::DigitalSource *green_pin;
|
||||
AP_HAL::DigitalSource *blue_pin;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user