exponenta event banner

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 в виде октетов в шестнадцатеричном формате

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

Типы данных: 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'

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

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

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

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

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

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

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

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

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

свернуть все

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

Если разделитель MPDU не найден на входе A-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 в соответствии с этой таблицей.

Значение перечисленияЧлен класса перечисленияСостояние декодирования
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 означает, что деагрегация A-MPDU остановлена, поскольку входной A-MPDU поврежден или неправильно сформирован.

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

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

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

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