Класс Manager
(Aurora::Devices::Manager)
Менеджер подключённых устройств. Подробнее...
| Подключение: | #include <manager.hpp> |
Публичные функции
| Manager(QObject *parent = nullptr) | |
| ~Manager() = default | |
| Filter & | filter() |
| QVector<UsbDevicePtr> | getUsbDevices() |
| QVector<UsbSerialDevicePtr> | getUsbSerialDevices() |
Сигналы
| void | usbDevicesUpdated(Aurora::Devices::UsbDevicePtr device, bool added) |
| void | usbSerialDevicesUpdated(Aurora::Devices::UsbSerialDevicePtr device, bool added) |
Подробное описание
Класс Aurora::Devices::Manager является точкой входа в библиотеку libdevicewarden,
предназначенную для получения информации о подключённых устройствах и управления доступом к ним
на платформе ОС Аврора. Менеджер предоставляет актуальные списки USB-устройств
и последовательных USB-устройств, а также позволяет ограничивать выборку с помощью фильтра.
Типичный сценарий использования включает создание экземпляра менеджера, настройку фильтра и получение списка устройств либо подписку на сигналы для отслеживания изменений в реальном времени.
Библиотека не выполняет непосредственный обмен данными с устройством: после получения указателя
на устройство дальнейшая работа ведётся через другие API, например libusb для USB-оборудования.
Данный класс позволяет получать списки подключённых устройств и с помощью сигналов поддерживать эти списки в актуальном состоянии.
Важно! Системная библиотека libusb не является публичным API ОС Аврора и
не предназначена для официального использования. Если для работы с USB-оборудованием
требуется libusb, разработчику необходимо собрать собственную версию библиотеки.
Пример сборки и использования libusb приведён в демонстрационном проекте
USB Use Cases.
Описание функций-членов
Manager::Manager(QObject *parent = nullptr)
Создаёт экземпляр Manager с параметрами по умолчанию. Созданный экземпляр менеджера изначально
использует пустой фильтр, то есть охватывает все доступные устройства, если иное не настроено
через вызов filter().
[default] Manager::~Manager()
Уничтожает экземпляр Manager.
Деструктор объявлен как default, поскольку класс не требует дополнительного освобождения ресурсов.
Все полученные через менеджер указатели на устройства управляются библиотекой libdevicewarden
и не должны освобождаться вызывающей стороной.
Filter &Manager::filter()
Возвращает текущий фильтр, используемый менеджером.
Метод возвращает ссылку на объект Aurora::Devices::Filter, связанный с данным экземпляром
менеджера. Фильтр позволяет задать условия, которым должно удовлетворять устройство, чтобы попасть
в список или стать источником сигнала. Условия задаются через оператор << или метод add()
и могут включать тип интерфейса, класс устройства, идентификатор производителя (VendorId),
идентификатор продукта (ProductId) и серийный номер. Изменения, внесённые в фильтр, немедленно
влияют на результаты последующих вызовов getUsbDevices() и getUsbSerialDevices().
QVector<UsbDevicePtr> Manager::getUsbDevices()
Возвращает список USB-устройств, соответствующих текущему фильтру.
Метод выполняет синхронный запрос к менеджеру устройств и возвращает вектор указателей на объекты
UsbDevicePtr. Каждый указатель предоставляет доступ к свойствам устройства, таким как серийный
номер, идентификаторы производителя и продукта, а также файловый дескриптор для дальнейшей работы
через libusb. Если фильтр не настроен, возвращаются все USB-устройства, доступные приложению
с учётом белого списка.
QVector<UsbSerialDevicePtr> Manager::getUsbSerialDevices()
Возвращает список подключённых последовательных USB-устройств, соответствующих текущему фильтру.
Метод аналогичен getUsbDevices(), но предназначен для устройств последовательного интерфейса,
представленных типом UsbSerialDevicePtr. Такие устройства могут использоваться для организации
последовательного обмена данными. Возвращаемый список также ограничивается текущими условиями
фильтра.
[signal] void Manager::usbDevicesUpdated(Aurora::Devices::UsbDevicePtr device, bool added)
Испускается при изменении списка подключенных USB-устройств. Если added равно true, устройство
device подключилось; иначе — отключилось. Применяется только к устройствам, удовлетворяющим
текущим критериям фильтрации.
Сигнал позволяет приложению реагировать на события подключения и отключения без периодического опроса. Подписка на сигнал обеспечивает событийную модель работы: при добавлении или удалении устройства, соответствующего фильтру, приходит уведомление с указателем на устройство и признаком направления изменения. Если фильтр впоследствии изменяется, дальнейшие сигналы будут отражать только устройства, удовлетворяющие новым условиям.
См. также filter().
[signal] void Manager::usbSerialDevicesUpdated(Aurora::Devices::UsbSerialDevicePtr device, bool added)
Испускается при изменении списка подключенных последовательных USB-устройств. Если added равно
true, устройство device подключилось; иначе — отключилось. Применяется только к устройствам,
удовлетворяющим текущим критериям фильтрации.
Сигнал функционирует аналогично usbDevicesUpdated, но относится к устройствам последовательного
интерфейса. Его использование целесообразно в приложениях, работающих с последовательными
USB-адаптерами, когда требуется динамически отслеживать появление и исчезновение таких устройств.
См. также filter().