Сколько времени занимает сканирование устройств Bluetooth в диапазоне iPhone? - PullRequest
8 голосов
/ 08 мая 2009

Я знаю, что возможности iPhone Bluetooth не будут доступны через SDK до 3.0, но сколько времени потребуется, чтобы найти устройства в этом районе? Это зависит от количества устройств в области? Если в радиусе действия находятся около 5 устройств, должно ли сканирование для обнаружения всех из них занимать <5 секунд или> 30 секунд?

Я знаю, что существует множество неизвестных факторов, но я пытаюсь определить, могу ли я выполнить сканирование Bluetooth при запуске, если время минимально, или я должен сообщить пользователю, что он собирается сделать сканирование и может быть долгая задержка Я не могу проверить это в реальном мире, так как другие устройства Bluetooth недоступны, но я пытаюсь понять, как это может быть сконструировано.

Ответы [ 2 ]

19 голосов
/ 08 мая 2009

Не уверен, что API позволит вам делать, но команда «Интерфейс хост-контроллера Bluetooth» (HCI), лежащая в основе этого, - «Команда запроса»

Это позволит вам запрашивать информацию об устройствах в течение фиксированного времени и / или фиксированного количества ответов.

Я новичок по Bluetooth, не эксперт, но ...

Чтобы получить хотя бы 1 ответ от устройства Bluetooth, находящегося в режиме низкого энергопотребления, требуется 1,28 секунды, поэтому время запроса умножается на этот период максимум до 61,44 секунды (48 периодов), поэтому диапазон времени составляет От 1 (1,28 секунды) до 48 (61,44 секунды).

Может быть несколько устройств, которые могли бы ответить в течение одного периода 1,28 секунды.

Вы также можете указать количество принятых ответов (1..255) или 0 для неограниченного времени, например. пока не истечет время.

Вы также можете отменить запрос, если вы нашли конкретное устройство, которое искали.

Ненаучный тест с моего компьютера с использованием Bluetooth-чипа CSR с прошивкой Bluetooth 2.1 + EDR, выполняющего запрос чипа с выходом отладки через чип UART. Провел каждый запрос 10 раз и получил среднее значение результатов:

  • 1 период запроса (1,28 секунды) получено в среднем 10 уникальных блютуз адреса.
  • 5 период запроса время (6,4 секунды) дало среднее из 23 уникальных адресов Bluetooth.
  • 10 время запроса периода (12,8 секунд) дал в среднем 29 уникальных адреса Bluetooth.

Я говорю «уникальный», на самом деле результаты повторяют множество одних и тех же адресов снова и снова, хотя это может зависеть от реализации, и Apple API может возвращать только уникальные адреса.

Однако это не является представителем «реального мира», так как большинство устройств Bluetooth, находящихся здесь (мой офис), не находятся в режиме низкого энергопотребления. Я думаю, я мог бы отфильтровать ПК, ноутбуки и тестовый набор по классу устройств. Это позволило бы получить мобильные телефоны, гарнитуры, которые можно было обнаружить и т.д. ...

Запрос также может быть объединен с RSSI для получения устройств с самым сильным сигналом, но они не обязательно должны быть самыми близкими.

Для вашего сценария вы можете запросить информацию о времени и количестве устройств, например, 4 * 1,28 секунды или 10 устройств.

Подведем итог: Самое короткое время, за которое вы можете сделать запрос, составляет 1,28 секунды, и это может получить 10 +/-? устройства в области, если они не спят и рядом.

Если у вас насыщенная среда Bluetooth или (микроволновая печь идет в той же комнате), может потребоваться больше времени, чтобы найти все устройства в пределах диапазона.

2 голосов
/ 27 апреля 2014

Я знаю, что это старый вопрос, но я подумал, что мог бы кое-что добавить для любого, кто найдет этот вопрос позже.

Как Саймон Певеретт упоминает, обнаружение устройства выполняется базовой "командой запроса", которая выполняется интерфейсом хост-контроллера Bluetooth. В спецификации Bluetooth V4.0, том 2, часть E, раздел 6.1.4, спецификация гласит:

Когда общий запрос инициируется устройством Bluetooth, состояние ЗАПРОС должен длиться TGAP (100) или дольше, если только дознаватель не соберет достаточно ответов и определяет отмену состояния ЗАПРОС ранее.

В других случаях TGAP (100) поясняется как 10,24 секунды и описывается как рекомендуемое значение для промежутка времени, в течение которого устройство Bluetooth выполняет обнаружение устройства.

Другими словами, хорошая базовая линия для минимального времени, необходимого для выполнения запроса, составляет 10,24 секунды, или 8 из 1,28 секундных периодов, по которым команда запроса измеряет время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...