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Недопустимое значение защищенного бита для этого типа системы координат

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

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

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

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

Введенный в R2019a