diff --git a/src/drivers/device/vdev_posix.cpp b/src/drivers/device/vdev_posix.cpp index f9a6ebc559..86c2230526 100644 --- a/src/drivers/device/vdev_posix.cpp +++ b/src/drivers/device/vdev_posix.cpp @@ -54,24 +54,10 @@ using namespace device; extern "C" { -struct timerData { - sem_t &sem; - struct timespec &ts; - - timerData(sem_t &s, struct timespec &t) : sem(s), ts(t) {} - ~timerData() {} -}; - static void timer_cb(void *data) { - struct timerData *td = (struct timerData *)data; - - if (td->ts.tv_sec) { - sleep(td->ts.tv_sec); - } - usleep(td->ts.tv_nsec/1000); - sem_post(&(td->sem)); - + sem_t *p_sem = (sem_t *)data; + sem_post(p_sem); PX4_DEBUG("timer_handler: Timer expired"); } @@ -211,7 +197,6 @@ int px4_poll(px4_pollfd_struct_t *fds, nfds_t nfds, int timeout) int count = 0; int ret; unsigned int i; - struct timespec ts; PX4_DEBUG("Called px4_poll timeout = %d", timeout); sem_init(&sem, 0, 0); @@ -242,8 +227,7 @@ int px4_poll(px4_pollfd_struct_t *fds, nfds_t nfds, int timeout) // Use a work queue task work_s _hpwork; - struct timerData td(sem, ts); - hrt_work_queue(&_hpwork, (worker_t)&timer_cb, (void *)&td, 1000*timeout); + hrt_work_queue(&_hpwork, (worker_t)&timer_cb, (void *)&sem, 1000*timeout); sem_wait(&sem); // Make sure timer thread is killed before sem goes diff --git a/src/modules/uORB/uORBDevices_posix.cpp b/src/modules/uORB/uORBDevices_posix.cpp index f53867a083..96a46beea5 100644 --- a/src/modules/uORB/uORBDevices_posix.cpp +++ b/src/modules/uORB/uORBDevices_posix.cpp @@ -421,10 +421,6 @@ uORB::DeviceNode::appears_updated(SubscriberData *sd) break; } -// FIXME - the calls to hrt_called and hrt_call_after seem not to work in the -// POSIX build -#ifndef __PX4_POSIX - /* * If the interval timer is still running, the topic should not * appear updated, even though at this point we know that it has. @@ -445,7 +441,6 @@ uORB::DeviceNode::appears_updated(SubscriberData *sd) sd->update_interval, &uORB::DeviceNode::update_deferred_trampoline, (void *)this); -#endif /* * Remember that we have told the subscriber that there is data.