bleLLDataChannelPDUDecode

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

Требуется загрузка: Чтобы использовать bleLLDataChannelPDUDecode, сначала загрузите библиотеку Communications Toolbox™ для Bluetooth® Протокол. Для получения дополнительной информации см. раздел «Получение и управление дополнениями». Другой способ см. в разделе Библиотека Communications Toolbox для обмена файлами протокола Bluetooth.

Описание

пример

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

пример

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

Примеры

свернуть все

Создайте объект строения 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

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

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

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

Укажите выборку BLE LL канала данных PDU в октетах.

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

Декодируйте указанный канал данных LL BLE PDU. Возвращенное состояние указывает, что декодирование не выполнено из-за поврежденного 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

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

свернуть все

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

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

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

  • Числовой вектор элементов в области значений [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' или 'octets'. Если задано как 'bits', InputFormat является двоичным вектором. Если задано как 'octets', InputFormat - числовой вектор, представляющий октеты в десятичном формате или символьный массив или строковый скаляр, представляющий октеты в шестнадцатеричном формате.

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

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

свернуть все

Состояние декодирования PDU канала данных BLE LL, возвращаемое как непозитивное число типа 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 не отображает выход.

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

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

Ссылки

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

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

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

.
Введенный в R2019b