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).
увеличить изображение
Рис. 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].
увеличить изображение
Рис. 3.12. Схема взаимодействия между однорежимными, двухрежимными устройствами и классическими Bluetooth-устройствами
Канальный уровень
В BLE для передачи широковещательных пакетов применяются каналы объявления. Любой устройство, передающее пакеты по данным каналам называется объявителем. Передача пакетов по каналам объявлений происходит только в течение специальных выделенных интервалов времени, называемых событиями объявлений. Во время этих событий устройство-объявитель передает пакеты объявлений последовательно по каждому из трех каналов. Устройства, только принимающие пакеты объявлений называются сканерами [17].
Двунаправленный обмен между BLE-устройствами возможен только после установления соединения между ними. Создание нового соединения между двумя устройствами является асимметричной процедурой, в течение которой устройство-объявитель по каналам объявления сигнализирует о своей готовности к соединению, в то время как другое устройство (инициатор соединения) прослушивает данные каналы. Когда инициатор обнаруживает нужное устройство, он может послать запрос на установление соединения (Connection Request) объявителю, который устанавливает между ними соединение. С этого момента устройства могут осуществлять обмен по каналам данных. Пакеты, относящиеся к установленному соединению, будут отмечены сгенерированным случайным образом 32-битным кодом доступа.
Также как и в классическом варианте Bluetooth, в BLE для установленного соединения одно из устройств выступает в качестве ведущего (master), второе - ведомого (slave). В ходе процедуры установления соединения - инициатор и объявитель, соответственно. Ведущее устройство может поддерживать несколько соединений с ведомыми, в то время как ведомое устройство может иметь только одно подключение - к ведущему. Таким образом, BLE-устройство одновременно может принадлежать только одной пико-сети. В этом кроется еще одно отличие BLE от Bluetooth - в последнем случае ведомое устройство в свою очередь могло выступать в качестве ведущего устройства своей собственной пико-сети.
увеличить изображение
Рис. 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
Читайте также: