mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
Close Lightpack device handle after error; Changed retrieve Lightpack firmware version call
Former-commit-id: 7aa38d40e9918894e602519366ac1b28d3d533a2
This commit is contained in:
parent
153e75555d
commit
e1e88ba2cf
@ -1 +1 @@
|
|||||||
616598d4b62e2da40b2deeca332718c00209acfb
|
db2c75aa5829d405c7120255af5dbee38c9272d7
|
@ -147,7 +147,7 @@ int LedDeviceLightpack::open()
|
|||||||
}
|
}
|
||||||
catch(int e)
|
catch(int e)
|
||||||
{
|
{
|
||||||
std::cerr << "unable to retrieve open Lightpack device(" << e << "): " << libusb_error_name(e) << std::endl;
|
std::cerr << "unable to open Lightpack device(" << e << "): " << libusb_error_name(e) << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -223,7 +223,8 @@ int LedDeviceLightpack::write(const std::vector<ColorRgb> &ledValues)
|
|||||||
// switches to determine what to do and some bit shuffling
|
// switches to determine what to do and some bit shuffling
|
||||||
}
|
}
|
||||||
|
|
||||||
return writeBytes(_ledBuffer.data(), _ledBuffer.size());
|
int error = writeBytes(_ledBuffer.data(), _ledBuffer.size());
|
||||||
|
return error >= 0 ? 0 : error;
|
||||||
}
|
}
|
||||||
|
|
||||||
int LedDeviceLightpack::switchOff()
|
int LedDeviceLightpack::switchOff()
|
||||||
@ -263,12 +264,14 @@ libusb_device_handle * LedDeviceLightpack::openDevice(libusb_device *device)
|
|||||||
error = libusb_detach_kernel_driver(handle, LIGHTPACK_INTERFACE);
|
error = libusb_detach_kernel_driver(handle, LIGHTPACK_INTERFACE);
|
||||||
if (error != LIBUSB_SUCCESS)
|
if (error != LIBUSB_SUCCESS)
|
||||||
{
|
{
|
||||||
|
libusb_close(handle);
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
error = libusb_claim_interface(handle, LIGHTPACK_INTERFACE);
|
error = libusb_claim_interface(handle, LIGHTPACK_INTERFACE);
|
||||||
if (error != LIBUSB_SUCCESS)
|
if (error != LIBUSB_SUCCESS)
|
||||||
{
|
{
|
||||||
|
libusb_close(handle);
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -283,6 +286,7 @@ std::string LedDeviceLightpack::getString(libusb_device * device, int stringDesc
|
|||||||
int error = libusb_get_string_descriptor_ascii(deviceHandle, stringDescriptorIndex, reinterpret_cast<unsigned char *>(buffer), sizeof(buffer));
|
int error = libusb_get_string_descriptor_ascii(deviceHandle, stringDescriptorIndex, reinterpret_cast<unsigned char *>(buffer), sizeof(buffer));
|
||||||
if (error <= 0)
|
if (error <= 0)
|
||||||
{
|
{
|
||||||
|
libusb_close(deviceHandle);
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -295,9 +299,16 @@ LedDeviceLightpack::Version LedDeviceLightpack::getVersion(libusb_device *device
|
|||||||
libusb_device_handle * deviceHandle = openDevice(device);
|
libusb_device_handle * deviceHandle = openDevice(device);
|
||||||
|
|
||||||
uint8_t buffer[256];
|
uint8_t buffer[256];
|
||||||
int error = libusb_get_descriptor(deviceHandle, LIBUSB_DT_REPORT, 0, buffer, sizeof(buffer));
|
int error = libusb_control_transfer(
|
||||||
if (error <= 3)
|
deviceHandle,
|
||||||
|
LIBUSB_ENDPOINT_IN | LIBUSB_RECIPIENT_INTERFACE,
|
||||||
|
LIBUSB_REQUEST_GET_DESCRIPTOR,
|
||||||
|
(LIBUSB_DT_REPORT << 8),
|
||||||
|
0,
|
||||||
|
buffer, sizeof(buffer), 100);
|
||||||
|
if (error < 3)
|
||||||
{
|
{
|
||||||
|
libusb_close(deviceHandle);
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user