bleLLDataChannelPDUDecode

Декодируйте PDU канала данных BLE LL

Загрузите Необходимый: Чтобы использовать bleLLDataChannelPDUDecode, сначала загрузите Библиотеку Communications Toolbox™ для Протокола Bluetooth®. Для получения дополнительной информации смотрите, Получают и Управляют Дополнениями (MATLAB). В качестве альтернативы смотрите Библиотеку Communications Toolbox для Обмена файлами Протокола Bluetooth.

Описание

пример

[status,cfgLLData,LLPayload] = bleLLDataChannelPDUDecode(pdu,CRCinit) декодирует модуль данных о протоколе (PDU) канала данных о слое ссылки (LL) Bluetooth низкой энергии (BLE), возвращая состояние декодирования, status, объект настройки PDU канала данных BLE LL, cfgLLData, и полезная нагрузка верхнего уровня, LLPayload. CRCinit обозначает значение инициализации контроля циклическим избыточным кодом (CRC).

пример

[status,cfgLLData,LLPayload] = bleLLDataChannelPDUDecode(pdu,CRCinitName,Value) свойства наборов с помощью одной или нескольких пар "имя-значение". Заключите каждое имя свойства в кавычки. Например, 'InputFormat','bits' задает формат PDU канала данных о входе BLE LL в битах.

Примеры

свернуть все

Создайте объект настройки PDU канала данных BLE LL при помощи настроек по умолчанию и просмотрите соответствующие применимые свойства.

cfgLLData = bleLLDataChannelPDUConfig
cfgLLData = 
  bleLLDataChannelPDUConfig with properties:

              LLID: 'Data (continuation fragment/empty)'
              NESN: 0
    SequenceNumber: 0
          MoreData: 0

Инициализируйте и установите значение LLID к 'start fragment/complete' указание на PDU канала данных BLE LL с полезной нагрузкой верхнего уровня. Инициализируйте значение контроля циклическим избыточным кодом (CRC) к 'ED321C'.

cfgLLData.LLID = 'Data (start fragment/complete)';
cfgLLData.CRCInitialization = 'ED321C';
crcInit = 'ED321C'; % CRC initialization value

Сгенерируйте PDU канала данных BLE LL с полезной нагрузкой верхнего уровня, данной в шестнадцатеричных октетах.

pdu = bleLLDataChannelPDU(cfgLLData,'030004000A0100');

Декодируйте сгенерированный PDU канала данных BLE LL. Возвращенное состояние указывает, что декодирование успешно. Просмотрите выход 'status', 'cfgLLData' и 'llPayload'.

[status, cfgLLData, llPayload] = bleLLDataChannelPDUDecode(pdu,crcInit)
status = 
Success
cfgLLData = 
  bleLLDataChannelPDUConfig with properties:

              LLID: 'Data (start fragment/complete)'
              NESN: 0
    SequenceNumber: 0
          MoreData: 0

llPayload = 7x2 char array
    '03'
    '00'
    '04'
    '00'
    '0A'
    '01'
    '00'

Задайте демонстрационный PDU канала данных BLE LL в октетах.

pdu = '030C00010000060000000A000000FCD2A6'; % Sample PDU in octets

Инициализируйте значение CRC.

crcInit = 'ED323C'; % CRC initialization value

Декодируйте заданный PDU канала данных BLE LL путем определения 'InputFormat' к 'octets'. Заданный PDU является PDU управления. Возвращенное состояние указывает, что декодирование успешно. Просмотрите выход 'status', 'cfgLLData' и 'llPayload'. Вы видите декодируемую настройку заданного PDU в 'ControlConfig' свойство 'cfgLLData'.

[status, cfgLLData, llPayload] = bleLLDataChannelPDUDecode(...
    pdu, crcInit, ...
    'InputFormat', ...
    'octets')
status = 
Success
cfgLLData = 
  bleLLDataChannelPDUConfig with properties:

              LLID: 'Control'
              NESN: 0
    SequenceNumber: 0
          MoreData: 0
     ControlConfig: [1x1 bleLLControlPDUConfig]

llPayload =

  1x0 empty char array

Задайте PDU канала данных BLE LL, содержащий поврежденные значения данных. Инициализируйте значение CRC.

pdu = '040C00010000060000000A00'; % Sample corrupted PDU
crcInit = 'CD3234'; % CRC initialization value

Декодируйте заданный PDU канала данных BLE LL. Возвращенное состояние указывает, что декодирование перестало работать из-за поврежденного PDU канала данных BLE LL. Если декодирование перестало работать, причина обозначается и объект настройки PDU канала данных BLE LL, 'cfgLLData', отображения никакие свойства.

[status, cfgLLData, llPayload] = bleLLDataChannelPDUDecode(...
    pdu, crcInit, ...
    'InputFormat', ...
    'octets')
status = 
CRCFailed
cfgLLData = 
  bleLLDataChannelPDUConfig with properties:

llPayload =

  1x0 empty char array

Входные параметры

свернуть все

PDU канала данных BLE LL, заданный как одно из этих значений:

  • Вектор символов — Этот вектор представляет октеты в шестнадцатеричном формате.

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

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

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

  • Бинарный вектор — Этот вектор представляет биты PDU канала данных BLE LL.

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

Значение инициализации CRC, заданное как вектор символов с 6 элементами или скаляр строки представление шестнадцатеричного значения с 3 октетами.

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

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: [status,cfgLLData,LLPayload] = bleLLDecodeDataChannelPDU('pdu','CRCInit','InputFormat','octets')

Формат PDU канала данных BLE LL, заданный как 'bits' or'octets'. Когда задано как 'bits''InputFormat' бинарный вектор. Когда задано как 'octets''InputFormat' числовое представление вектора октеты в десятичном формате или символьном массиве или скаляре строки представление октетов в шестнадцатеричном формате.

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

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

свернуть все

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

Перечислимая величинаЧлен класса перечисленияДекодирование состояния
0SuccessЗа пакетным декодированием следуют
-1 CRCFailedСоединитесь PDU Слоя повреждается
–2LLPDULengthMismatchПоле Length не соответствует с фактической длиной PDU
–3InvalidLLSlaveLatencyНедопустимая ведомая задержка
–4InvalidLLConnectionTimeoutНедопустимый тайм-аут связи
–5InvalidLLWindowSizeНедопустимый размер окна
–6InvalidLLWindowOffsetНедопустимое окно возмещено
–7InvalidLLConnectionIntervalНедопустимый интервал связи
–8InvalidLLChannelMapНедопустимая карта канала
-101IncompleteLLDataChannelPDUНедостаточные октеты в PDU канала данных
-102InvalidLLIDНедопустимый LLID
-103UnsupportedLLOpCodeНеподдерживаемый код операции
-104InvalidLLErrorCodeНедопустимый код ошибки
-105InvalidBluetoothVersionНеверная версия
-106ExpectedNonZeroPayloadНенулевая полезная нагрузка ожидается
-107MICNotSupportedПолезная нагрузка содержит MIC

Перечислимая величина кроме 0 средние значения, которые привело к сбою декодирование PDU канала данных BLE LL. При декодировании сбоев, объекта cfgLLData не отображает вывода.

Объект настройки канала данных BLE LL, возвращенный как bleLLDataChannelPDUConfig объект. Это значение представляет декодируемую настройку PDU канала данных BLE LL.

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

Ссылки

[1] Домашняя страница Bluetooth. https://www.bluetooth.com/.

[2] Специальная группа (SIG) Bluetooth. "Спецификация ядра Bluetooth". Версия 5.0.

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

Введенный в R2019b