# bluez-qt

Библиотека, предоставляющая Qt-интерфейс для работы со стеком BlueZ (официальный стек Bluetooth в Linux). Она позволяет приложениям, написанным на Qt, легко интегрировать функциональность Bluetooth, такую как поиск устройств, подключение, управление сервисами и другие операции без необходимости прямого взаимодействия с низкоуровневыми D-Bus API.

## Особенности

- Qt-style API с использованием сигналов и слотов для асинхронных операций;
- полная интеграция с Qt-экосистемой и моделью объектов;
- поддержка основных профилей Bluetooth (A2DP, HFP, HID и др.);
- автоматическое управление D-Bus соединениями;
- поддержка как классического Bluetooth, так и Bluetooth Low Energy (BLE).

## Основные компоненты

Библиотека состоит из нескольких классов, которые соответствуют основным концепциям Bluetooth (подробнее с документацией можно ознакомиться [здесь](https://api.kde.org/bluezqt-module.html)):

### Управление адаптерами

Класс `BluezQt::Adapter` представляет Bluetooth-адаптер в системе. Через этот класс можно включать/выключать адаптер, запускать/останавливать обнаружение устройств, получать список устройств и управлять режимами работы адаптера.

### Управление устройствами

Класс `BluezQt::Device` представляет удаленное Bluetooth-устройство. Позволяет подключаться/отключаться, получать информацию об устройстве (имя, адрес, тип) и управлять парами. Поддерживает как классические устройства, так и BLE-устройства.);

### Управление сервисами и профилями

Библиотека предоставляет классы для работы с различными Bluetooth-профилями:

- `BluezQt::MediaPlayer` — управление медиаплеерами через AVRCP;
- `BluezQt::InputDevice` — работа с устройствами ввода (мыши, клавиатуры);
- `BluezQt::Headset` — управление гарнитурами через HSP/HFP;
- `BluezQt::Battery` — получение информации о заряде батареи устройств.

### Управление сервисами GATT (BLE)

Для работы с Bluetooth Low Energy предоставляются специализированные классы:

- `BluezQt::GattService` — представление GATT-сервиса;
- `BluezQt::GattCharacteristic` — работа с GATT-характеристиками;
- `BluezQt::GattDescriptor` — управление GATT-дескрипторами.

### Агенты и управление сопряжением

Класс `BluezQt::Agent` используется для реализации пользовательского агента, который обрабатывает запросы на сопряжение, авторизацию и другие интерактивные операции. Это позволяет приложению контролировать процесс подключения устройств.

### Центральное управление

Класс `BluezQt::Manager` является центральной точкой для доступа ко всем адаптерам и устройствам. Через него можно получить список адаптеров, зарегистрировать агент и подписаться на системные события Bluetooth.
