Skip to content

Commit 5850509

Browse files
committed
pbio/drv/legodev/pup_uart: Fix power requirement check.
If a device was busy on program exit, the check for power requirements returns ERROR_AGAIN as expected. But this caused the device capabilities not to be read, thus turning off the power to the ultrasonic sensor if the light was being set.
1 parent bc0eea1 commit 5850509

File tree

2 files changed

+6
-9
lines changed

2 files changed

+6
-9
lines changed

lib/pbio/drv/legodev/legodev_pup.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -604,9 +604,10 @@ bool pbdrv_legodev_needs_permanent_power(pbdrv_legodev_dev_t *legodev) {
604604
return false;
605605
}
606606

607-
// Get device information, and check if device is ready.
607+
// Get device information as test for device presence and to read properties.
608608
pbdrv_legodev_info_t *info;
609-
if (pbdrv_legodev_get_info(legodev, &info) != PBIO_SUCCESS) {
609+
pbio_error_t err = pbdrv_legodev_get_info(legodev, &info);
610+
if (err != PBIO_SUCCESS && err != PBIO_ERROR_AGAIN) {
610611
return false;
611612
}
612613

lib/pbio/drv/legodev/legodev_pup_uart.c

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1356,14 +1356,10 @@ pbio_error_t pbdrv_legodev_get_info(pbdrv_legodev_dev_t *legodev, pbdrv_legodev_
13561356
if (!port_data) {
13571357
return PBIO_ERROR_NO_DEV;
13581358
}
1359-
1360-
pbio_error_t err = pbdrv_legodev_is_ready(legodev);
1361-
if (err != PBIO_SUCCESS) {
1362-
return err;
1363-
}
1364-
1359+
// Info is set even in case of error. Caller can decide what values apply
1360+
// based on the error code.
13651361
*info = &port_data->device_info;
1366-
return PBIO_SUCCESS;
1362+
return pbdrv_legodev_is_ready(legodev);
13671363
}
13681364

13691365
#endif // PBDRV_CONFIG_LEGODEV_PUP_UART

0 commit comments

Comments
 (0)