exponenta event banner

wlanMPDUDecode

Декодирование MPDU

Описание

пример

[cfgMAC,payload,status] = wlanMPDUDecode(mpdu,phyFormat) приходит в себя payload, один или несколько блоков данных службы MAC (MSDU) путем декодирования блока данных протокола MAC (MPDU) mpdu. Функция декодирует MPDU, используя параметры, соответствующие указанному формату PHY.

Функция также возвращает status, результат декодирования MPDU, и cfgMAC, a wlanMACFrameConfig объект конфигурации.

пример

[cfgMAC,payload,status] = wlanMPDUDecode(mpdu,cfgPHY) декодирует MPDU с использованием параметров передачи PHY cfgPHY.

пример

[cfgMAC,payload,status] = wlanMPDUDecode(___,Name,Value) указывает параметры, использующие один или несколько аргументов пары имя-значение, а также любую комбинацию входных аргументов из предыдущих синтаксисов.

Примеры

свернуть все

Создайте объект конфигурации кадров MAC WLAN для MPDU в высокоэффективном однопользовательском формате (HE SU), а затем создайте MPDU.

phyFormat = 'HE-SU';
cfgMAC =  wlanMACFrameConfig('FrameFormat',phyFormat);
payload = randi([0 255],1,40);
mpdu = wlanMACFrame(payload,cfgMAC,'OutputFormat','bits');

Возвращает MSDU путем декодирования MPDU для указанной конфигурации формата PHY.

[rxCfgMAC,payload,status] = wlanMPDUDecode(mpdu,phyFormat);

Подтвердите успешное декодирование путем отображения состояния.

disp(status)
    Success

Создайте объект конфигурации кадров MAC WLAN для кадра данных QoS, а затем создайте MPDU.

cfgMAC = wlanMACFrameConfig('FrameType','QoS Data');
payload = randi([0 255],1,40);
mpdu = wlanMACFrame(payload,cfgMAC,'OutputFormat','bits');

Создайте объект конфигурации формата, отличного от формата HT, с параметрами по умолчанию.

cfgPHY = wlanNonHTConfig;

Возвращает MSDU путем декодирования MPDU для указанной конфигурации формата PHY.

[cfgMAC,payload,status] = wlanMPDUDecode(mpdu,cfgPHY);

Подтвердите успешное декодирование путем отображения состояния.

disp(status)
    Success

Деагрегация VHT A-MPDU и декодирование извлеченных MPDU.

Создайте объект конфигурации кадров MAC WLAN для VHT A-MPDU.

txCfgMAC = wlanMACFrameConfig('FrameType','QoS Data', ...
    'FrameFormat','VHT');

Создайте объект конфигурации формата VHT с настройками по умолчанию.

cfgPHY = wlanVHTConfig;

Создайте случайную полезную нагрузку из восьми MSDU.

txPayload =  repmat({randi([0 255],1,40)},1,8);

Создайте блок A-MPDU, содержащий восемь блоков MPDU для указанных конфигураций MAC и PHY.

ampdu = wlanMACFrame(txPayload,txCfgMAC,cfgPHY);

Извлеките список блоков MPDU путем деагрегации блока A-MPDU. Отображение состояния деагрегации и CRC разделителя.

[mpduList,failCRC,status] = wlanAMPDUDeaggregate(ampdu,cfgPHY, ...
    'DataFormat','octets');
disp(status)
    Success
disp(failCRC)
   0   0   0   0   0   0   0   0

Декодируйте все MPDU в извлеченном. Подтвердите успешное декодирование путем отображения состояния.

if strcmp(status,'Success')
    for i = 1:numel(mpduList)
        if ~failCRC(i)
            [cfgMAC,payload,status(i)] = ...
                wlanMPDUDecode(mpduList{i},cfgPHY, ...
                'DataFormat','octets');
        end
    end
end
disp(status)
  Columns 1 through 7

    Success    Success    Success    Success    Success    Success    Success

  Column 8

    Success

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

свернуть все

Декодируемый MPDU, указанный как одно из этих значений.

  • Двоично-значный вектор, представляющий MPDU в битовом виде

  • Вектор целых чисел в интервале [0, 255], представляющий октеты в десятичном формате

  • Строковый скаляр, представляющий MPDU как октеты в шестнадцатеричном формате

  • Вектор символов, представляющий MPDU в виде октетов в шестнадцатеричном формате

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

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string

Формат PHY, указанный как одно из этих значений.

  • 'HE-SU' - Высокоэффективный однопользовательский формат (HE SU)

  • 'HE-EXT-SU' - Формат SU расширенного диапазона HE (HE ER SU)

  • 'HE-MU' - многопользовательский формат HE (HE MU)

  • 'HE-TB' - формат на основе триггера HE (HE TB)

  • 'VHT' - Очень высокопроизводительный формат (VHT)

  • 'HT' - Высокопроизводительный формат (HT)

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

Формат PHY и параметры передачи, указанные как один из этих объектов.

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

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

Пример: 'DataFormat','octets'

Формат входного MPDU, определяемый как разделенная запятыми пара, состоящая из 'DataFormat' и одно из этих значений.

  • 'bits' - Укажите mpdu ввод в битовом формате

  • 'octets' - Укажите mpdu ввод в формате октета

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

Подавление предупреждающих сообщений, указанных как разделенная запятыми пара, состоящая из 'SuppressWarnings' и одно из этих значений.

  • false или 0 - Разрешить предупреждающие сообщения.

  • true или 1 - Подавление предупреждающих сообщений.

Типы данных: logical

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

свернуть все

Конфигурация кадра MAC, возвращенная как wlanMACFrameConfig объект.

Один или несколько MSDU, возвращаемых в виде массива ячеек символьных массивов. Функция возвращает символьный массив для каждого MSDU. В этих символьных массивах каждая строка является шестнадцатеричным представлением октета. Для каждого MAC-кадра, не содержащего данных, функция возвращает payload в виде пустого массива ячеек.

Типы данных: cell

Состояние декодирования MPDU, возвращаемое как целое число в интервале [-31, 0]. Каждое значение status соответствует члену wlanMACDecodeStatus класс перечисления, который указывает состояние декодирования кадра MAC в соответствии с этой таблицей.

Значение перечисленияЧлен класса перечисленияСостояние декодирования
0SuccessКадр MAC успешно декодирован
-1FCSFailedСбой последовательности проверки кадров (FCS)
-2InvalidProtocolVersionНедопустимая версия протокола
-3UnsupportedFrameTypeНеподдерживаемый тип кадра
-4UnsupportedFrameSubtypeНеподдерживаемый подтип кадра
-5NotEnoughDataНедостаточно данных для декодирования кадра
-6UnsupportedBAVariantНеподдерживаемый вариант кадра подтверждения блокировки
-7UnknownBitmapSizeНеизвестный размер растрового изображения
-8UnknownAddressExtModeРежим расширения неизвестного адреса
-9MalformedAMSDULengthНеверно сформированный агрегатный блок данных службы MAC (A-MSDU) с недопустимой длиной
-10MalformedSSIDНеправильный информационный элемент (IE) идентификатора набора служб (SSID)
-11MalformedSupportedRatesIEНеправильно сформированные поддерживаемые скорости IE
-12MalformedIELengthНеправильно сформированное поле длины IE
-13MissingMandatoryIEsОтсутствуют обязательные IE
-14NoMPDUFoundНе найден MPDU в A-MPDU
-15CorruptedAMPDUВсе разделители в полученном A-MPDU не прошли проверку циклическим избыточным кодом (CRC)
-16InvalidDelimiterLengthНедопустимое поле длины в разделителе MPDU
-17MaxAMSDULenthExceededA-MSDU превышает максимальный предел длины
-18MaxMPDULengthExceededMPDU превышает максимальный предел длины
-19MaxMMPDULengthExceededДлина кадра управления MAC превышает максимальный предел
-20MaxMSDULengthExceededMSDU превышает максимальный предел длины
-21UnexpectedProtectedFrameНедопустимое значение защищенного бита для этого типа кадра
-22UnsupportedTriggerTypeНеподдерживаемый тип кадра триггера
-23UnknownHELTFTypeAndGIНеизвестный защитный интервал (GI) и высокоэффективное длинное поле обучения (HE-LTF)
-24UnknownAPTxPowerНеизвестное значение для подполя мощности AP Tx поля Common Info
-25UnknownAID12ValueНеизвестное значение для поля AID12 User Info "
-26UnknownRUAllocationНеизвестное значение для B7-B1 в подразделе Выделение RU поля Информация о пользователе
-27UnknownULMCSНеизвестное значение для подполя UL MCS поля User Info
-28UnknownTargetRSSIНеизвестное значение для подполя UL Target RSSI поля User Info
-29UnsupportedBARTypeНеподдерживаемое значение для поля BAR Type поля BAR Control
-30MissingUserInfoПринятый кадр триггера содержит недопустимое поле User Info
-31InvalidLSIGLengthНедопустимое значение для подполя UL Length поля Common Info, соответствующего длине поля унаследованного сигнала (L-SIG).

Значение перечисления, отличное от 0 означает, что сбой декодирования MPDU. Если декодирование завершается неуспешно, cfgMAC вывод не отображает свойств, и функция возвращает payload вывод в виде пустого массива ячеек.

Типы данных: int16

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

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

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