Bluetooth
Bluetooth обеспечивает обмен данными между двумя устройствами на небольшом расстоянии. В ОС Аврора используются компоненты Bluetooth с открытым исходным кодом, такие как BlueZ и ObexD. BlueZ и Obexd запускаются в качестве демона, библиотека интерфейса фреймворка Bluetooth используется для доступа приложений к BlueZ или ObexD через интерфейс D-bus.
Распределение звука Bluetooth управляется через PulseAudio.
Ниже на рисунке представлена архитектура Bluetooth на ОС Аврора.
Фреймворк Bluetooth позволяет взаимодействовать с пользователем. Он контролирует демоны BlueZ, ObexD и PulseAudio. Bluetooth обеспечивает стандартный интерфейс между чипом и точкой доступа Bluetooth, называемой HCI (Host Controller Interface, интерфейс хост-контроллер). HCI может быть реализован на USB, UART, SDIO, но для мобильной среды UART используется чаще. В зависимости от производителя чипа активация интерфейса HCI может быть разной. Поставщик обеспечивает конфигурацию HCI и первичные скрипты. Например, Broadcom и Spreadtrum обеспечивают прошивки и инструмент загрузки. ОС Аврора поддерживает Bluetooth версии 4.х. Фреймворк Bluetooth в ОС Аврора основан на проекте BlueZ с открытым исходным кодом. BlueZ предоставляет API D-Bus.
Следующие компоненты необходимы для работы с Bluetooth:
- приложение, контролирующее демоны BlueZ, ObexD и PulseAudio;
- ObexD, который является демоном передачи объектами;
- BluetoothD, который является центральным демоном Bluetooth;
- подсистема Bluetooth, предоставляющая unix-сокет Bluetooth. Доступ к каждому протоколу обеспечивается соответствующим сокетом;
- драйвер Bluetooth, который является чипом драйвера. В случае UART ядро Linux обеспечивает интерфейс. Конфигурация GPIO (general-purpose input/output, интерфейс ввода/вывода общего назначения), rfkill (управление радиочастотой) и управление энергопотреблением могут быть обработаны поставщиком и инженером портирования.
В ОС Аврора поддерживаются следующие профили:
- A2DP 1.2 (Advanced Audio Distribution Profile, расширенный профиль распространения аудио) — позволяет передавать музыку с устройства на базе ОС Аврора на аксессуары Bluetooth, такие как беспроводные наушники, динамики и автомобильные аудиосистемы. ОС Аврора поддерживает кодек SBC, но не кодеки MP3 или APTХ;
- HFP 1.5 (Hands-Free Protocol, протокол Hands-Free) — обеспечивает передачу звука с телефонного звонка на аксессуар Bluetooth или на автомобильную аудиосистему;
- HSP 1.2 (Headset Profile, профиль гарнитуры) — позволяет использовать Bluetooth-гарнитуры с устройства на базе ОС Аврора;
- AVCTP 1.3 (Audio/Video Control Transport Protocol, транспортный протокол управлением аудио/видео);
- AVDTP 1.2 (Audio/Video Distribution Transport Protocol, транспортный протокол распределения аудио/видео);
- AVRCP 1.0 (Audio/Video Remote Control Profile, профиль дистанционного управления аудио/видео) — позволяет использовать устройство на базе ОС Аврора в качестве простого дистанционного управления к другим устройствам Bluetooth: команды для устройств «воспроизведение, стоп, пауза» и т. д. ОС Аврора не поддерживает метаданные мультимедиа;
- GAVDP 1.2 (General Audio/Video Distribution Profile, общий профиль распространения аудио/видео) — предоставляет возможность совместного использования аудио и видео через Bluetooth с другими устройствами;
- OPP 1.1 (Object Push Profile, профиль для пересылки объектов) — позволяет инициировать передачу по Bluetooth c устройства на базе ОС Аврора без устройства-получателя;
- SPP 1.1 (Serial Port Profile, профиль серийного порта) — исключает необходимость в наличии физического разъема серии RS-232 на устройстве;
- PBAP 1.0 (Phone Book Access Profile, профиль доступа к телефонной книге) — позволяет просматривать телефонную книгу с другого устройства, например на приборной панели автомобиля;
- HID 1.0 (Human Interface Device, устройство взаимодействия с человеком) — позволяет использовать HID устройства, например клавиатуры и мыши.
При разработке приложений для ОС Аврора доступ к функциям BlueZ можно упростить, воспользовавшись libbluez-qt, предоставляющей модуль QML и API Qt.