- 0. Введение
- 1. Введение в журнал HCI
- 1.1 Функция журнала HCI
- 1.2 Базовая архитектура системы Bluetooth
- 2. Как захватить журнал HCI
- 3. Инструмент анализа журнала HCI
- 4. Журнал HCI-Bluetooth процесс сканирования устройства анализа процесса
- 4.1 Структура пакета данных HCI Command
- 4.2 Команда фильтра запроса
- 4.3 Анализ процесса сканирования
- 5. Ссылка
- Интеллектуальная рекомендация
- Механизм суждения о мусоре JVM
- Qt
- C Note(NO.1)
- Распределение IBC и Палитра печати CU в HEVC-SCC
- Индуктивность цветного кольца, PIC Port Output 20170608 Четверг
- Android: как получить информацию о подключенной bluetooth гарнитуре?
0. Введение
Для разработчиков Bluetooth журнал HCI может помочь нам лучше проанализировать проблему и понять протокол Bluetooth, так же как при разработке сети необходимо использовать Wireshark для анализа сетевых протоколов.
Эта статья в основном представляетРоль журнала HCI、Как получить копию журнала HCIИ объединитьПрактический примерПроиллюстрироватьКак анализировать журнал HCI。
1. Введение в журнал HCI
1.1 Функция журнала HCI
Журнал HCI используется для анализа поведения взаимодействия между устройствами BluetoothСоответствует ли это ожиданиям?,Исполните с спецификацией Bluetooth, В повседневной разработке журнал HCI обычно используется для нескольких вещей:
- Анализировать ошибки: Устройство не может быть найдено после включения Bluetooth или у искомого устройства нет имени, но есть только адрес Bluetooth, телефоны Android не могут передавать файлы на телефоны Apple .
- анализ спроса: Мобильный телефон должен быть оснащен селфи-палкой Bluetooth для управления фотосъемкой. Через журнал HCI вы можете наблюдать, какой профиль Bluetooth используется конкурирующими продуктами при реализации этой функции? Пока мы знаем, что профиль Bluetooth используется, у нас есть идея реализовать эту функцию.
- Изучение протокола Bluetooth: Используйте журнал HCI, чтобы помочь в изучении протокола Bluetooth, так же, как изучение TCP / IP путем захвата пакетов через wireshark
1.2 Базовая архитектура системы Bluetooth
Сказав так много использований журнала HCI, если мы хотим лучше понять журнал HCI, нам нужно сначала взглянуть на положение HCI во всей архитектуре базовой системы Bluetooth. Для облегчения понимания я буду использовать архитектуру базовой системы Bluetooth3 слоя абстракции:
- User Application(Host)Пользовательское приложение — это прикладной уровень, также называемый Host, мы называем Bluetooth API, относящийся к прикладному уровню, например,BluetoothAdapterИнтерфейс предоставлен в.
- HCI (Host controller Interface): Когда верхний уровень вызывает Bluetooth API,Не будет напрямую манипулировать нижним слоем Bluetooth(Контроллер) связанный интерфейс, ноОтправьте Команду соответствующей операции Контроллеру через HCIИ затем вернуть результат выполнения после того, как нижний уровень выполнит команду,То есть контроллер отправляет событие в HCI, а затем HCI уведомляет прикладной уровеньHCI сыграласредний слойРоль.
- Controller: Контроллер находится на самом низком уровне, который можно понимать как чип Bluetooth на нашем мобильном телефоне.
Абстрактная архитектура Bluetooth
Полная базовая архитектура системы Bluetooth более сложна, поэтому мы не будем вдаваться в подробности. Заинтересованные студенты могут обратиться к спецификации Bluetooth.Core_v4.2.pdf, Есть подробные определения и введения. Когда мы проанализируем журнал HCI позже, мы также будем ссылаться на контент, определенный в этой спецификации.
Полная архитектура Bluetooth
2. Как захватить журнал HCI
Открыть в настройках разработчикаВключить журнал сбора информации Bluetooth HCIПереключатель, система Android будет автоматически собирать журнал HCI и сохранять его на телефоне.
Включить журнал сбора информации Bluetooth HCI
Различные платформы хранят журнал HCI по разным путям.MTKПуть для хранения журнала HCI/sdcard/mtklog/btlog/btsnoop_hci.log,QualcommПуть хранения/sdcard/btsnoop_hci.log
MTK:/ $ ls -l /sdcard/mtklog/btlog/ total 816 -rw-rw---- 1 root sdcard_rw 412258 2016-02-28 00:39 btsnoop_hci.log [email protected]:/ $ ls -l /sdcard/btsnoop_hci.log -rw-rw---- root sdcard_rw 12744 2017-06-16 15:43 btsnoop_hci.log
Если в указанном выше пути нет журнала HCI, мы все равно можем использоватьФайл конфигурации Bluetooth bt_stack.conf для просмотра пути, Bt_stack.conf находится/etc/bluetooth/Под тропой. Путь к журналу HCI пройденBtSnoopFileName=/sdcard/btsnoop_hci.logЧтобы настроить это.
Путь регистрации HCI на мобильном телефоне
И bt_stack.conf через исходный код Android/system/bt/conf/bt_stack.confНастроить.
// /system/bt/conf/bt_stack.conf # BtSnoop log output file BtSnoopFileName=/sdcard/btsnoop_hci.log
Вытащите захваченный журнал HCI и откройте его непосредственно с помощью Блокнота. Все, что вы видите, — искаженные символы. Нам также нужен инструмент анализа журнала HCI:Frontline ComProbe Protocol Analysis System
C:\Windows\System32>adb pull /sdcard/mtklog/btlog/btsnoop_hci.log C:\Users\admin\Desktop\hci 501 KB/s (4880 bytes in 0.009s)
3. Инструмент анализа журнала HCI
Frontline ComProbe Protocol Analysis SystemЭто инструмент анализа журнала протокола Bluetooth, предоставленный Frontline. Компания Frontine в основном используется для захвата устройств регистрации Bluetooth Air Sniff. Давайте поговорим о регистрации Air Sniff позже. Приобрести их инструмент захвата пакетов будет поставляться с инструментом анализа журнала, вы также можетеFrontine официальный сайтЗагрузите и загрузите, вам нужно заполнить некоторую информацию при загрузке, студенты, которые находят проблемы, могут перейти к другимНеофициальный сайтСкачивать.
После завершения установки найдите Frontline ComProbe Protocol Analysis System в меню «Пуск» и используйте Capture File Viewer, чтобы открыть журнал HCI.
ComProbe Protocol Analysis System
Step 1. Сначала выберитеОткрыть журнал HCIИ выберите тип журнала какBtSnoop Files, То есть файл, оканчивающийся на * .log.
Другой способ — изменить суффикс btsnoop_hci.log на btsnoop_hci.cfa, а затем открыть его непосредственно с помощью Capture File Viewer.
Шаг 1. Откройте журнал HCI
Step 2. После открытия файла журнала выберитеFrame DisplayВы можете увидеть журнал HCI, который мы взяли
Шаг 2. Выберите Frame Display
Основной интерфейс Frame Display
Step 3В окне Frame Display имеется множество вкладок, которые могут отображать различные типы протоколов в стеке протоколов, например: журналы, относящиеся к HCI, размещаются на вкладке HCI,Hands-Free(HFP)принадлежатПрофиль Bluetooth на прикладном уровне, Журналы операций, связанных с HFP, размещаются на вкладке Hands-Free.
- Air sniff log
Журнал HCI, записанный на устройстве Android, может анализировать только проблему между Хостом и Контролем. Когда взаимодействие между Хостом и Контролем нормальное, оно может бытьВо время передачи (Air Interface)Если что-то пойдет не так, вам нужно проанализировать журнал Air Sniff. Журнал Air Sniff может захватывать воздушные пакеты двух устройств Bluetooth во время передачи данных. Для захвата журнала Air Sniff требуется специальное оборудование.
4. Журнал HCI-Bluetooth процесс сканирования устройства анализа процесса
Прикладной уровень вызываетstartDiscovery()При выполнении сканирования устройства,HostВышлю один через HCIInquiry HCI CommandдайтеController, Далее мы изучим процесс запроса, проанализировав журнал HCI. Прежде чем анализировать журнал HCI, давайте изучимПакет команд HCIСтруктура.
4.1 Структура пакета данных HCI Command
Структура пакета данных команды HCI определена в спецификации основного протокола BluetoothCore_v4.2.pdfв.
Формат пакета данных команды HCI выглядит следующим образом, началоКод операции — это уникальный идентификатор, который различает различные типы команд, Код операции поOpCode Group Field (OGF) с участием OpCode Command Field (OCF)сочинение. В соответствии со значением OGF, команды HCI могут быть классифицированы. Формула вычисления OpCode: ** OpCode = OGF , С помощью метода расчета OpCode мы можемФильтруйте указанный тип Команды HCI в ** Журнале HCI через OpCode.
4.2 Команда фильтра запроса
Inquiry CommandдаLink Control commandТип команды по запросуBluetooth Core SpecificationизVol 2->Part E->7.1 LINK CONTROL COMMANDSРаздел, мы можем увидеть команду Link ControlЗначение OCF 0x0001。
Каталог спецификаций Bluetooth Core
For the Link Control commands, the OGF is defined as 0x01
Система анализа протокола ComProbe поддерживает функцию фильтрации черезУстановить фильтрЖурнал, код операции которого 0x0401, может быть отфильтрован, метод установки следующий:
4.3 Анализ процесса сканирования
- Хост отправляет команду HCI_Inquiry
Прикладной уровень собирается сканировать устройства Bluetooth, хост сначала отправляет команду HCI_Inquiry для уведомления контроллера
- Контроллер отвечает на событие HCI
После того, как контроллер получит команду HCI_Inquiry, он будетОтвет на событие HCI с командным статусом, Для представления состояния после того, как Контроллер выполняет HCI_Inquiry, а именноStatus:Success, Если вы посмотрите внимательно, то обнаружите, что метки кадров двух журналов HCI расположены рядом друг с другом, номер кадра HCI_Inquiry равен 196, а номер кадра состояния команд равен 197.
2. Результаты сканирования
Сканирование завершеноПозже контроллер отправит событие:HCI Extended Inquiry Result, Поиск в спискеJabra Classic v0.5.3Например, его пакет результатов расширенного запроса HCI будет содержатьНазвание оборудования, ЭтоUUID поддерживаемого Сервиса,с участиемТип оборудования:Wearable Headset deviceПоэтому Icon of Jabra Classic v0.5.3 являетсяЗначок наушников。
HCI расширенный запрос Результат Jabra Classic v0.5.3
5. Ссылка
из: рубцевание раны должно
Ссылка: https://www.jianshu.com/p/73f7366161d1
Источник: Цзяньшу
Авторские права принадлежат автору. Для коммерческих перепечаток, пожалуйста, свяжитесь с автором для авторизации. Для некоммерческих перепечаток, пожалуйста, укажите источник.
Интеллектуальная рекомендация
Механизм суждения о мусоре JVM
Механизм суждения о мусоре JVM 1. Метод подсчета цитирования (в основном не используется) Добавьте справочный счетчик в объект. Когда есть место для его упоминания, значение счетчика равна 1 Когда эта.
Qt
Краткое описание QPainterPath( ), , , : 、 、 。 , — , QPainterPathStroker。 | : 、 , 。 QPainterPathStroker , : QPainterPath path, QPainterPathStroker::createStroke(path), path QPainterPath outlinePath,out.
C Note(NO.1)
Ключевые слова: Void, функция: объявления без возвращаемого значения или функции параметров, а оператор не имеет указателя типа. Чар, функция: данные типа символа. Int, функция: целочисленные данные, .
Распределение IBC и Палитра печати CU в HEVC-SCC
Для кодирования изображения содержимого экрана внутреннее предсказание включает в себя обычный режим внутреннего предсказания Intra, внутриблочное копирование IntraBlockCopy и режим палитры Palette. Л.
Индуктивность цветного кольца, PIC Port Output 20170608 Четверг
1. Метод идентификации индуктивности цветного кольца: например: цвет индуктивности цветного кольца: оранжевое золото и серебро. Метод чтения: первые два цветных кольца указывают на эффективное число: .
Android: как получить информацию о подключенной bluetooth гарнитуре?
К телефону подключена блютуз гарнитура. Есть два вопроса:
1) Как получить информацию о гарнитуре: имя, mac-адрес и состояние сигнала (для оценки расстояние между телефоном и гарнитурой) (как-то можно через RSSI). На стек оверфлоу находил подобный вопрос (stackoverflow.com/questions/7169653/android-rssi-v. но там ответ касается найденных устройств.
2) Как отследить момент отключения гарнитуры (например, гарнитура лежит в комнате, а пользователь с телефоном вышел на улицу, то есть как отследить что сигнал пропал)?
А почему не обратились к официальной документации? Как понимаю для ответа и на первый, и на второй вопрос вам требуется BluetoothAdapter.
Represents the local device Bluetooth adapter. The BluetoothAdapter lets you perform fundamental Bluetooth tasks, such as initiate device discovery, query a list of bonded (paired) devices, instantiate a BluetoothDevice using a known MAC address, and create a BluetoothServerSocket to listen for connection requests from other devices.
Представляет собой локальный адаптер Bluetooth устройств.BluetoothAdapter позволяет выполнять основные задачи Bluetooth, таких как инициализация обнаружения устройств, запрос списка подключенных (спаренных) устройств, обнаружение BluetoothDevice с использованием известно MAC-адреса, а также создавание BluetoothServerSocket для прослушивания запросов на соединение с другими устройствами.
обращался к офф документации. но отследить уровень сигнала возможно только при обнаружении устройства, находящегося в режиме видимости в момент обнаружения. отследить уровень сигнала подключенного блютуз устройства я не представляю как. гугление наводит на мысль, что это невозможно
Судя по документации, отследить уровень сигнала невозможно. По крайней мере я не вижу ни одной зацепки для этого.
отследить то можно, но только в момент обнаружения устройства (RSSI )
а мне нужно было отследить уровень сигнала подключенного устройства. что невозможно.
Насколько я понимаю, тогда EXTRA_RSSI инициализируется при создании объекта BluetoothDevice и мы можем написать метод со следующим содержанием:
public String getRSSI(adsress)