MicroPython:Библиотеки/ubluetooth/Класс BLE/BLE.gap scan()

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


BLE.gap scan()[1]

  • BLE.gap_scan(duration_ms[, interval_us][, window_us][, active]) – запускает операцию сканирования, длящуюся заданное количество времени (в миллисекундах).

Чтобы сканирование выполнялось бесконечно, задайте в duration_ms значение «0».

Чтобы остановить сканирование, задайте в duration_ms значение None.

Опционально можно настроить коэффициент заполнения – для этого используйте аргументы interval_us и window_us. Сканирование будет длиться window_us микросекунд каждые interval_us микросекунд на протяжении duration_ms миллисекунд. По умолчанию в аргументах interval_us и window_us задано соответственно 1.28 секунд и 11.25 миллисекунд (фоновое сканирование).

С каждым результатом сканирования будет вызвано событие _IRQ_SCAN_RESULT, а данные события будут иметь формат (addr_type, addr, adv_type, rssi, adv_data).

В элементе addr_type задается тип адреса – публичный или случайный:

  • 0x00 – публичный.
  • 0x01 – случайный (либо статичный RPA, либо NRPA; тип зашифрован в самом адресе).

В элементе adv_type задается тип пакетов объявления:

  • 0x00 - ADV_IND – ненаправленные пакеты, рассылаемые присоединяемыми и сканируемыми устройствами.
  • 0x01 - ADV_DIRECT_IND – направленные пакеты, рассылаемые присоединяемыми устройствами.
  • 0x02 - ADV_SCAN_IND – ненаправленные пакеты, рассылаемые сканируемыми устройствами.
  • 0x03 - ADV_NONCONN_IND – ненаправленные пакеты, рассылаемые неприсоединяемыми устройствами.
  • 0x04 - SCAN_RSP – пакеты с ответом на сканирование.

Если вы хотите получать в результатах ответы на сканирование, задайте True в аргументе active.

Когда сканирование будет остановлено (будь то явная остановка или истечение таймаута), будет возбуждено исключение _IRQ_SCAN_DONE.


<syntaxhighlight lang="python" enclose="div">

См.также

Внешние ссылки