exponenta event banner

bleLLDataChannelPDUDecode

Декодирование PDU канала данных LL BLE

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

Описание

пример

[status,cfgLLData,LLPayload] = bleLLDataChannelPDUDecode(pdu,CRCinit) декодирует блок протокольных данных канала передачи данных (PDU) канала связи с низкой энергией Bluetooth (BLE), возвращая статус декодирования, status, объект конфигурации PDU канала данных LLE, 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
    CRCInitialization: '012345'

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

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

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

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

Декодировать сформированный PDU канала данных LL BLE. Возвращенное состояние указывает на успешное декодирование. Просмотр выходных данных '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
    CRCInitialization: '012345'

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 канала данных LL BLE путем указания '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
    CRCInitialization: '012345'
        ControlConfig: [1x1 bleLLControlPDUConfig]

llPayload =

  1x0 empty char array

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

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

Декодировать указанный PDU канала данных LL BLE. Возвращенное состояние указывает, что декодирование не выполнено из-за поврежденного PDU канала данных LL BLE. Если декодирование завершается неуспешно, указывается причина и объект конфигурации 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 канала данных LLE, указанный как 'bits' или'octets'. Если указано как 'bits', InputFormat - двоичный вектор. Если указано как 'octets', InputFormat - числовой вектор, представляющий октеты в десятичном формате или символьный массив, или строковый скаляр, представляющий октеты в шестнадцатеричном формате.

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

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

свернуть все

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

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

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

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

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

Ссылки

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

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

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

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