- BlueZ vs Bluedroid bluetooth stack
- Русские Блоги
- Android BlueDroid (1) (2) (3)
- Android BlueDroid (1): обзор BlueDroid
- Android BlueDroid (2): инициализация процесса запуска BlueDroid Bluetooth
- Русские Блоги
- Знакомство с подсистемой Bluetooth Android 5.1 (1) Знакомство с bluedroid и bluetooth apk под Android
- Предисловие
- 1 Введение в структуру прикладного уровня Bluetooth
- 2 Введение в программное обеспечение Bluedroid
- 2.1 Bluedroid к интерфейсу верхнего уровня
- 2.2 Интерфейс уровня HCI в Bluedroid
- 2.2.1 Интерфейс HCI и bt-vendor в Bluedroid
- 2.2.2 Протокол уровня HCI в Bluedroid
- 2.2.3 Интерфейс HCI и уровня ядра в Bluedroid
- 2.2.4 Пример процесса слоя HCI в Bluedroid
- 2.3 Основной слой Bluedroid
- 2.3.1 Запуск основного слоя Bluedroid
- 2.3.2 Основной слой Bluedroid — часть процесса профиля
- 3 Введение в приложение Bluetooth (Bluetooth.apk)
- 3.1 Блок-схема приложения Bluetooth и внешний интерфейс
- 3.2 Интерфейс между приложением Bluetooth и bluedroid
- 3.3 Диаграмма состояний Bluetooth
- 3.4 Блок-схема частичной работы Bluetooth
- 4 Введение в уровень инфраструктуры Bluetooth
BlueZ vs Bluedroid bluetooth stack
У BlueZ много документов и всего. И из того же, я понял, что BlueZ поддерживает поддержку A2DP. И в то же время устройство Android может быть сделано как приемник A2DP, изменив файл audio.conf внутри того же самого.
Я также узнал, что с android 4.2 и далее пакет BlueZ был заменен стеком Bluedroid от Broadcom. Я много искал о стеке Bluedroid. Но я не мог найти много деталей об этом.
Надеюсь, кто-то может помочь мне со следующими сомнениями.
1). Поддерживает ли Bluedroid поддержку приемника A2DP?
2). Будет ли файл audio.conf доступен для устройств, имеющих стек bluedroid?
3). Я собираюсь написать поддержку A2DP-приемника для устройства Android, напрямую вызвав API-интерфейс BlueZ-стека. Но мой последний вопрос заключается в том, можно ли использовать его также с стеклом Bluedroid? Надежда Bluedroid – это просто расширение BlueZ.
Bluedroid – это стек, предоставляемый Broadcom и теперь с открытым исходным кодом в Android. Bluedroid не имеет отношения к bluez в любом отношении, он имеет несколько преимуществ по сравнению с bluez (я отличаюсь этим).
[1]. В настоящее время у Bluedroid нет поддержки s2dp-приемника, так как в коде, доступном исходном коде, доступна только поддержка источника a2dp
[2]. Файл Audio.conf предназначен для стека bluez, он не является частью bluedroid
[3]. Прямо называя Bluez API – я думаю, вы будете использовать вызовы dbus, но bluedroid не поддерживает вызовы методов dbus, у него есть механизм обратного вызова, поэтому он не будет работать, bluedroid не является расширением bluez.
Роль A2DP Sink теперь поддерживается в Android Lollipop (5.0). Они модифицировали исходный код Bluedroid для поддержки того же. Чтобы полностью его поддерживать, вам необходимо изменить аудио HAL (audio.h), AudioPolicyManagerBase.cpp и audio_policy.conf, а также Audio Manager, A2DPStateMachine и т. Д.
Как сказал user987500, приемник A2DP поддерживается в android L, только незначительные изменения, вы можете изменить устройство с A2DP src, чтобы потопить его. Но убедитесь, что для одного устройства может поддерживаться только одна роль, которую можно настроить из XML-файла.
Добавляя к вышеуказанным ответам, поскольку Android L, поддержка приемника вводится, но все же часть аудиопотока кода не завершена. Тем не менее, я нашел этот список изменений, в котором реализована реализация раковины a2dp, и медиа можно воспроизводить через приемное устройство, как указано в сообщении фиксации списка изменений:
Источник
Русские Блоги
Android BlueDroid (1) (2) (3)
Спасибо первому автору за предоставленный доступ, перепечатка предназначена только для удобства
Android BlueDroid (1): обзор BlueDroid
1. Пояснение к термину: (добавляется полезная информация . )
BTI F: Bluetooth Interface
BTU : Bluetooth Upper Layer
BTM: Bluetooth Manager
BTE :Bluetooth embedded system
BTA :Blueetooth application layer
CO: call out\CI: call in
HF : Handsfree Profile
HH: HID Host Profile
HL: Health Device Profile
AV:audio\vidio
ag: audio gateway
ar: audio/video registration
gattc: GATT client
BLE:
Два.BlueDroid && BlueZ
До Android 4.2 компания Google использовала официальный стек протоколов Bluetooth для Linux BlueZ. BlueZ — это фактически проект с открытым исходным кодом, выпущенный Qualcomm на основе соглашения GPL в мае 2001 года в качестве официального стека протоколов Bluetooth ядра Linux 2.4.6. С ростом популярности устройств Android BlueZ также был значительно улучшен и расширен. Например, версия BlueZ в Android 4.1 обновлена до 4.93, которая поддерживает базовую спецификацию Bluetooth 4.0 и реализует большинство профилей.
Начиная с Android 4.2, Google представил BlueDroid, который был разработан совместно с Broadcom, в исходный код Android, чтобы заменить BlueZ. Qualcomm, основатель BlueZ, также удалит BlueZ из своего эталонного дизайна Android на базе чипа и поддержит BlueDroid.
По сравнению с BlueZ наиболее похвальной частью BlueDroid является то, что его структура фрейма стала более лаконичной и ясной. Это также является хорошим преимуществом для наших инженеров: ясная и лаконичная структура делает наше мышление в процессе отладки более ясным;
1. Структурная схема фреймворка BlueDroid в Android 4.2: (Официально предоставлена Google).
(1) Приложение вызывает функцию Bluetooth системы через API в пакете android.bluetooth.
(2) Приложение под названием Bluetooth было добавлено в пространство уровня приложения. Он существует как основной процесс bluetooth системы. Он будет использовать JNI для вызова уровня Bluetooth HAL для выполнения различных запросов Bluetooth.
(3) Bluetooth HAL также является новым модулем Android 4.2, который состоит из уровня аппаратной абстракции спецификации ядра Bluetooth и уровня абстракции аппаратного обеспечения спецификации приложения Bluetooth. Благодаря изолирующему эффекту уровня HAL, верхний код можно легко трансплантировать на различные платформы микросхем.
(4) В качестве ядра всей службы Bluetooth модуль стека Bluetooth состоит из двух частей: уровня приложения Bluetooth (сокращенно BTA) и встроенной системы Bluetooth (сокращенно BTE). BTA реализует управление устройствами Bluetooth, управление статусом и некоторые спецификации приложений. BTE взаимодействует с чипом Bluetooth производителя через HCI для реализации общих функций и связанных протоколов стека протоколов Bluetooth. Кроме того, BTE также включает унифицированный интерфейс ядра (GKI), производители микросхем Bluetooth могут использовать GKI для быстрой и простой трансплантации стека протоколов Bluetooth в другие операционные системы или платформы мобильных телефонов.
(5), Vendor Extensions (расширения поставщика): разработчики могут добавлять собственные расширения для реализации модулей и компонентов, зависящих от поставщика.
(6), общая архитектура стека протоколов bluedroid:
Архитектура всей системы очень проста, потому что большинство вещей выполняется на уровне Bluedroid, а верхний уровень относится только к вызову и обратному вызову. В этой части мы проанализируем код позже для подробного анализа.
2. Архитектура кода BlueZ
Подобно Bluedroid, BlueZ также следует стандартному процессу приложения, но единственное различие между ними — DBUS BlueZ. Удаление DBUS из blueDroid делает структуру кода более понятной и гладкой. На следующем рисунке показана архитектура кода Bluetooth (официально предоставлена Google):
3、BlueDrod PK BlueZ
Хотя BlueDroid имеет тенденцию заменять BlueZ, его поддержка спецификаций приложения Bluetooth еще не завершена. Например, BlueDroid поддерживает только AVRCP 1.0, но не последнюю версию AVRCP 1.5. Таким образом, если некоторые отечественные производители микросхем или мобильных телефонов смогут завершить трансплантацию модулей, связанных с BlueZ, в BlueDroid как можно скорее, считается, что это поможет им занять лидирующие позиции во все более конкурентном мобильном мире. Кроме того, как пионер зрелой технологии беспроводной связи с низким энергопотреблением, Bluetooth в будущем будет играть все более важную роль в области носимых устройств.
Android BlueDroid (2): инициализация процесса запуска BlueDroid Bluetooth
1. Обзор процесса активации Bluetooth, как показано на следующем рисунке: init, enable
Как и общий вызов функции, верхний уровень Android передает APP -> Native -> JNI -> bluetoothinterface -> bluetooth HCIinterface. Соответствующие функции init, set_power и preload реализованы в интерфейсе HCI.
Основные функции, реализуемые функциями init и enable:
(1), создайте: btif_task / BTIF_TASK
(2), инициализировать BTE
(3), создайте: btu_task / BTU_TASK
(4) Инициализировать HCI, связанный с последовательным портом, запустить основной поток HCI: bt_hc_callback, питание чипа, инициализация параметров RF, настройки, связанные с именем адреса Bluetooth;
(5) Создайте: bt_hc_worker_thread Рабочий основной поток Bluetooth, отправьте и получите команды;
(6), инициализировать стек протокола Bluetooth;
Во-вторых, реализация функции initNative
Эта часть в основном запускает соответствующий sock, инициализирует стек протоколов, запускает btif_task, а также отслеживает и обрабатывает сообщения о состоянии, относящиеся к интерфейсу Bluetooth. Процесс реализации следующий.
1. Прикладная часть вызова функции (начиная с adatper)
packages\apps\Bluetooth\src\com\android\bluetooth\btservice\ AdapterService.java
public void onCreate() <
if (DBG) debugLog(«onCreate»);
mBinder = new AdapterServiceBinder(this);
mAdapterProperties = new AdapterProperties(this);
mAdapterStateMachine = AdapterState.make(this, mAdapterProperties);
mJniCallbacks = new JniCallbacks(mAdapterStateMachine, mAdapterProperties);
initNative (); // Вызов функции initNative;
mCallbacks = new RemoteCallbackList ();
//Load the name and address
private native boolean initNative();
2. Реализация функции JNI, эта часть такая же, как и другие реализации JNI.
packages\apps\Bluetooth\jni\com_android_bluetooth_btservice_AdapterService.cpp
static JNINativeMethod sMethods[] = <
/* name, signature, funcPtr */
packages\apps\Bluetooth\jni\com_android_bluetooth_btservice_AdapterService.cpp
Конкретная реализация функции initNative реализуется путем вызова функции init в C через структуру bt_interface_t. В то же время передайте структуру функции обратного вызова sBluetoothCallbacks. Эта структура функции более важна, и основные изменения состояния реализуются через функции в этой структуре функции обратного вызова.
static const bt_interface_t *sBluetoothInterface = NULL;
static bool initNative(JNIEnv* env, jobject obj) <
sJniCallbacksObj = env->NewGlobalRef(env->GetObjectField(obj, sJniCallbacksField));
int ret = sBluetoothInterface-> init (& sBluetoothCallbacks); // Вызов соответствующей интерфейсной функции на C
ALOGE(«Error while setting the callbacks \n»);
if ( (sBluetoothSocketInterface = (btsock_interface_t *)
Источник
Русские Блоги
Знакомство с подсистемой Bluetooth Android 5.1 (1) Знакомство с bluedroid и bluetooth apk под Android
Предисловие
Этот документ в основном знакомит с программным обеспечением уровня приложений Bluetooth на платформе Android, сначала представляет структуру уровня приложений Bluetooth, затем представляет программное обеспечение уровня Bluedroid, приложение Bluetooth (Bluetooth.apk), уровень структуры Bluetooth и, наконец, полный анализ некоторых процедур работы Bluetooth. Основанное на платформе android 5.1, задействованное оборудование bluetooth — bluetooth realtek. Этот документ в основном предназначен для начинающих пользователей Bluetooth и содержит базовые инструкции по обучению.
1 Введение в структуру прикладного уровня Bluetooth
Чтобы представить программное обеспечение уровня приложений Bluetooth на платформе Android, сначала представьте общую структуру уровня приложений Bluetooth.На рисунке 1 показана структура Bluetooth в Android. Чтобы
Рис.1 Структура прикладного уровня Bluetooth
Приложения: Android-приложения Bluetooth — это программы, использующие Bluetooth API;
java Framework: API для приложений, BluetoothAdapter, BluetoothDevice, BluetoothSocket и т. Д., Которые мы обычно используем;
BluetoothAPP: он также должен принадлежать к категории java framework, но поскольку он относительно особенный, он независим, предоставляя все сервисы верхнего уровня и взаимодействуя с нижним уровнем Bluedroid. Среди них btAdapter в основном обеспечивает основные операции Bluetooth, такие как включение, отключение, обнаружение, сопряжение, отключение пары, createRfcomm и т. Д. Остальные — соответствующие службы профиля;
Bluedroid: стек протоколов Bluetooth, обеспечивающий все фактические операции Bluetooth, переключение Bluetooth, управление Bluetooth, управление поиском, управление ссылками, реализацию различных профилей, включая HCI, ACL, SCO, L2CAP, различные профили и т. Д .;
Здесь Bluedroid разделен на три части:
BTIF (интерфейс Bluetooth): предоставляет все API, необходимые для Bluetooth.apk (с использованием HAL)
BTA (приложение Bluetooth): приложение Bluetooth, как правило, относится к реализации профиля Bluetooth на Bluedroid. Чтобы
Стек: реализация всех основных операций Bluetooth, которые делятся на btm (диспетчер Bluetooth), btu (верхний уровень Bluetooth) и т. Д.
2 Введение в программное обеспечение Bluedroid
На схеме структуры уровня приложения Bluetooth в первом разделе можно увидеть архитектуру bluedroid, но не показан интерфейс между bluedroid и нижележащим уровнем. На рис. 2 представлена структурная схема каждого слоя взаимодействия синего типа. Чтобы
Рисунок 2 Схема инфраструктуры Bluedroid
Давайте посмотрим на структуру каталогов в bluedroid и функции каждого каталога. Чтобы
Рис.3 Структура каталогов Bluedroid
audio_a2dp_hw: реализует hal для аудиоустройства bluedroid a2dp. a2dp реализован в слое hal bluedroid. Он связывается со стеком через сокет (механизм связи см. В uipc в каталоге udv);
Прикладной уровень bta: buetooth, который реализует некоторые интерфейсы прикладного уровня, но все они управляются и вызываются уровнем Btif. Чтобы
Ag:audio gateway (AG) subsystem of BTA
Ar:implementation for the audio/video registration module.
Av:implementation of the API for the advanced audio/video (AV)
* subsystem of BTA, Broadcom’s Bluetooth application layer for mobile
* phones.
Dm:API implementation file for the BTA device manager
Fs: implementation file for the file system call-in functions. //phone
Gattr: the GATT server and client implementation
Hh:host hid
btif: все функции BTIF доступны из основного Bluetooth HAL (интерфейс для связи с уровнем jni в Android-apk Bluetooth, который действительно обеспечивает интерфейс для приложения);
conf: Некоторые файлы конфигурации Bluedroid;
embdrv: в основном отвечает за кодирование sbc. SBC — это эффективный метод кодирования, предложенный специальной группой по интересам Bluetooth (SIG) для стандартного аудиокодека устройств Bluetooth. В спецификациях аудиоданных A2DP технологии Bluetooth SBC является очень важным методом кодирования аудиоданных, используемым для поддержания возможностей соединения. Это конкретная опция для MP3 и MPEG-4 AAC;
gki / osi: общий интерфейс ядра / интерфейс операционной системы, нацеленный на уровень портирования операционной системы, включая многозадачность и реализацию таймера, он фактически обеспечивает абстрактную среду многозадачности и контроля времени для кода стека для достижения цели переносимости;
hci: интерфейс управления хостом, который реализует протокол hci и соединяет уровень стека с коммуникацией нижнего уровня;
main: обработка информации о конфигурации, инициализация каждого модуля, подключение btif и hci и обеспечение интерфейса для btif для управления hci;
стек: код стека протоколов, различные профили;
udrv: функция кода состоит в том, чтобы взаимодействовать с концом сокета a2dp, командами обработки и потоком pcm данных a2dp, а медиа-задача вызывает здесь интерфейс, который на самом деле предназначен для связи с аудио-полем audio_a2dp_hw;
utils: разное, очень простое, на данный момент это функция для повышения приоритета задач a2dp;
vnd: vendor specific feature for BLE;
Существует также поставщик bt, который не включен в bluedroid. Для Bluetooth Realtek используется тот же bluedroid, но разные модули Bluetooth имеют разные библиотеки поставщиков bt. Функция этой библиотеки поставщика заключается в включении и выключении модуля Bluetooth. Откройте, закройте, настройте последовательный порт, загрузите прошивку (загрузка прошивки интерфейса USB Bluetooth реализована в драйвере).
2.1 Bluedroid к интерфейсу верхнего уровня
Bluedroid имеет несколько интерфейсов с верхним уровнем, bluedroid \ btif \ src \ bluetooth.c — это основной интерфейс, отвечающий за переключение и базовое управление Bluetooth, bluedroid \ audio_a2dp_hw \ audio_a2dp_hw.c специально для управления a2dp, а некоторые профили также предоставляют некоторые Интерфейсы, эти интерфейсы являются независимыми интерфейсами разных профилей. Среди них bluetooth.c реализует серию интерфейсов, которые вызываются верхним уровнем для управления Bluetooth. В то же время при инициализации верхний уровень передает интерфейс обратного вызова. Когда bluedroid имеет сообщение или результат необходимо уведомить на верхнем уровне, используется интерфейс обратного вызова. Однако данные профилей, таких как opp и hid Bluetooth, не передаются через интерфейс, и для обмена данными создаются интерфейсы сокетов.
2.2 Интерфейс уровня HCI в Bluedroid
Слой Hci находится в нижней части архитектуры bluedroid, взаимодействуя с bt-vendor и ядром вниз и взаимодействуя с уровнем ядра bluedroid вверху.
2.2.1 Интерфейс HCI и bt-vendor в Bluedroid
Интерфейс взаимодействия между Bluedroid и нижним уровнем реализуется кодом в каталоге hci. Загрузите библиотеку bt-vendor в файл vendor.c, используйте интерфейс, предоставляемый bt-vendor, и передайте структуру обратного вызова bt-vendor.
2.2.2 Протокол уровня HCI в Bluedroid
Уровень Hci выполняет две функции: одна — реализовать протокол уровня hci, который представляет собой известные протоколы h4 и h5, а другая — соединить уровень стека и уровень поставщика bt для реализации связи и передачи между уровнем стека и оборудованием. Чтобы
HCI имеет 4 типа пакетов (есть информация о пакете сообщения об ошибке и пакете согласования при передаче через uart, но из текущего кода они не используются, но для отправки ошибок добавляется код операции, определенный производителем. Обмен сообщениями или переговорами и т. Д.), Типы группировки показаны в Таблице 1, а форматы данных четырех групп показаны на Рисунках 4
Таблица 1 Типы пакетов HCI
Сам пакет HCI не имеет заголовка идентификации типа пакета. Во время передачи обе стороны должны иметь возможность идентифицировать тип переданного пакета. Протокол h4 должен добавить байт перед пакетом hci, чтобы различать тип пакета. Он используется сейчас Bluetooth Boardcom использует протокол h4 для передачи через uart. Из вышеупомянутых различных структур пакетов нет уникальной идентификационной метки.При передаче через uart, поскольку он разделяет канал, возникает проблема синхронизации данных, иначе невозможно найти заголовок пакета и проанализировать пакет данных. Следовательно, когда протокол h4 использует передачу uart, требуется механизм восстановления после ошибок.Пока одна из сторон связи теряет синхронизацию, требуется восстановление синхронизации. Если протокол h4 использует для передачи usb, такой проблемы не будет, usb передает разные типы пакетов через разные конечные точки, а протокол usb может гарантировать целостность пакета. Из-за проблемы синхронизации h4 с использованием передачи uart, позже появится протокол h5. Протокол h5 фактически предназначен для повторной инкапсуляции пакета протокола h4, добавления преобразования символов для достижения уникального заголовка пакета и идентификации хвоста пакета, а также добавления проверки целостности. , Даже если один пакет данных идет неправильно, следующий пакет все равно может быть правильно проанализирован без какого-либо механизма восстановления синхронизации. Пакет H5 показан на Рисунке 8
Рисунке 10. Чтобы
Из вышеизложенного видно, что протокол H5 более надежен, чем протокол H4, но в то же время рабочая нагрузка, которую необходимо обработать, также увеличивается, поэтому эффективность передачи H5 будет ниже, чем у H4. Чтобы
Протоколы H4 и H5 предоставляют один и тот же пользовательский интерфейс. Какой протокол фактически используется на уровне HCI? Теперь подход bluedroid исправлен при компиляции кода, как показано в следующем коде.
2.2.3 Интерфейс HCI и уровня ядра в Bluedroid
Интерактивный интерфейс между слоем Hci и базовым слоем bluedroid также предоставляется базовому уровню путем инкапсуляции интерфейса в структуру, а базовый уровень обеспечивает структуру обратного вызова.
2.2.4 Пример процесса слоя HCI в Bluedroid
На рисунке 11 показан процесс инициализации уровня HCI, включая инициализацию интерфейса, включение Bluetooth, открытие последовательного порта и загрузку fw. Поскольку процесс загрузки fw включает в себя несколько обратных вызовов, он не включен в следующую блок-схему.
2.3 Основной слой Bluedroid
Основной уровень Bluedroid отвечает за управление Bluetooth, обработку протокола Bluetooth, управление состоянием и т. Д. Работа всего основного уровня управляется событиями, события отправляются верхним уровнем, события для результатов обработки нижнего уровня, события для нижнего уровня для получения данных и нижнего уровня События изменения состояния, а также события тайм-аута поддерживают нормальную работу всего базового уровня. Поскольку базовый уровень Bluetooth по-прежнему не может прояснить процесс и организовать интуитивно понятную блок-схему, архитектурная диаграмма базового уровня здесь не приводится. Позже мы узнаем об архитектуре базового уровня со стороны потока кода и всего рабочего процесса.
2.3.1 Запуск основного слоя Bluedroid
Вся функция и работа Bluedroid начинается с включения Bluetooth и заканчивается отключением Bluetooth.
Как упоминалось ранее, весь базовый уровень Bluetooth управляется событиями, а обработка всех событий выполняется тремя задачами. Чтобы
btu_task: обрабатывать события, отправленные на верхний уровень, события тайм-аута, некоторые события, отправленные с верхнего уровня, а также передавать некоторые события в btif_task для обработки;
btif_task: в основном используется для обработки протокола Bluetooth, обработки потока состояния протокола и вызова различных функций обработки в соответствии с разными состояниями;
btif_media_task: используется для управления a2dp и обработки звука;
2.3.2 Основной слой Bluedroid — часть процесса профиля
Для процесса A2DP дана только схематическая блок-схема, как показано на рисунке ниже.
Для передачи файлов OPP протокол rfcomm используется на уровне bluedroid. Суть протокола rfcomm заключается в обеспечении логического канала данных между двумя устройствами Bluetooth. Верхнему уровню требуется только соединение, предоставляемое rfcomm, для передачи между двумя устройствами Bluetooth. данные. В процессе передачи файла Opp сначала подключаются два устройства, а затем устанавливается канал rfcomm. В то же время создается сокет для rfcomm и верхний уровень для передачи данных. Передача данных может быть выполнена позже. Подключение устройств и создание канала rfcomm представлены позже. Чтобы
Для устройств ввода, таких как мышь Bluetooth и клавиатура Bluetooth, используется профиль hid (устройство с человеческим интерфейсом). После установления соединения зарегистрируйте устройство uhid (dev_path = «/ dev / uhid») и отправьте данные, отправленные устройством ввода, в uhid. Для устройства за обработку входных событий отвечает драйвер hid ядра.На следующем рисунке показана блок-схема входных данных.
3 Введение в приложение Bluetooth (Bluetooth.apk)
Основная функция приложения Bluetooth — управлять статусом Bluetooth, подключаться к bluedroid и предоставлять различные услуги Bluetooth. Среди них btservice предоставляет базовые службы Bluetooth, и каждый профиль предоставляет свои собственные независимые службы.В дополнение к opp и pabp все остальные профили управляются btservice.
3.1 Блок-схема приложения Bluetooth и внешний интерфейс
Поскольку opp и pbap по сути являются передачей файлов, но включают в себя интерактивные операции пользовательского интерфейса, они существуют как две относительно независимых службы, а структура opp описана позже.
3.2 Интерфейс между приложением Bluetooth и bluedroid
Приложение Bluetooth взаимодействует с bluedroid через интерфейс jni. Приложение Bluetooth загружает библиотеку bluedroid (bluetooth.default.so) вначале, использует рабочий интерфейс, предоставляемый bluedroid, и в то же время передает структуру обратного вызова bluedroid при вызове функции init, предоставляемой интерфейсом bluedroid.
3.3 Диаграмма состояний Bluetooth
Во всем bluetooth есть несколько конечных автоматов. В дополнение к конечному автомату, который поддерживает переключатель Bluetooth и состояние сопряжения устройств, некоторые профили используют конечный автомат для поддержания состояния подключения устройства.
Описание статуса Bluetooth Bond:
Два планшета сопряжены. После завершения сопряжения они находятся в состоянии сопряжения, но еще не подключены. При необходимости передачи файлов устанавливается соединение. После завершения передачи файла соединение будет отключено. Чтобы
Когда планшет сопряжен с гарнитурой Bluetooth или устройством ввода Bluetooth (мышь Bluetooth, клавиатура), соединение будет установлено сразу после завершения сопряжения. Это связано с тем, что гарнитура Bluetooth или устройство ввода могут передавать данные в любое время.
3.4 Блок-схема частичной работы Bluetooth
4 Введение в уровень инфраструктуры Bluetooth
Поскольку роль уровня инфраструктуры Bluetooth заключается в подключении к службе Bluetooth, предоставлении интерфейса для других приложений для использования Bluetooth и выполнении роли соединения верхнего и нижнего уровней, здесь не так много логики. Ниже приводится только схематическая блок-схема, а не слишком подробное описание. Чтобы
Источник