samples: device_pm: Fix condvar usage

Use pm_device_wait() to properly wait an operation to finish.

Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
This commit is contained in:
Flavio Ceolin 2021-05-18 23:21:35 -07:00 committed by Anas Nashif
commit ff1613c80f

View file

@ -15,7 +15,6 @@ static const struct device *parent;
static int dummy_open(const struct device *dev) static int dummy_open(const struct device *dev)
{ {
int ret; int ret;
struct k_mutex wait_mutex;
printk("open()\n"); printk("open()\n");
@ -32,10 +31,7 @@ static int dummy_open(const struct device *dev)
printk("Async wakeup request queued\n"); printk("Async wakeup request queued\n");
k_mutex_init(&wait_mutex); (void) pm_device_wait(dev, K_FOREVER);
k_mutex_lock(&wait_mutex, K_FOREVER);
(void) k_condvar_wait(&dev->pm->condvar, &wait_mutex, K_FOREVER);
k_mutex_unlock(&wait_mutex);
if (atomic_get(&dev->pm->state) == PM_DEVICE_STATE_ACTIVE) { if (atomic_get(&dev->pm->state) == PM_DEVICE_STATE_ACTIVE) {
printk("Dummy device resumed\n"); printk("Dummy device resumed\n");