AP_Notify: add class to turn LED off

On early versions of minlure an RGB LED was wrongly placed next to the
barometer, causing trouble on it.

Additionally depending on the LED intensity it may be a pain to leave it
turned on for boards supposed to be used for bench testing. This allows
to disable the LED by software so we don't have to remove it.
This commit is contained in:
Lucas De Marchi 2016-01-05 18:36:38 -02:00
parent e5de4f2348
commit 4467929692
2 changed files with 19 additions and 2 deletions

View File

@ -91,7 +91,8 @@ struct AP_Notify::notify_events_type AP_Notify::events;
ToneAlarm_Linux tonealarm;
NotifyDevice *AP_Notify::_devices[] = {&toshibaled, &tonealarm};
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_MINLURE
NotifyDevice *AP_Notify::_devices[0];
RCOutputRGBLedOff led(15, 13, 14, 255);
NotifyDevice *AP_Notify::_devices[] = { &led };
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLEBRAIN2 || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXFMINI
AP_BoardLED boardled;

View File

@ -10,10 +10,26 @@ public:
RCOutputRGBLed(uint8_t red_channel, uint8_t green_channel,
uint8_t blue_channel);
bool hw_init();
bool hw_set_rgb(uint8_t red, uint8_t green, uint8_t blue);
virtual bool hw_set_rgb(uint8_t red, uint8_t green, uint8_t blue);
private:
uint8_t _red_channel;
uint8_t _green_channel;
uint8_t _blue_channel;
};
class RCOutputRGBLedOff : public RCOutputRGBLed {
public:
RCOutputRGBLedOff(uint8_t red_channel, uint8_t green_channel,
uint8_t blue_channel, uint8_t led_off)
: RCOutputRGBLed(red_channel, green_channel, blue_channel,
led_off, led_off, led_off, led_off)
{ }
/* Override the hw_set_rgb method to turn leds off regardless of the
* values passed */
bool hw_set_rgb(uint8_t red, uint8_t green, uint8_t blue) override
{
return RCOutputRGBLed::hw_set_rgb(_led_off, _led_off, _led_off);
}
};