You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.6 KiB
47 lines
1.6 KiB
#pragma once |
|
|
|
#include "RGBLed.h" |
|
|
|
class RCOutputRGBLed: public RGBLed { |
|
public: |
|
RCOutputRGBLed(uint8_t red_channel, uint8_t green_channel, |
|
uint8_t blue_channel, uint8_t led_off, uint8_t led_full, |
|
uint8_t led_medium, uint8_t led_dim); |
|
RCOutputRGBLed(uint8_t red_channel, uint8_t green_channel, |
|
uint8_t blue_channel); |
|
|
|
protected: |
|
bool hw_init() override; |
|
virtual bool hw_set_rgb(uint8_t red, uint8_t green, uint8_t blue) override; |
|
virtual uint16_t get_duty_cycle_for_color(const uint8_t color, const uint16_t usec_period) const; |
|
|
|
private: |
|
uint8_t _red_channel; |
|
uint8_t _green_channel; |
|
uint8_t _blue_channel; |
|
}; |
|
|
|
class RCOutputRGBLedInverted : public RCOutputRGBLed { |
|
public: |
|
RCOutputRGBLedInverted(uint8_t red_channel, uint8_t green_channel, uint8_t blue_channel) |
|
: RCOutputRGBLed(red_channel, green_channel, blue_channel) |
|
{ } |
|
protected: |
|
virtual uint16_t get_duty_cycle_for_color(const uint8_t color, const uint16_t usec_period) const override; |
|
}; |
|
|
|
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); |
|
} |
|
};
|
|
|