wlanAMPDUDeaggregate

Деагрегируйте A-MPDU и извлеките MPDU

Описание

пример

[mpduList,failCRC,status] = wlanAMPDUDeaggregate(ampdu,phyFormat) восстанавливает mpduList, список модулей данных протокола управления доступом к среде (MAC) (MPDU) путем деагрегирования ampdu, совокупный MPDU (A-MPDU). Функция деагрегирует A-MPDU с помощью параметров, соответствующих phyFormat, формат физического слоя (PHY).

Функция также возвращается failCRC, состояние циклической проверки избыточности (CRC) разделителя для подкадров, найденных в ampdu, и status, состояние деагрегации A-MPDU.

пример

[mpduList,failCRC,status] = wlanAMPDUDeaggregate(ampdu,cfgPHY) деагрегирует A-MPDU при помощи параметров передачи PHY cfgPHY.

пример

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

Примеры

свернуть все

Создайте MAC- системы координат WLAN строения объекта, задав тип системы координат, формат системы координат и агрегацию MPDU.

cfgMAC = wlanMACFrameConfig('FrameType','QoS Data', ...
    'FrameFormat','HT-Mixed','MPDUAggregation',1);

Создайте объект строения HT, задающий агрегацию MPDU.

cfgPHY = wlanHTConfig('AggregatedMPDU',1);

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

payload = repmat({randi([0 255],1,40)},1,8);
ampdu = wlanMACFrame(payload,cfgMAC,cfgPHY,'OutputFormat','bits');

Возвращает список MPDU путем деагрегирования A-MPDU.

phyFormat = 'HT';
[mpduList,failCRC,status] = wlanAMPDUDeaggregate(ampdu,phyFormat);

Подтвердите успешную деагрегацию, отобразив результат CRC разделителя и состояние декодирования.

disp(failCRC)
   0   0   0   0   0   0   0   0
disp(status)
    Success

Создайте MAC- системы координат WLAN строения объекта, задав тип системы координат и формат системы координат.

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

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

cfgPHY = wlanVHTConfig;

Создайте случайную полезную нагрузку из восьми MSDU, а затем используйте ее, чтобы сгенерировать A-MPDU в битовой форме.

payload = repmat({randi([0 255],1,40)},1,8);
ampdu = wlanMACFrame(payload,cfgMAC,cfgPHY,'Outputformat','bits');

Деагрегируйте A-MPDU.

[mpduList,failCRC,status] = wlanAMPDUDeaggregate(ampdu,cfgPHY);

Подтвердите успешную деагрегацию, отобразив результат CRC разделителя и состояние декодирования.

disp(failCRC)
   0   0   0   0   0   0   0   0
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

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

свернуть все

A-MPDU, подлежащий деагрегированию, задается в качестве одного из следующих значений.

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

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

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

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

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

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

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

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

  • 'HE-EXT-SU' - HE расширенный формат SU (HE ER SU)

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

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

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

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

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

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

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

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

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

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

  • 'bits' - Задайте ampdu вход в битовом формате

  • 'octets' - Задайте ampdu вход в формате октета

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

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

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

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

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

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

свернуть все

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

Если в входном A-MPDU не найден разделитель MPDU, функция возвращается mpduList как пустой массив ячеек.

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

Индикатор отказа CRC разделителя, возвращаемый как вектор-строка логических значений. Каждый элемент этого вектора указывает состояние отказа CRC разделителя для подрамника A-MPDU.

Значение 1 для k-го элемента этого вектора указывает, что ошибка CRC разделителя для k-го субкадра A-MPDU. В этом случае k-й элемент mpduList содержит недопустимый MPDU.

Значение 0 для k-го элемента этого вектора указывает, что CRC разделителя прошел для k-го субкадра. В этом случае k-й элемент mpduList содержит допустимый MPDU.

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

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

Значение перечисленияПредставитель класса перечисленияСостояние декодирования
0SuccessMAC- системой координат успешно декодирован
-1FCSFailedНе удалось выполнить последовательность проверки системы координат (FCS)
-2InvalidProtocolVersionНедопустимая версия протокола
-3UnsupportedFrameTypeНеподдерживаемый тип системы координат
-4UnsupportedFrameSubtypeНеподдерживаемый подтип системы координат
-5NotEnoughDataНедостаточно данных для декодирования системы координат
-6UnsupportedBAVariantНеподдерживаемый вариант системы координат Block Ack
-7UnknownBitmapSizeНеизвестный размер растрового изображения
-8UnknownAddressExtModeНеизвестный режим расширения адреса
-9MalformedAMSDULengthНеверно сформированный агрегатный модуль данных MAC-услуг (A-MSDU) с недопустимой длиной
-10MalformedSSIDНеверно сформированный информационный элемент (IE) идентификатора набора услуг (SSID)
-11MalformedSupportedRatesIEНеправильные поддерживаемые скорости IE
-12MalformedIELengthНеверно сформированное поле длины IE
-13MissingMandatoryIEsОтсутствуют обязательные IE
-14NoMPDUFoundВ A-MPDU не найдено MPDU
-15CorruptedAMPDUВсе разделители в полученном A-MPDU не прошли циклическую проверку на избыточность (CRC)
-16InvalidDelimiterLengthНедопустимое поле длины в разделителе MPDU
-17MaxAMSDULenthExceededA-MSDU превышает максимальный предел длины
-18MaxMPDULengthExceededMPDU превышает максимальный предел длины
-19MaxMMPDULengthExceededСистема координат управления MAC превышает максимальный предел длины
-20MaxMSDULengthExceededMSDU превышает максимальный предел длины
-21UnexpectedProtectedFrameНедопустимое значение защищенного бита для этого типа системы координат
-22UnsupportedTriggerTypeНеподдерживаемый тип триггерной системы координат
-23UnknownHELTFTypeAndGIНеизвестный защитный интервал (GI) и высокоэффективный тип длинного поля обучения (HE-LTF)
-24UnknownAPTxPowerНеизвестное значение для подполя AP Tx Power поля 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 означает, что деагрегация A-MPDU остановлена, поскольку входной A-MPDU поврежден или неправильно сформирован.

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

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2019a
Для просмотра документации необходимо авторизоваться на сайте