Fluoride — это реализация Bluetooth-подсистемы, используемая в рамках проекта Android Open Source Project (AOSP) и на многих встраиваемых Android-устройствах. Она развивалась как дальнейшее развитие ранее известного стека BlueDroid и предназначена для управления низкоуровневой обработкой Bluetooth-соединений, служб профилей и взаимодействия с аппаратными адаптерами. Fluoride сочетает в себе компоненты для управления контроллером (HCI), реализации протоколов уровня ядра и обеспечения интерфейсов для системных сервисов и приложений.
Исторически Fluoride появился как преемник или реорганизация исходного стека в AOSP, когда разработчики стремились к более модульной, поддерживаемой и переносимой реализации. В ряде версий Android рядом с Fluoride развивались и альтернативные реализации стека, такие как Gabeldorsche для некоторых областей Android 13 и выше, однако Fluoride остаётся основным стеком в проекте AOSP и в переносимых вариантах системы. В открытой документации и исходных репозиториях описаны его архитектурные слои, механизмы взаимодействия с драйверами и способы интеграции с системными сервисами Android.
- Управление HCI: взаимодействие с Bluetooth-контроллером через интерфейс HCI, обработка команд и событий.
- Поддержка профилей: реализация классических и низкоэнергетических профилей (например, A2DP, AVRCP, GATT/BLE и др.).
- Модульность: разделение на отдельные компоненты для удобства тестирования, отладки и замены частей стека.
- Совместимость с AOSP: интеграция с системными сервисами Android и предоставление API для фреймворка и приложений.
- Энергопотребление: механизмы оптимизации работы радиомодуля и управления энергопотреблением в мобильных условиях.
- Безопасность и приватность: реализация механизмов аутентификации, шифрования и политики доступа для соединений.
- Поддержка BLE: полная поддержка Bluetooth Low Energy, включая серверные и клиентские роли GATT.
- Диагностика и логирование: средства для трассировки, логирования событий и отладки взаимодействия с контроллером.