diff options
author | thompsa <thompsa@FreeBSD.org> | 2010-01-29 02:44:06 +0000 |
---|---|---|
committer | thompsa <thompsa@FreeBSD.org> | 2010-01-29 02:44:06 +0000 |
commit | 3aae590108131671c7d107d8d69744a7ba5da770 (patch) | |
tree | 2391978b0a29215f8e39ca3810313d7efcd63dca /lib/libusb/libusb20_ugen20.c | |
parent | 38252fbed45c05861eafac4bee6cce077316851a (diff) | |
download | FreeBSD-src-3aae590108131671c7d107d8d69744a7ba5da770.zip FreeBSD-src-3aae590108131671c7d107d8d69744a7ba5da770.tar.gz |
Add a function to check if the usb devices is still connected.
Submitted by: Hans Petter Selasky
Diffstat (limited to 'lib/libusb/libusb20_ugen20.c')
-rw-r--r-- | lib/libusb/libusb20_ugen20.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/libusb/libusb20_ugen20.c b/lib/libusb/libusb20_ugen20.c index efcca63..892ba0e 100644 --- a/lib/libusb/libusb20_ugen20.c +++ b/lib/libusb/libusb20_ugen20.c @@ -67,6 +67,7 @@ static libusb20_get_config_index_t ugen20_get_config_index; static libusb20_set_config_index_t ugen20_set_config_index; static libusb20_set_alt_index_t ugen20_set_alt_index; static libusb20_reset_device_t ugen20_reset_device; +static libusb20_check_connected_t ugen20_check_connected; static libusb20_set_power_mode_t ugen20_set_power_mode; static libusb20_get_power_mode_t ugen20_get_power_mode; static libusb20_kernel_driver_active_t ugen20_kernel_driver_active; @@ -553,6 +554,25 @@ ugen20_reset_device(struct libusb20_device *pdev) } static int +ugen20_check_connected(struct libusb20_device *pdev) +{ + uint32_t plugtime; + int error = 0; + + if (ioctl(pdev->file_ctrl, USB_GET_PLUGTIME, &plugtime)) { + error = LIBUSB20_ERROR_NO_DEVICE; + goto done; + } + + if (pdev->session_data.plugtime != plugtime) { + error = LIBUSB20_ERROR_NO_DEVICE; + goto done; + } +done: + return (error); +} + +static int ugen20_set_power_mode(struct libusb20_device *pdev, uint8_t power_mode) { int temp; |