|
|
|
@ -41,19 +41,17 @@
@@ -41,19 +41,17 @@
|
|
|
|
|
|
|
|
|
|
#include <string.h> |
|
|
|
|
|
|
|
|
|
#include <drivers/device/device.h> |
|
|
|
|
#include <lib/led/led.h> |
|
|
|
|
#include <px4_platform_common/getopt.h> |
|
|
|
|
#include <px4_platform_common/px4_work_queue/ScheduledWorkItem.hpp> |
|
|
|
|
|
|
|
|
|
class RGBLED_PWM : public device::CDev, public px4::ScheduledWorkItem |
|
|
|
|
class RGBLED_PWM : public px4::ScheduledWorkItem |
|
|
|
|
{ |
|
|
|
|
public: |
|
|
|
|
RGBLED_PWM(); |
|
|
|
|
virtual ~RGBLED_PWM(); |
|
|
|
|
|
|
|
|
|
virtual int init(); |
|
|
|
|
virtual int probe(); |
|
|
|
|
int init(); |
|
|
|
|
int status(); |
|
|
|
|
|
|
|
|
|
private: |
|
|
|
@ -73,7 +71,6 @@ private:
@@ -73,7 +71,6 @@ private:
|
|
|
|
|
int get(bool &on, bool &powersave, uint8_t &r, uint8_t &g, uint8_t &b); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
extern "C" __EXPORT int rgbled_pwm_main(int argc, char *argv[]); |
|
|
|
|
extern int led_pwm_servo_set(unsigned channel, uint8_t value); |
|
|
|
|
extern unsigned led_pwm_servo_get(unsigned channel); |
|
|
|
|
extern int led_pwm_servo_init(void); |
|
|
|
@ -87,7 +84,6 @@ RGBLED_PWM *g_rgbled = nullptr;
@@ -87,7 +84,6 @@ RGBLED_PWM *g_rgbled = nullptr;
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
RGBLED_PWM::RGBLED_PWM() : |
|
|
|
|
CDev("rgbled_pwm", RGBLED_PWM0_DEVICE_PATH), |
|
|
|
|
ScheduledWorkItem(MODULE_NAME, px4::wq_configurations::lp_default) |
|
|
|
|
{ |
|
|
|
|
} |
|
|
|
@ -106,7 +102,6 @@ int
@@ -106,7 +102,6 @@ int
|
|
|
|
|
RGBLED_PWM::init() |
|
|
|
|
{ |
|
|
|
|
/* switch off LED on start */ |
|
|
|
|
CDev::init(); |
|
|
|
|
led_pwm_servo_init(); |
|
|
|
|
send_led_rgb(); |
|
|
|
|
|
|
|
|
@ -118,12 +113,6 @@ RGBLED_PWM::init()
@@ -118,12 +113,6 @@ RGBLED_PWM::init()
|
|
|
|
|
return OK; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int |
|
|
|
|
RGBLED_PWM::probe() |
|
|
|
|
{ |
|
|
|
|
return PX4_OK; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int |
|
|
|
|
RGBLED_PWM::status() |
|
|
|
|
{ |
|
|
|
@ -134,8 +123,8 @@ RGBLED_PWM::status()
@@ -134,8 +123,8 @@ RGBLED_PWM::status()
|
|
|
|
|
|
|
|
|
|
if (ret == OK) { |
|
|
|
|
/* we don't care about power-save mode */ |
|
|
|
|
DEVICE_LOG("state: %s", on ? "ON" : "OFF"); |
|
|
|
|
DEVICE_LOG("red: %u, green: %u, blue: %u", (unsigned)r, (unsigned)g, (unsigned)b); |
|
|
|
|
PX4_INFO("state: %s", on ? "ON" : "OFF"); |
|
|
|
|
PX4_INFO("red: %u, green: %u, blue: %u", (unsigned)r, (unsigned)g, (unsigned)b); |
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
PX4_WARN("failed to read led"); |
|
|
|
@ -240,14 +229,13 @@ rgbled_usage()
@@ -240,14 +229,13 @@ rgbled_usage()
|
|
|
|
|
PX4_INFO("missing command: try 'start', 'status', 'stop'"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int |
|
|
|
|
extern "C" __EXPORT int |
|
|
|
|
rgbled_pwm_main(int argc, char *argv[]) |
|
|
|
|
{ |
|
|
|
|
int myoptind = 1; |
|
|
|
|
int ch; |
|
|
|
|
const char *myoptarg = nullptr; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* jump over start/off/etc and look at options first */ |
|
|
|
|
while ((ch = px4_getopt(argc, argv, "a:b:", &myoptind, &myoptarg)) != EOF) { |
|
|
|
|
switch (ch) { |
|
|
|
|