wlanAMPDUDeaggregate

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

Синтаксис

[mpduList,delimiterCRCFail,status] = wlanAMPDUDeaggregate(ampdu,cfgPHY)
[mpduList,delimiterCRCFail,status] = wlanAMPDUDeaggregate(___,'DataFormat',format)

Описание

пример

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

пример

[mpduList,delimiterCRCFail,status] = wlanAMPDUDeaggregate(___,'DataFormat',format) задает формат данных входа A-MPDU, чтобы быть deaggregated.

Примеры

свернуть все

Deaggregate очень высокий формат пропускной способности (VHT-формат) A-MPDU задан в битной форме.

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

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

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

cfgPHY = wlanVHTConfig;

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

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

Преобразуйте A-MPDU в битную форму.

ampdu = reshape(de2bi(hex2dec(ampduOctets),8)',[],1);

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

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

Deaggregate высокий формат пропускной способности (HT-формат) A-MPDU, заданный в форме октета.

Создайте объект настройки кадра ВЛАНА МАКА, задав тип кадра, структурируйте формат и агрегацию 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);

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

[mpduList,delimiterCRCFail,status] = wlanAMPDUDeaggregate(ampdu,cfgPHY,'DataFormat','octets');

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, delimiterCRCFail, status] = ... 
    wlanAMPDUDeaggregate(ampdu,cfgPHY,'DataFormat','octets');
disp(status)
    Success
disp(delimiterCRCFail)
   0   0   0   0   0   0   0   0

Декодируйте весь MPDUs в извлеченном списке.

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

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

свернуть все

A-MPDU, чтобы быть deaggregated, заданным как одно из этих значений:

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

  • числовые октеты представления вектора в десятичном формате, где каждый элемент является целым числом в интервале [0, 255];

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

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

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

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

Настройка формата PHY, заданная как объект типа wlanHESUConfig, wlanVHTConfig или wlanHTConfig. Этот объект задает настройку формата PHY и ее применимые свойства.

Формат входа A-MPDU, заданного как 'bits' или 'octets'.

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

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

свернуть все

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

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

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

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

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

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

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

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

Перечислимая величинаЧлен класса перечисленияДекодирование состояния
0SuccessКадр MAC успешно декодируется
–1FCSFailedПоследовательность проверки кадра (FCS) перестала работать
–2InvalidProtocolVersionНедопустимая версия протокола
–3UnsupportedFrameTypeНеподдерживаемый тип кадра
–4UnsupportedFrameSubtypeНеподдерживаемый подтип кадра
–5NotEnoughDataНедостаточные данные, чтобы декодировать кадр
–6UnsupportedBAVariantНеподдерживаемый вариант Блока кадр 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 превысил максимальный предел длины

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

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

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

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

Смотрите также

Функции

Объекты

Введенный в R2019a