exponenta event banner

bleL2CAPFrameDecode

Декодирование кадра L2CAP BLE

Для использования bleL2CAPFrameDecode сначала загрузите библиотеку Communications Toolbox™ Library для протокола Bluetooth ®. Дополнительные сведения см. в разделе Получение надстроек и управление ими. Кроме того, см. библиотеку Communications Toolbox Library для обмена файлами по протоколу Bluetooth.

Описание

пример

[status,cfgL2CAP,SDU] = bleL2CAPFrameDecode(L2CAPFrame) декодирует указанный кадр протокола управления логическим каналом и адаптации (L2CAP) Bluetooth с низкой энергией (BLE), L2CAPFrame. Функция возвращает состояние декодирования, status, соответствующий объект конфигурации L2CAP BLE, cfgL2CAPи блок данных службы полезной нагрузки верхнего уровня (SDU), SDU.

Примеры

свернуть все

Создание объекта конфигурации BLE L2CAP, 'cfgL2CAP', со свойствами по умолчанию и просмотр применимых свойств. Изменение значения идентификатора канала на '0004'.

cfgL2CAP = bleL2CAPFrameConfig
cfgL2CAP = 
  bleL2CAPFrameConfig with properties:

          ChannelIdentifier: '0005'
                CommandType: 'Credit based connection request'
           SignalIdentifier: '01'
    SourceChannelIdentifier: '0040'
                      LEPSM: '001F'
        MaxTransmissionUnit: 23
          MaxPDUPayloadSize: 23
                    Credits: 1

cfgL2CAP.ChannelIdentifier = '0004'; % Channel identifier for ATT

Создание кадра данных L2CAP BLE из 'cfgL2CAP', указывая SDU полезной нагрузки верхнего уровня из уровня attribute protocol (ATT) как '0A0100'.

L2CAPFrame = bleL2CAPFrame(cfgL2CAP, "0A0100");

Декодирование сформированного кадра данных L2CAP BLE. Возвращенное состояние указывает на успешное декодирование. Просмотр выходных данных 'status', 'cfgL2CAP' и 'SDU'.

[status, cfgL2CAP, SDU] = bleL2CAPFrameDecode(L2CAPFrame)
status = 
Success
cfgL2CAP = 
  bleL2CAPFrameConfig with properties:

    ChannelIdentifier: '0004'

SDU = 3x2 char array
    '0A'
    '01'
    '00'

Укажите кадр L2CAP BLE, содержащий поврежденные значения данных.

l2capFrame = ['090005000107040060005000']; % Sample frame

Декодирование указанного кадра L2CAP BLE. Возвращенное состояние указывает, что декодирование не выполнено из-за поврежденного кадра входного L2CAP. В этом случае при сбое декодирования на выходе отображается причина сбоя и объект конфигурации кадра BLE L2CAP. 'cfgL2CAP', не отображает свойств.

[status, cfgL2CAP, SDU] = bleL2CAPFrameDecode(l2capFrame)
status = 
MismatchL2CAPHeaderLength
cfgL2CAP = 
  bleL2CAPFrameConfig with properties:

SDU =

  1x0 empty char array

Входные аргументы

свернуть все

Кадр L2CAP BLE, указанный как одно из следующих значений:

  • Символьный вектор - этот вектор представляет октеты в шестнадцатеричном формате.

  • Строковый скаляр - этот скаляр представляет октеты в шестнадцатеричном формате.

  • Числовой вектор элементов в диапазоне [0, 255] - этот вектор представляет октеты в десятичном формате.

  • символьный массив n-by-2 - каждая строка представляет октет в шестнадцатеричном формате.

Типы данных: char | double | string

Выходные аргументы

свернуть все

Состояние декодирования пакета, возвращаемое как непозволительное целое число типа blePacketDecodeStatus. Это значение представляет результат декодирования кадра L2CAP BLE. Каждое значение status соответствует члену blePacketDecodeStatus класс перечисления, который указывает состояние декодирования пакета в соответствии с этой таблицей.

Значение перечисленияЧлен класса перечисленияСостояние декодирования
0SuccessДекодирование пакетов выполнено успешно
–301InvalidL2CAPConnectionIntervalRangeНедопустимые интервалы подключения
–302InvalidL2CAPSlaveLatencyНедопустимая задержка подчиненного узла
–303InvalidLECreditsНедопустимые кредиты за низкую энергию (LE)
–304L2CAPSegmentationUnsupportedСегментация не поддерживается
–305MismatchL2CAPHeaderLengthНесоответствие длины фактической длине
–306 IncompleteL2CAPDataFrameL2CAP кадра данных недостаточно для декодирования
–307InvalidL2CAPChannelIdentifierНедопустимый идентификатор канала L2CAP
–308InvalidL2CAPCommandНедопустимый код команды L2CAP
–309InvalidL2CAPCommandRejectReasonНедопустимый код причины отклонения команды
–310InvalidL2CAPParameterUpdateResultНедопустимый результат обновления параметров
-311InvalidL2CAPConnectionResultНедопустимый код результата подключения
-312IllegalL2CAPSignalIdentifierНедопустимый идентификатор сигнала в L2CAP
-313InvalidL2CAPConnectionIntervalMinimumМинимальный недопустимый интервал
-314InvalidL2CAPConnectionIntervalMaximumНедопустимый максимальный интервал
-315InvalidL2CAPConnectionTimeoutНедопустимое время ожидания подключения
-316 InvalidLEPSMНедопустимый мультиплексор протокола/услуги LE
-317InvalidL2CAPChannelMTUНедопустимый максимальный блок передачи
-318InvalidL2CAPChannelMPSНедопустимый максимальный размер полезной нагрузки PDU
-319InvalidL2CAPSDULengthНедопустимая длина SDU
-320MismatchL2CAPSignalFrameLengthНесоответствие длины фактической длине
-321IncompleteL2CAPSignalFrameL2CAP кадр сигнала недопустим или недостаточен

Значение перечисления, отличное от 0 означает, что декодирование BLE ATT PDU завершилось неуспешно. Если декодирование завершается неуспешно, объект cfgATT не отображает выходные данные.

Объект конфигурации кадров BLE L2CAP, возвращаемый как bleL2CAPFrameConfig объект. Это значение обозначает декодированную конфигурацию кадра L2CAP BLE.

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

Типы данных: char | string

Ссылки

[1] Веб-сайт технологии Bluetooth. «Веб-сайт Bluetooth Technology | Официальный веб-сайт Bluetooth Technology». Доступно 22 ноября 2019 года. https://www.bluetooth.com/.

[2] Группа специальных интересов Bluetooth (SIG). «Спецификация ядра Bluetooth». Версия 5.1. https://www.bluetooth.com/.

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2019b