Libdevicewarden
Аврора ОС предоставляет библиотеку libdevicewarden для доступа к подключенным устройствам. На
данный момент поддерживаются:
Доступ к устройствам предоставляется с помощью Aurora::Devices::Manager.
Для каждого типа устройств библиотека предоставляет набор геттеров для идентификации. Кроме того,
она обеспечивает управляемый доступ к узлу устройства. При наличии соответствующих разрешений от
системного администратора, приложение сможет получить доступ к файловому дескриптору определённого
узла устройства. Для дальнейшей работы используются другие системные API (такие как libusb для
USB-оборудования).
Обычно сценарий работы выглядит следующим образом:
libusb_context* context;
libusb_device_handle *devh;
libusb_device_descriptor desc;
libusb_set_option(context, LIBUSB_OPTION_NO_DEVICE_DISCOVERY, nullptr);
libusb_init(&context);
auto manager = new Aurora::Devices::Manager();
auto usbDevices = manager->getUsbDevices();
for (const auto& device: usbDevices) {
if (device->serial() == "example") {
libusb_wrap_sys_device(context, (intptr_t)device->fileDescriptor(), &devh);
auto usbDevice = libusb_get_device(devh);
libusb_get_device_descriptor(usbDevice, &desc);
auto data = new uint8_t[255];
libusb_get_string_descriptor_ascii(devh, desc.iProduct, data, 255);
...
}
}