wlanAMPDUDeaggregate

Deaggregate A-MPDU и извлечение MPDUs

Описание

пример

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

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

пример

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

пример

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

Примеры

свернуть все

Создайте объект настройки системы координат ВЛАНА МАКА, задав тип системы координат, структурируйте формат и агрегацию MPDU.

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

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

cfgPHY = wlanHTConfig('AggregatedMPDU',1);

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

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

Возвратите список MPDUs deaggregating A-MPDU.

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

Подтвердите успешный deaggregation путем отображения результата CRC разделителя и состояния декодирования.

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

Создайте объект настройки системы координат ВЛАНА МАКА, задав тип системы координат и структурируйте формат.

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

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

cfgPHY = wlanVHTConfig;

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

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

Deaggregate A-MPDU.

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

Подтвердите успешный deaggregation путем отображения результата CRC разделителя и состояния декодирования.

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

Deaggregate VHT A-MPDU и декодируют извлеченный MPDUs.

Создайте объект настройки системы координат ВЛАНА МАКА для VHT A-MPDU.

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

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

cfgPHY = wlanVHTConfig;

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

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

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

ampdu = wlanMACFrame(txPayload,txCfgMAC,cfgPHY);

Извлеките список MPDUs deaggregating A-MPDU. Отобразите состояние deaggregation и CRC разделителя.

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

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

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, чтобы быть deaggregated в виде одного из этих значений.

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

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

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

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

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

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

Формат PHY в виде одного из этих значений.

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

  • 'HE-EXT-SU' — SU расширенной области значений HE (HE SU ER) формат

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

  • 'HE-TB' — Основанный на триггере HE (Тбайт HE) формат

  • '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 — Подавите предупреждающие сообщения.

Типы данных: логический

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

свернуть все

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

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

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

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

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

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

Типы данных: логический

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

Перечислимая величинаЧлен класса перечисленияДекодирование состояния
0SuccessСистема координат MAC успешно декодируется
-1FCSFailedПоследовательность проверки системы координат (FCS) перестала работать
-2InvalidProtocolVersionНедопустимая версия протокола
-3UnsupportedFrameTypeНеподдерживаемый тип системы координат
-4UnsupportedFrameSubtypeНеподдерживаемый подтип системы координат
-5NotEnoughDataНедостаточные данные, чтобы декодировать систему координат
-6UnsupportedBAVariantВариант Unsupported Блока система координат Ack
-7UnknownBitmapSizeНеизвестный растровый размер
-8UnknownAddressExtModeНеизвестный режим расширения адреса
-9MalformedAMSDULengthУродливый совокупный модуль эксплуатационных данных MAC (A-MSDU) с недопустимой длиной
-10MalformedSSIDУродливый сервис установил идентификатор (SSID) информационный элемент (IE)
-11MalformedSupportedRatesIEУродливый поддерживаемый IE уровней
-12MalformedIELengthУродливое поле длины IE
-13MissingMandatoryIEsОбязательные пропавшие без вести IES
-14NoMPDUFoundНикакой MPDU не найден в A-MPDU
-15CorruptedAMPDUВсе разделители в принятом А-МПДУ привели контроль циклическим избыточным кодом (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 поля User Info
-27UnknownULMCSНеизвестное значение для подполя MCS UL поля User Info
-28UnknownTargetRSSIНеизвестное значение для Цели UL подполе RSSI поля User Info
-29UnsupportedBARTypeНеподдерживаемое значение для подполя Типа ПАНЕЛИ Поля элемента управления ПАНЕЛИ
-30MissingUserInfoПринятый триггерный кадр содержит поле Info недействительного пользователя
-31InvalidLSIGLengthНедопустимое значение для подполя Длины UL поля Common Info, соответствуя длине устаревшего поля (L-SIG) сигнала.

Перечислимая величина кроме 0 средние значения, что A-MPDU deaggregation, остановленный, потому что вход A-MPDU поврежден или уродлив.

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

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

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

Введенный в R2019a