ardupilot/libraries/SITL/SIM_GPIO_LED_RGB.cpp

39 lines
873 B
C++

#include "SIM_config.h"
#if AP_SIM_GPIO_LED_RGB_ENABLED
#include "SIM_GPIO_LED_RGB.h"
#include <SITL/SITL.h>
using namespace SITL;
void GPIO_LED_RGB::init()
{
leds.init();
rgbled.init();
}
void GPIO_LED_RGB::update(const class Aircraft &aircraft)
{
if (!init_done) {
init();
init_done = true;
}
const uint16_t pin_mask = AP::sitl()->pin_mask.get();
const bool red = ((pin_mask & uint16_t((1U<<LED_RED_PIN))) != 0);
const bool green = ((pin_mask & uint16_t((1U<<LED_GREEN_PIN))) != 0);
const bool blue = ((pin_mask & uint16_t((1U<<LED_BLUE_PIN))) != 0);
const bool new_led_states[3] { red, green, blue };
leds.set_state(new_led_states);
// FIXME: check why we need to "!" here; do we need to move
// ON_VALUE into here?
rgbled.set_colours((!red)*255, (!green)*255, (!blue)*255);
}
#endif