wlanMPDUDecode

Описание

пример

[cfgMAC,payload,status] = wlanMPDUDecode(mpdu,cfgPHY) восстанавливает payload, один или несколько модулей эксплуатационных данных MAC (MSDUs), путем декодирования Модуля данных о протоколе MAC (MPDU) mpdu для физического уровня (PHY) объект cfgPHY настройки формата. Функция также возвращает status, который указывает на результат декодирования MPDU и cfgMAC, wlanMACFrameConfig объект настройки.

пример

[cfgMAC,payload,status] = wlanMPDUDecode(___,'DataFormat',format) задает формат данных входа MPDU, который будет декодироваться.

Примеры

свернуть все

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

txCfgMAC = wlanMACFrameConfig('FrameType','QoS Data');
mpduOctets = wlanMACFrame(randi([0 255],1,40),txCfgMAC);

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

mpdu = reshape(de2bi(hex2dec(mpduOctets), 8)',[],1);

Создайте не высокий формат пропускной способности (non-HT-format) объект настройки с настройками по умолчанию.

cfgPHY = wlanNonHTConfig;

Возвратите MSDUs путем декодирования MPDU для заданной настройки формата PHY.

[rxCfgMAC,payload,status] = wlanMPDUDecode(mpdu,cfgPHY);

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

txCfgMAC =  wlanMACFrameConfig('FrameType','QoS Data');
mpdu = wlanMACFrame(randi([0 255],1,40),txCfgMAC);

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

cfgPHY = wlanNonHTConfig;

Возвратите MSDUs путем декодирования MPDU для заданной настройки формата PHY.

[rxCfgMAC,payload,status] = wlanMPDUDecode(mpdu,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

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

свернуть все

MPDU, который будет декодироваться в виде одного из этих значений:

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

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

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

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

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

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

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

Формат входа MPDU в виде 'bits' или 'octets'.

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

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

свернуть все

Настройка системы координат MAC, возвращенная как wlanMACFrameConfig объект.

Один или несколько MSDUs, возвращенные как массив ячеек символьных массивов. Функция возвращает символьный массив для каждого MSDU. В этих символьных массивах каждая строка является шестнадцатеричным представлением октета. Для каждой системы координат MAC, которая не содержит данных, функция возвращает payload как массив пустой ячейки.

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

Состояние декодирования MPDU, возвращенного как неположительное целое число в интервале [–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 превысил максимальный предел длины

Перечислимая величина кроме 0 средние значения это MPDU декодирование не пройдено. Если декодирование перестало работать, выход cfgMAC отображения никакие свойства и выход payload возвращен как массив пустой ячейки.

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

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

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

Введенный в R2019a