Bluetooth l2cap interface что это

Обновлено: 06.07.2024

Bluetooth является беспроводной технологией для создания персональных сетей на расстоянии не более 10 метров, работающей на частоте 2.4 ГГц, которая не подлежащит лицензированию. Обычно такие сети формируются из портативных устройств, таких, как сотовые телефоны, КПК и лаптопы. В отличие от Wi-Fi, другой популярной беспроводной технологии, Bluetooth предоставляет более высокий уровень сервиса, например, файловые серверы типа FTP, передачу файлов, голоса, эмуляцию последовательного порта и другие.

По умолчанию драйверы устройств Bluetooth поставляются в виде модулей ядра. Перед подключением устройства вам необходимо подгрузить драйвер в ядро.

Если Bluetooth-устройство в момент запуска системы подключено, то загружайте модуль из файла /boot/loader.conf .

ubt0: vendor 0x0a12 product 0x0001, rev 1.10/5.25, addr 2 ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2 ubt0: Interface 1 (alt.config 5) endpoints: isoc-in=0x83, isoc-out=0x3, wMaxPacketSize=49, nframes=6, buffer size=294

Host Controller Interface (HCI) предоставляет интерфейс для управления контроллером передатчика и менеджером соединений, а также доступ к данным о состоянии оборудования и его управляющим регистрам. Этот интерфейс предоставляет унифицированный метод доступа к передающим возможностям Bluetooth. Уровень HCI на управляющей машине обменивается данными и командами с микрокодом HCI в оборудовании Bluetooth. Драйвер для Host Controller Transport Layer (то есть физической шины) предоставляет обоим слоям HCI возможность обмениваться данными друг с другом.

Для одного Bluetooth-устройства создаётся один узел Netgraph типа hci . HCI-узел обычно подключается к узлу драйвера устройства Bluetooth (входящий поток) и к узлу L2CAP (исходящий поток). Все операции с HCI должны выполняться на узле HCI, но не на узле драйвера устройства. В качестве имени по умолчанию для узла HCI используется ``devicehci''. Дополнительные подробности можно найти на справочной странице ng_hci (4) .

BD_ADDR является уникальным адресом устройства Bluetooth, вроде MAC-адресов сетевых адаптеров. Этот адрес необходим для дальнейшей работы с устройством. Адресу BD_ADDR можно присвоить удобное для чтения имя. Файл /etc/bluetooth/hosts содержит информацию об известных хостах Bluetooth. В следующем примере показано, как получить имя, назначенное удалённому устройству.

% hccontrol -n ubt0hci remote_name_request 00:80:37:29:19:a4 BD_ADDR: 00:80:37:29:19:a4 Name: Pav's T39

Если вы выполните опрос на другом Bluetooth-устройстве, но ваш компьютер будет опознан как ``your.host.name (ubt0)''. Имя, назначаемое локальному устройству, может быть в любой момент изменено.

Система Bluetooth предоставляет услуги по соединениям типа точка-точка (при этом задействованы только два устройства Bluetooth) или точка-ко-многим-точкам. В последнем случае соединение используется совместно несколькими устройствам Bluetooth. В следующем примере показывается, как получить список активных для локального устройства соединений.

% hccontrol -n ubt0hci read_connection_list Remote BD_ADDR Handle Type Mode Role Encrypt Pending Queue State 00:80:37:29:19:a4 41 ACL 0 MAST NONE 0 0 OPEN

Идентификатор соединения ( connection handle ) полезен, когда необходимо прекратить соединение. Заметьте, что обычно нет нужды делать это вручную. Стек будет автоматически разрывать неактивные соединения.

Обратитесь к помощи посредством hccontrol help для получения полного списка доступных HCI-команд. Большинство команд HCI для выполнения не требуют прав администратора системы.

Протокол L2CAP (Logical Link Control and Adaptation Protocol) предоставляет услуги по работе с данными, как ориентированные на соединения, так и без ориентации на них, протоколам более высокого уровня с возможностями мультиплексирования и обеспечением операций по сегментации и обратной сборке. L2CAP позволяет протоколам более высокого уровня и приложениям передавать и получать пакеты данных L2CAP длиной до 64 Кбайт.

L2CAP основан на концепции каналов . Каналом является логическое соединение поверх соединения по радиоканалу. Каждый канал привязан к некоторому протоколу по принципу многие-к-одному. Несколько каналов могут быть привязаны к одному и тому же протоколу, но канал не может быть привязан к нескольким протоколам. Каждый пакет L2CAP, получаемый каналом, перенаправляется к соответствующему протоколу более высокого уровня. Несколько каналов могут совместно использовать одно и то же радиосоединение.

Для одного Bluetooth-устройства создается один узел Netgraph типа l2cap . Узел L2CAP обычно подключается к узлу Bluetooth HCI (нижестоящий) и узлам Bluetooth-сокетов (вышестоящие). По умолчанию для узла L2CAP используется имя ``devicel2cap''. Для получения дополнительной информации обратитесь к справочной странице по ng_l2cap (4) .

% l2control -a 00:02:72:00:d4:1a read_channel_list L2CAP channels: Remote BD_ADDR SCID/ DCID PSM IMTU/ OMTU State 00:07:e0:00:0b:ca 66/ 64 3 132/ 672 OPEN % l2control -a 00:02:72:00:d4:1a read_connection_list L2CAP connections: Remote BD_ADDR Handle Flags Pending State 00:07:e0:00:0b:ca 41 O 0 OPEN

% btsockstat Active L2CAP sockets PCB Recv-Q Send-Q Local address/PSM Foreign address CID State c2afe900 0 0 00:02:72:00:d4:1a/3 00:07:e0:00:0b:ca 66 OPEN Active RFCOMM sessions L2PCB PCB Flag MTU Out-Q DLCs State c2afe900 c2b53380 1 127 0 Yes OPEN Active RFCOMM sockets PCB Recv-Q Send-Q Local address Foreign address Chan DLCI State c2e8bc80 0 250 00:02:72:00:d4:1a 00:07:e0:00:0b:ca 3 6 OPEN

Протокол RFCOMM эмулирует последовательные порты поверх протокола L2CAP. Он основан на ETSI-стандарте TS 07.10. RFCOMM представляет собой простой транспортный протокол, с дополнительными возможностями по эмуляции 9 цепей последовательных портов RS-232 (EIATIA-232-E). Протокол RFCOMM поддерживает одновременно до 60 соединений (каналов RFCOMM) между двумя устройствами Bluetooth.

В рамках RFCOMM полный коммуникационный маршрут включает два приложения, работающие на разных устройствах (конечные коммуникационные точки) с коммуникационным сегментом между ними. RFCOMM предназначен для сокрытия приложений, использующих последовательные порты устройств, в которых они расположены. Коммуникационный сегмент по сути является Bluetooth-связью от одного устройства к другому (прямое соединение).

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

Во FreeBSD протокол RFCOMM реализован на уровне сокетов Bluetooth.

По умолчанию связь Bluetooth не аутентифицируется, поэтому любое устройство может общаться с любым другим. Устройство Bluetooth (например, сотовый телефон) может задать обязательность аутентификации для предоставления определённого сервиса (в частности, услугу доступа по коммутируемой линии). Bluetooth-аутентификация обычно выполняется через PIN-коды . PIN-код представляет из себя ASCII-строку длиной до 16 символов. Пользователь обязан ввести один и тот же PIN-код на обоих устройствах. Как только он введёт PIN-код, оба устройства сгенерируют ключ связи . После этого ключ может быть сохранён либо в самом устройстве, либо на постоянном носителе. В следующий раз оба устройства будут использовать ранее сгенерированный ключ соединения. Процедура, описанная выше, носит название подгонки пары (pairing). Заметьте, что если ключ связи потерян любой из сторон, то подбор пары должен быть повторен.

hcsecd[16484]: Got Link_Key_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4 hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', link key doesn't exist hcsecd[16484]: Sending Link_Key_Negative_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4 hcsecd[16484]: Got PIN_Code_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4 hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', PIN code exists hcsecd[16484]: Sending PIN_Code_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4

Протокол обнаружения сервисов SDP даёт возможность клиентским приложениям осуществлять поиск услуг, предоставляемых серверными приложениями, а также характеристик этих услуг. В перечень атрибутов сервиса включается тип класса предлагаемого сервиса и информация о механизме или протоколе, требуемом для использования сервиса.

SDP подразумевает коммуникации между SDP-сервером и SDP-клиентом. Сервер поддерживает список сервисов, в котором описываются параметры сервисов, связанных с сервером. Каждая запись об услуге содержит информацию об одном сервисе. Клиент может запросить информацию об опеределённом сервисе, обслуживаемом SDP-сервером, выдавая SDP-запрос. Если клиент или приложение, связанное с клиентом, решат воспользоваться сервисом, то для его использования необходимо открыть отдельное соединение к устройству, предоставляющему сервис. SDP предоставляет механизм обнаружения услуг и их параметров, но не даёт механизма использования этих сервисов.

Обычно SDP-клиент выполняет поиск услуг на основе некоторых желаемых характеристик услуг. Однако иногда возникает необходимость выяснить полный перечень типов услуг, предоставляемых SDP-сервером, не имея никакой информации об имеющихся сервисах. Такой процесс всех предлагаемых сервисов называется обзором (browsing).

Существующие на данный момент серверы и клиенты SDP реализованы в пакете стороннего разработчика sdp-1.5 , который можно сгрузить здесь . Утилита sdptool является SDP-клиентом, управляемым из командной строки. В следующем примере показано, как выполнять запрос на SDP-обзор.

. и так далее. Заметьте, что каждый сервис имеет перечень атрибутов (например, канал RFCOMM). В зависимости от сервиса вам может потребоваться где-то сохранить эти атрибуты. Некоторые реализации Bluetooth не поддерживают просмотр сервисов и могут возвращать пустой список. В этом случае возможен поиск конкретной услуги. В примере ниже показано, как выполнить поиск службы OBEX Object Push (OPUSH).

Во FreeBSD предоставление сервисов клиентам Bluetooth осуществляется сервером sdpd .

Для регистрации сервиса в локальном SDP-сервере также применяется утилита sdptool . В примере ниже показывается, как зарегистрировать Network Access с услугой PPP (LAN). Заметьте, что некоторые сервисы требуют указания их атрибутов (например, канала RFCOMM).

Модуль работы с коммутируемым доступом к сети (DUN - Dial-Up Networking) в большинстве случаев используется с модемами и сотовыми телефонами. Этот модуль покрывает следующие случаи:

сотовый телефон или модем используется вместе с компьютером в качестве беспроводного модема для подключения к серверу коммутируемого доступа в Интернет, или другой коммутируемой услуге;

сотовый телефон или модем используется компьютером для приёма входящих соединений.

Модуль доступа к сети по протоколу PPP (Network Access with PPP - LAN) может использоваться в следующих ситуациях:

доступ к ЛВС для одного Bluetooth-устройства;

доступ к ЛВС для нескольких Bluetooth-устройств;

связь между двумя ПК (при помощи протокола PPP поверх эмулируемого последовательного канала связи).

OBEX является широкоиспользуемым протоколом для простой передачи файлов между мобильными устройствами. В основном он используется в коммуникациях через инфракрасный порт для передачи файлов между ноутбуками или КПК компании Palm, а также для пересылки визитных карточек или календарных планов между сотовыми телефонами и другими устройствами с персональными информационными менеджерами.

Клиент OBEX используется для посылки или приёма объектов с сервера OBEX. Объектом, к примеру, может быть визитная карточка или указание. Клиент OBEX может получить номер RFCOMM-канала, указав вместо него имя сервиса. Поддерживаются следующие имена сервиса: IrMC, FTRN и OPUSH. Канал RFCOMM можно задать его номером. Ниже даётся пример сеанса OBEX, где с сотового телефона забирается объект с информацией об устройстве, а новый объект (визитная карточка) передаётся в каталог сотового телефона.

% obexapp -a 00:80:37:29:19:a4 -C IrMC obex> get get: remote file> telecom/devinfo.txt get: local file> devinfo-t39.txt Success, response: OK, Success (0x20) obex> put put: local file> new.vcf put: remote file> new.vcf Success, response: OK, Success (0x20) obex> di Success, response: OK, Success (0x20)

Модуль последовательного порта (SP - Serial Port) позволяет Bluetooth-устройству осуществлять эмуляцию последовательного порта RS232 (или подобного). Этот модуль покрывает случаи, касающиеся работы унаследованных приложений с Bluetooth в качестве замены кабельному соединению, при это используется абстракция виртуального последовательного порта.

После подключения псевдотерминал можно использовать как последовательный порт.

Некоторые старые Bluetooth-устройства не поддерживают переключение ролей. По умолчанию, когда FreeBSD подтверждает новое соединение, она пытается выполнить переключение роли и стать ведущим устройством. Устройства, которые это не поддерживают, не смогут подключиться. Заметьте, что переключение ролей выполняется при установлении нового соединения, поэтому невозможно выяснить, поддерживает ли удалённое устройство переключение ролей. На локальной машине имеется возможность отключить переключение ролей при помощи HCI-параметра.

Пожалуй, одной из наиболее часто встречающихся в повседневной жизни беспроводных сетевых технологий, после сотовой связи, является Bluetooth. Благодаря относительно высоким скоростям передачи данных и неплохим энергетическим показателям технология Bluetooth получила широкое распространение в мобильных электронных устройствах, персональных компьютерах, ноутбуках, беспроводных наушниках, гарнитурах, мультимедийных центрах. Стандарт позволяет поддерживать достаточно разветвленную и сложную сеть устройств. Однако, для применения в сенсорных сетях классический Bluetooth подходит мало из-за значительно для автономных источников питания энергопотребления, вследствие особенностей работы стека протоколов.

Технология Bluetooth Low Energy (BLE) 17 - Bluetooth 4.0 является технологией беспроводной связи для ближних коммуникаций, разработанной группой Bluetooth Special Interest Group ( SIG ). В отличие от предыдущих стандартов - Bluetooth 2.0, Bluetooth 2.1 + EDR, Bluetooth 3.0, стандарт BLE изначально ориентирован на применение в системах сбора данных, мониторинга с автономным питанием. В отличие от технологий сенсорных сетей, таких как, ZigBee, 6LoWPAN или Z-Wave, ориентированных на разветвленные распределенные сети с многочисленными передачами данных между узлами сети, Bluetooth Low Energy ориентирован на топологии типа точка-точка и звезда . Основными областями применения BLE являются устройства обеспечения безопасности, управления электроприборами и отображения показаний, датчиках с батарейным питанием, домашних медицинских приборах, спортивных тренажерах.

Успех предыдущих версий Bluetooth, подтвержденный практически массовым применением беспроводных интерфейсов данных стандартов в большом количестве устройств, и в частности, устройств, рассчитанных на обычного потребителя, позволяет ожидать аналогичной ситуации и с устройствами, поддерживающими стандарт BLE. В частности IEFT 6LoWPAN Working Group рассматривает BLE как одну из значительных составляющих т.н. "Интернета вещей" ( Internet of Things) и разрабатывает спецификацию, позволяющую транслировать пакеты IPv6 посредством BLE [16, 17].

Стек протоколов Bluetooth Low Energy

Структура стека

Также как и классический стек протоколов Bluetooth, стек BLE состоит из двух основных частей: контроллера (Controller) и узла сети (Host). Контроллер включает в себя физический и канальный уровень и часто реализуется в виде системы-на-кристалле (СнК) и интегрированным беспроводным трансивером. Часть стека, именуемая узлом сети реализуется программно на микроконтроллере приложений и включает в себя функциональность верхних уровней: уровень логической связи (Logical Link Control - LLC), протокол адаптации (Adaptation Protocol - L2CAP), атрибутов (Attribute Protocol - ATT), протокол атрибутов профилей устройств (Generic Attribute Profile - GATT), протокол обеспечения безопасности (Security Manager Protocol - SMP), протокол обеспечения доступа к функциям профиля устройств (Generic Access Profile (GAP). Взаимодействие между верхней и нижней частями стека осуществляется интерфейсом Host Controller Interface (HCI). Дополнительная функциональность прикладного уровня может быть реализована поверх уровня узла сети. На Рис. 3.11 представлена структура стека протоколов BLE [15, 17].

Несмотря на то, что некоторые функции контроллера BLE заимствованы от классического Bluetooth, они не совместимы между собой, т.е. устройство, поддерживающее только BLE (однорежимное устройство - single-mode device) не сможет взаимодействовать с устройством, поддерживающим только Bluetooth 2.x/3.0. Для осуществления взаимодействия между ними хотя бы одно из устройств должно поддерживать оба стека протоколов (двухрежимное устройство - dual-mode device).

Структура стека протоколов Bluetooth Low Energy (BLE) - а) и пакета данных BLE - б)


увеличить изображение
Рис. 3.11. Структура стека протоколов Bluetooth Low Energy (BLE) - а) и пакета данных BLE - б)

Однорежимные устройства обладают наименьшим потреблением и, в основном, представляют собой конечные исполнительные устройства. Двухрежимные устройства предполагают возможность периодического получения энергии, располагаются на различных мобильных устройствах, а также могут функционировать и как обычные Bluetooth устройства. Схема взаимодействия между однорежимными, двухрежимными устройствами и классическим Bluetooth-устройствами представлена на Рис. 1.2 [15, 18].

Физический уровень

Устройства BLE работают в диапазоне 2.4 ГГц. В стандарте определено 40 частотных каналов с расстоянием в 2 МГц между каналами. На физическом уровне применена GFSK модуляция (Gaussian Frequency Shift Keying) с индексом модуляции в пределах от 0.45 до 0.55, что позволяет уменьшить пиковое потребление энергии. Скорость передачи на физическом уровне 1 Мбит/с. В стандарте BLE чувствительность приемника определена как уровень сигнала на приемнике, при котором частота битовых ошибок (Bit Error Rate - BER) достигает уровня 10 -3 , и должна быть -70 дБм или лучше. Выделяют два типа каналов - каналы объявления и каналы данных. Каналы объявления используются для поиска устройств, установления соединения, широковещательных передач, тогда как каналы данных используются для двунаправленного обмена данными между устройствами, между которыми установлено соединение.

Для каналов объявления выделено три частотных канала в центре полосы, что минимизирует перекрытие с каналами 1, 6 и 11 стандарта IEEE 802.11. Остальные 37 каналов используются для обмена данными. Для снижения влияния помех, многолучевого распространения, а также снижения влияния соседних устройств, при обмене данными происходит скачкообразное переключение частоты (Рис. 3.12) [15].

Схема взаимодействия между однорежимными, двухрежимными устройствами и классическими Bluetooth-устройствами


увеличить изображение
Рис. 3.12. Схема взаимодействия между однорежимными, двухрежимными устройствами и классическими Bluetooth-устройствами
Канальный уровень

В BLE для передачи широковещательных пакетов применяются каналы объявления. Любой устройство, передающее пакеты по данным каналам называется объявителем. Передача пакетов по каналам объявлений происходит только в течение специальных выделенных интервалов времени, называемых событиями объявлений. Во время этих событий устройство-объявитель передает пакеты объявлений последовательно по каждому из трех каналов. Устройства, только принимающие пакеты объявлений называются сканерами [17].

Двунаправленный обмен между BLE-устройствами возможен только после установления соединения между ними. Создание нового соединения между двумя устройствами является асимметричной процедурой, в течение которой устройство-объявитель по каналам объявления сигнализирует о своей готовности к соединению, в то время как другое устройство (инициатор соединения) прослушивает данные каналы. Когда инициатор обнаруживает нужное устройство, он может послать запрос на установление соединения (Connection Request) объявителю, который устанавливает между ними соединение. С этого момента устройства могут осуществлять обмен по каналам данных. Пакеты, относящиеся к установленному соединению, будут отмечены сгенерированным случайным образом 32-битным кодом доступа.

Также как и в классическом варианте Bluetooth, в BLE для установленного соединения одно из устройств выступает в качестве ведущего (master), второе - ведомого (slave). В ходе процедуры установления соединения - инициатор и объявитель, соответственно. Ведущее устройство может поддерживать несколько соединений с ведомыми, в то время как ведомое устройство может иметь только одно подключение - к ведущему. Таким образом, BLE-устройство одновременно может принадлежать только одной пико-сети. В этом кроется еще одно отличие BLE от Bluetooth - в последнем случае ведомое устройство в свою очередь могло выступать в качестве ведущего устройства своей собственной пико-сети.

Соотношение частотных каналов BLE и каналов IEEE 802.11


увеличить изображение
Рис. 3.13. Соотношение частотных каналов BLE и каналов IEEE 802.11

После установления соединения физический канал передачи данных разделяется на неперекрывающиеся временные интервалы, называемые событиями соединения (connection events) или фреймами. В течение фрейма все пакеты передаются по одному частотному каналу. Каждый фрейм начинается с передачи пакета ведущим устройством. В том случае, если ведомое устройство получило пакет, оно должно послать пакет-подтверждение. В тоже время, подтверждения от ведущего устройства ведомому не требуется. Между двумя последовательными пакетами должен быть выдержан интервал времени, как минимум 150 мкс - т.н. межкадровый интервал (Inter Frame Space - IFS).

До тех пор, пока между ведущим и ведомым продолжается обмен пакетами, событие соединения (или фрейм обмена) считается открытым. В пакетах данных, в случае необходимости дальнейшего обмена, установлен бит More Data (MD). Если не одно из устройств не имеет данных для передачи, событие соединения будет закрыто, и ведомое устройство уже не должно прослушивать канал до начала следующего фрейма. Другими причинами, приводящими к закрытию события соединения, являются два последовательно принятых пакета с ошибками, неверный адрес устройства в пакете. Для контроля битовых ошибок в пакете, после поля данных следует поле 24-битной контрольной суммы.

Для нового события соединения ведущий и ведомый используют новый частотный канал, заданный в карте переключения каналов. Время между началом двух последовательных событий соединения задается параметром connInterval, является кратным 1.25 мс и может лежать в пределах от 7.5 мс до 4 с. Вторым важным параметром для пико сети BLE является параметр connSlaveLatency определяющий количество последовательных фреймов в течении которых ведомое устройство не прослушивает канал и может на это время отключить трансивер. Данный параметр является целым числом в пределах от 0 до 499 и не должно превышать контрольного интервала супервизора - параметр connSupervisionTimeout. Параметр connSupervisionTimeout может принимать значения в диапазоне от 100 мс до 32 с. Его назначение - обнаружение потери соединения с устройством из-за ухудшения качества канала связи или перемещения его за пределы досягаемости [17].

L2CAP

Протокол L2CAP в BLE является упрощенной и оптимизированной версией соответствующего протокола в Bluetooth 2.x/3.x. В BLE основной задачей L2CAP является мультиплексирование данных трех протоколов (ATT, SMP, Link Layer) для соединения канального уровня. Отвечает за установление логического соединения. Не производится сегментирования пакетов или сборки пакетов, т.к. максимальная полезная нагрузка L2CAP в BLE составляет 23 байта.

  • уведомления, не требующие подтверждения;
  • индикаторы, на которые клиент обязан ответить.

Клиент также может послать серверу команды на изменение значений атрибутов.

Протокол GATT определяет среду исполнения, используемую ATT для обнаружения сервисов и обмена характеристиками между устройствами. Характеристика в данном случае представляет собой набор данных, включающих в себя значения и свойства. Данные, относящиеся к сервисам и характеристикам, сохраняются в атрибутах.

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

Протокол L2CAP позволяет как протоколам верхнего уровня, так и приложениям, отправлять и получать данные в пакетах (L2CAP Service Data Units, SDU) длиной до 64 Кбайт. Протокол так же позволяет управлять потоком данных и ретранслировать данные в каналах с помощью режимов управления потоками и ретрансляции.

Общие операции

Идентификаторы канала

Идентификатор канала (CID) является локальным именем, представляющим конечную точку логического канала. Присвоение идентификатору имени происходит на конкретном устройстве и устройство может присвоить имя идентификатору независимо от других устройств, за исключением случаев когда необходимо использовать зарезервированные имена идентификаторов.

Операции между устройствами


Рисунок иллюстрирует использование идентификаторов при соединении между сущностями протокола L2CAP в различных устройствах. Ориентированные на соединение каналы данных представляют соединение между 2-мя устройствами, где идентификатор определяет каждую конечную точку канала. Каналы без установки соединения ограничивают поток информации только по одному направлению. Эти каналы используются для поддержки канальных «групп», в которых идентификатор канала источника представляет собой один или более удаленных устройств. Существует ряд идентификаторов, предназначенных для специальных целей (зарезервированных). Идентификатор «сигнального» канала является одним из примеров зарезервированного идентификатора. Этот Идентификатор используется для создания и установки ориентированного на соединение канала данных и для согласования изменений в характеристиках как в каналах, ориентированных на соединение, так и в каналы без установки соединения.

Режимы работы

Протокол L2CAP может работать в одном их 3х различных режимов:

Формат пакетов данных

Протокол L2CAP является пакетным, но в работе следует коммуникационной модели, основанной на каналах. Канал представляет собой поток данных между протоколами L2CAP на различных устройствах. Каналы могут быть ориентированные и неориентированные на соединение.

Форматы сигнального пакета

Обзор Bluetooth Core Technology (4): Спецификация протокола Bluetooth (HCI, L2CAP, SDP, RFOCMM) (воспроизводится)


I. Протокол интерфейса управления хостом HCI
Хост Bluetooth - модель управления хостами

Процесс передачи данных стопки стека в стопках Bluetooth программного обеспечения Bluetooth:


1. Пакет данных интерфейса контроллера Bluetooth: пакет инструкций, группа событий, пакет данных
(1), пакет инструкций

Такие как: запрос на соединение ACCPET
OPCode: 0x0409
Длина параметра: 07
Адрес Bluetooth в параметре: 00: 0D: FD: 5F: 16: 9F
Роль: от устройства 0x01
Мод большой конец данных
Директива: 09 04 07 9F 16 5F FD 0D 00 01
(2), группа событий


Как показано выше:
Opcode :0x0409
Статус: 0x00.
Общая длина: 4 байта
Состояние команды: 0x0f
(3), пакет данных
Пакет данных ACL

Ручка соединения (12 бит)

Длина данных (16 бит)

Примечание: PB Packet_Boundary BC трансляционный флаг
Пакет данных SCO

Ручка соединения (12 бит)

Длина данных (16 бит)

(4), индикатор пакета RS232:

Индикатор пакета RS232

HCL инструкция пакет

Пакет данных HCI ACL

HCI SCO Пакет данных

Группа событий HCI

HCI Договорная группа

2, команда управления HCL

(1), команда управления ссылками

Устройство Bluetooth входит в режим запроса, поиск подхода

Режим выхода на запрос

Periodic Inquiry Mode

Bluetooth-устройство автоматически запрашивает в указанный цикл

Exit Periodic Inquiry Mode

Выход автоматического запроса

Создайте ссылку ACL в соответствии с BD_Addr из указанного устройства Bluetooth

Завершить существующие соединения

Add SCO Connection

Создайте SCO, используя соединение ACL, указанное параметром обработки соединения.

Cancel Create Connection

Accept Connection Request

Получить новый запрос входящего соединения

Reject Connection Request

Отклонить новый запрос входящего соединения

Link Key Request Reply

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

Link Key Request Negative Reply

Если на хосте ключа ссылки на хранилище на хосте, ключ ссылки используется для подключения к устройству Bluetooth, указанному bd_addr, отвечая на событие запроса ключей ссылки с контроллера хоста

PIN Code Request Reply

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

PIN Code Request Negative Reply

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

Change Connection Packet Type

Измените тип пакета, который устанавливается

Укажите установление аутентификации идентификации между двумя устройствами Bluetooth, связанными с обработкой соединения

Set Connection Encryption

Установить аннулирование шифрования

Change Connection Link Key

Принуждение двух устройств подключенных к соединительной ручке для установления соединения и генерировать новую клавишу ссылки

Master Link Key

Принудительные два устройства, подключенные к соединительным ручкам, ключам ссылки или обычные клавиши при использовании основных устройств

Remote Name Request

Получите имя удаленного устройства

Cancel Remote Name Request

Read Remote Supported Features

Запросить список функций, поддерживаемых удаленными устройствами

Read Remote Extended Features

Read Remote Version Information

Читать версию Информацию из удаленного оборудования

Read Clock Offset

Прочитайте информацию удаленной часы

(2), Инструкции по стратегии связи

Измените состояние LM и локальные и удаленные устройства в качестве местоположения LM

Измените статус LM и локальные и удаленные устройства для положения LM режима дыхания

Exit Sniff Mode

Завершить режим дыхания ручки соединения в текущем режиме дыхания

Измените статус LM и локальные и удаленные устройства в режим сна LM LM

Exit Park State

Переключитесь из режима сна на устройства Bluetooth

Укажите параметры качества обслуживания ручки соединения

После подключения устройства Bluetooth определяют свой собственный мастер из роли

Read Link Policy Settings

Чтобы указать обработку соединений. Настройка политики ссылки. Настройки политики связи позволяют контроллерам хоста указывать режим подключения LM для подключения ручки

Write Link Policy Settings

Чтобы указать рукоятку соединения Написать настройку политики ссылки. Настройки политики связи позволяют контроллерам хоста указывать режим подключения LM для подключения ручки

Read Default Link Policy Settings

Write Default Link Policy Settings

(3), хост-контроллер и инструкция базового положения

Включить события фильтрации хоста, создаваемые HCL

Сброс контроллера Bluetooth, диспетчер ссылок, диспетчер ссылок на базовую полосу

Set Event Filter

Включить хост, указав разные фильтрации событий

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

Хозяин хоста читает Указанный хост переменная или фиксирована

Хост, написанный на указанный хост, является переменным или фиксированным

Create New Unit Key

Создать новый единственный ключ

Read Stored Link Key

Прочитайте одно или несколько клавиш, хранящихся в контроллере Bluetooth

Write Stored Link Key

Одиночные или несколько ключей, написанные в контроллере Bluetooth

Delete Stored Link Key

Удалить одно или несколько клавиш, хранящихся в контроллере Bluetooth

Write Local Name

Изменить имя устройства Bluetooth

Read Local Name

Прочитайте имя устройства Bluetooth

Read Connection Accept Timeout

Прочитанное соединение распознает значение параметра Timeout, таймер автоматически отказывается подключать оборудование Bluetooth после завершения таймера

Write Connection Accept Timeout

Запись соединения распознает значение параметра времени ожидания, таймер автоматически отказывается подключать оборудование Bluetooth после завершения таймера

Read Page Timeout

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

Write Page Timeout

Это значение разрешено отправлять определение оборудования Bluetooth, прежде чем локальное устройство возвращает отказ подключения.

Read Scan Enable

Напишите сканирование, позволяющее значение параметра - используется для управления периодическим запросом устройства Bluetooth

Write Scan Enable

Прочитайте значение Scan Разрешить значение параметра - - используется для управления периодическим запросом устройства Bluetooth

Read Page Scan Activity

Чтение интервала сканирования, параметры интервала сканирования подкачки

Write Page Scan Activity

Написать интервал сканирования подкачки, параметры интервала сканирования подкачки

Read Inquiry Scan Activity

Прочитайте интервал сканирования запросов, параметры интервала сканирования запросов

Write Inquiry Scan Activity

Написать интервал сканирования запросов, параметры интервала сканирования запросов

Read Authentication Enable

Прочитайте аутентификацию Разрешить параметры --- Управляйте, если устройство Bluetooth аутентифицирует каждое соединение

Write Authentication Enable

Пишите аутентификацию, допустимые параметры --- контроль, если устройство Bluetooth аутентифицирует каждое соединение

Read Encryption Mode

Прочитайте значение режима шифрования --- контроль, если устройство Bluetooth шифрует каждое соединение

Write Encryption Mode

Написать значение режима шифрования --- контроль Если устройство Bluetooth шифрует каждое соединение

Read Class Of Device

Прочитайте значение параметра типа устройства для различения возможностей устройства

Write Class Of Device

Напишите значение параметра типа устройства для различения возможностей устройства

Read Voice Setting

Читайте значения параметров голосовой настройки, управляйте различными настройками голосовой связи

Write Voice Setting

Напишите значение параметра голосового настройки, управляйте различными настройками для голосовой связи

Read Automatic Flush Timeout

Прочитайте значение времени обновления для указанной ручки

Write Automatic Flush Timeout

Для указанной ручки, напишите обновление значения тайм-аута

Read Num Broadcast Retransmissions

Write Num Broadcast Retransmissions

Read Hold Mode Activity

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

Write Hold Mode Activity

Напишите значение параметра активности режима удержания, чтобы определить время, которое хранится

Read Transmit Power Level

Значения параметров для чтения питания передачи для указанной ручки

Read Synchronous Flow Control Enable

Прочитайте настройки управления трафиком SCO. Используя этот параметр, контроллер хоста определяет, отправляет ли контроллер хоста Количество завершенных событий пакетов, связанных с ручкой соединения SCO.

Write Synchronous Flow Control Enable

Прочитайте и напишите настройки управления движением SCO. Используя этот параметр, контроллер хоста определяет, отправляет ли контроллер хоста Количество завершенных событий пакетов, связанных с ручкой соединения SCO.

Set Host Controller To Host Flow Control

Открытие, закрытие, хост-контроллер на управление движением хоста контроллера

Host Buffer Size

Хост сообщает Host Controller своим собственным размером буфера данных SCO. Данные сегменты контроллера хоста, и данные не будут превышать этот диапазон.

Host Number Of Completed Packets

Эта инструкция используется для указания контроллера хоста через хост для любой инструкции HCI для любой обработки подключения.

Read Link Supervision Timeout

Прочитайте параметр Timeout Connection Management. Расположение этой связи мониторинга параметров от устройств Bluetooth

Write Link Supervision Timeout

Написать параметры тайм-аута управления соединением. Расположение этой связи мониторинга параметров от устройств Bluetooth

Read Number of Supported IAC

Численное значение (ICA) локального блока Bluetooth во время сканирования запроса чтения

Read Current IAC LAP

LAP of Bluetooth-идентификационного кода, который создает локальное устройство Bluetooth, пока локальное устройство Bluetooth сканирует во время сканирования запросов

Write Current IAC LAP

Написать LAP для идентификационного кода Bluetooth, который сканируется локальными устройствами Bluetooth одновременно во время сканирования запросов

Read Page Scan Period Mode

Прочитайте обязательную схему сканирования подкачки локального устройства Bluetooth

Write Page Scan Period Mode

Внутренний режим проверки вынужденного пейджинга. Написать локальное устройство Bluetooth

Read Page Scan Mode

Прочитайте режим раздела сканирования подкачки по умолчанию локального устройства Bluetooth

Write Page Scan Mode

Запишите диапазон диапазон сканирования по умолчанию для сканирования локальных устройств Bluetooth

(4), параметры информационных инструкций

Read Local Version Information

Читать локальную информацию о Bluetooth

Read Local Supported Features

Прочитайте локальную таблицу функции устройства Bluetooth

Read Local Extended Features

Read Buffer Size

Возвращает буфер HCI. Емкость буфера используется для передачи данных буферов

Read Country Code [Deprecated]

Читать значения параметра статуса кода страны

Прочитайте значение параметра BD_ADDR

(5), параметры команд состояния

Read Failed Contact Count

Прочитайте неисправное значение параметра счетчика контакта для других устройств. Неудачный счетчик контактов Записывая, когда обновляется обновление, и инструкция по данным L2CAP, которая в данный момент передается автоматически обновляется, основной блок или ведомое устройство не может постоянно реагировать на событие

Reset Failed Contact Count

Значение параметра неисправного количества контакта для подключения других устройств сбрасывается. Неудачный счетчик контактов Записывая, когда обновляется обновление, и инструкция по данным L2CAP, которая в данный момент передается автоматически обновляется, основной блок или ведомое устройство не может постоянно реагировать на событие

Get Link Quality

Прочитайте значение качества ссылки для указанного ручки подключения

Прочитайте индикацию силы приема сигнала для других соединительных ручек устройства Bluetooth

Read AFH Channel Map

(6), инструкция по тестированию

Read Loopback Mode

Write Loopback Mode

Запись на хост-контроллер отправит значение настройки режима. Настройки режима возврата могут определять путь передачи информации

Enable Device Under Test Mode

Разрешить локальный модуль устройства Bluetooth для доступа к режиму тестирования через инструкцию тестов LMP. Когда хост требует локального устройства в качестве тестирования устройства, тестовый сценарий указывается в файле тестового режима Bluetooth, инструкция отправляется.

(7), код ошибки

Расположение Директивы HCI

Поскольку другой конец вызывает прерывание соединения: предел ресурсов

Так как другой конец вызван прерыванием: отключение

Этот блок прерывается

С нетерпением ждем тайм-аута

Не позволяйте совпадать

Неизвестный LMP PDU

Время соединения истекло

Отклонить компенсацию SCO

Максимальное количество соединений

Отклонить режим прерывистости SCO

Максимальное количество соединений SCO, подключенное к устройству A

Отклонить беспроводной режим SCO

Соединение ACL уже существует

Незаконные параметры управления ссылками

Не особо указано

Из-за ограниченных ресурсов хост отклонен

Параметры протокола менеджера ссылок не поддерживают

По соображениям безопасности хост отклонен

Не позволяйте изменениям роли

Из-за дистанционного устройства одно соединение, хост отказывается

Таймус управления ответами ссылок

Частое время ожидания

Ошибка управления ссылками Ошибка конфликта транзакции

Нет Поддержка характеристик или значений параметров

Не позволяйте LMP PDU

Инструкция незаконного контроля хоста

Поскольку другой конец вызывает прерывание соединения: соединение прерывания пользователей

Во-вторых, логическая связь со ссылкой и протокол адаптации L2CAP
L2CAP расположен на основной полосе доски, преобразует пакет данных Baseband в формат пакета данных для легких высокоуровневых приложений и обеспечивает такие функции, как мультиплексирование протокола и обмен качества услуг. L2CAP поддерживает только передачу данных ACL и не поддерживает данные SCO.
Сам L2CAP не предоставляет механизм укрепления надежности канала и обеспечения целостности данных, а надежность его канала обеспечивается основной зоной.

1. Соглашение мультиплексировано:Базовый протокол передачи не предоставляет механизмы мультиплексирования для протоколов высокого уровня, поэтому L2CAP поддерживает мультиплексирование протокола высокого уровня, а слой L2CAP может различать SDP, RFCMMM, TCS и тому подобное.

2, реструктуризация сегментации:Слой L2CAP помогает добиться короткой PDU и длинного PDU на высоком уровне, а сам L2CAP не завершает реорганизацию сегментации PDU, а удельный рекомбинация сегмента имеет низкоуровневый и высот.

3, обмен медицинской информацией одолжительности:Во время процесса установления соединения L2CAP обеспечивает качество обслуживания качества обслуживания интерактивного Bluetooth. После завершения создания качества обслуживания гарантировано путем мониторинга использования ресурсов.

4, групповая абстракция:L2CAP игнорирует концепцию группы адресов, он только заботится о данных.

Есть три типа каналов L2CAP:

А, обращенная к каналу подключения:Connection-OrientedCo, используется в передаче данных между двумя устройствами.

B, нет канала подключения:Соединение-метки, используется для передачи данных в набор трансляций оборудования. CID является фиксированным значением: 0x0002.

C, канал сигнализации:Сигнализация, используемая для создания канала CO, может изменить характеристики канала CO путем переговоров.

L2cap_pdu канала CL

ID канала (0x0002)

PSM (минимум 2байт)

PSM является протокол / мультиплексор для мультиплексоров / сервисов, как правило, мультиплексированные протоколы, такие как SDP, RFCMM, TCS. Значение менее 0x1000, 0x0001 соответствует SDP, 0x0003 соответствует RFCMM, 0x0005 соответствует TCS.
(1), Сигнализация протокола управления логической ссылкой и адаптацией Bluetooth:
CID канал сигнализации L2CAP 0x0001

Читайте также: