From 23f7a662c65d563b0cc8a068def62c563e3413a9 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Fri, 22 Feb 2019 10:49:29 -0500 Subject: [PATCH] rgbled_ncp5623c move to px4 work queue --- .../rgbled_ncp5623c/rgbled_ncp5623c.cpp | 32 ++++++------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/src/drivers/lights/rgbled_ncp5623c/rgbled_ncp5623c.cpp b/src/drivers/lights/rgbled_ncp5623c/rgbled_ncp5623c.cpp index 0dec360493..8acae1f0a3 100755 --- a/src/drivers/lights/rgbled_ncp5623c/rgbled_ncp5623c.cpp +++ b/src/drivers/lights/rgbled_ncp5623c/rgbled_ncp5623c.cpp @@ -54,7 +54,7 @@ #include #include -#include +#include #include #include @@ -77,7 +77,7 @@ #define NCP5623_LED_OFF 0x00 /**< off */ -class RGBLED_NPC5623C : public device::I2C +class RGBLED_NPC5623C : public device::I2C, public px4::ScheduledWorkItem { public: RGBLED_NPC5623C(int bus, int rgbled); @@ -87,7 +87,6 @@ public: virtual int init(); virtual int probe(); private: - work_s _work; float _brightness; float _max_brightness; @@ -102,8 +101,7 @@ private: LedController _led_controller; - static void led_trampoline(void *arg); - void led(); + void Run() override; int send_led_rgb(); void update_params(); @@ -122,12 +120,8 @@ void rgbled_ncp5623c_usage(); extern "C" __EXPORT int rgbled_ncp5623c_main(int argc, char *argv[]); RGBLED_NPC5623C::RGBLED_NPC5623C(int bus, int rgbled) : - I2C("rgbled1", RGBLED1_DEVICE_PATH, bus, rgbled -#ifdef __PX4_NUTTX - , 100000 /* maximum speed supported */ -#endif - ), - _work{}, + I2C("rgbled1", RGBLED1_DEVICE_PATH, bus, rgbled, 100000), + ScheduledWorkItem(px4::device_bus_to_wq(get_device_id())), _brightness(1.0f), _max_brightness(1.0f), _r(0), @@ -174,7 +168,8 @@ RGBLED_NPC5623C::init() update_params(); _running = true; - work_queue(LPWORK, &_work, (worker_t)&RGBLED_NPC5623C::led_trampoline, this, 0); + + ScheduleNow(); return OK; } @@ -187,19 +182,11 @@ RGBLED_NPC5623C::probe() return write(NCP5623_LED_CURRENT, 0x00); } -void -RGBLED_NPC5623C::led_trampoline(void *arg) -{ - RGBLED_NPC5623C *rgbl = reinterpret_cast(arg); - - rgbl->led(); -} - /** * Main loop function */ void -RGBLED_NPC5623C::led() +RGBLED_NPC5623C::Run() { if (!_should_run) { if (_param_sub >= 0) { @@ -282,8 +269,7 @@ RGBLED_NPC5623C::led() } /* re-queue ourselves to run again later */ - work_queue(LPWORK, &_work, (worker_t)&RGBLED_NPC5623C::led_trampoline, this, - USEC2TICK(_led_controller.maximum_update_interval())); + ScheduleDelayed(_led_controller.maximum_update_interval()); } /**