Деагрегация 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(___,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
ampdu - A-MPDU должен быть деагрегированA-MPDU, подлежащий деагрегированию, указывается как одно из этих значений.
Вектор с двоичным значением, представляющий A-MPDU в битовом формате
Вектор целых чисел в интервале [0, 255], представляющий октеты в десятичном формате
Строковый скаляр, представляющий A-MPDU как октеты в шестнадцатеричном формате
Символьный вектор, представляющий A-MPDU в виде октетов в шестнадцатеричном формате
Символьный массив, где каждая строка представляет октет в шестнадцатеричном формате
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string
phyFormat - формат PHY'HE-SU' | 'HE-EXT-SU' | 'HE-MU | 'HE-TB' | 'VHT' | 'HT'Формат 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
cfgPHY - формат PHY и параметры передачиwlanHESUConfig объект | wlanHEMUConfig объект | wlanHETBConfig объект | wlanHERecoveryConfig объект | wlanVHTConfig объект | wlanHTConfig объектФормат PHY и параметры передачи, указанные как один из этих объектов.
wlanHESUConfig - Формат HE SU или HE ER SU
wlanHEMUConfig - Формат MU HE
wlanHETBConfig - формат HE TB
wlanHERecoveryConfig - Восстановлена передача HE в формате HE SU, HE ER SU или HE MU
wlanVHTConfig - Формат VHT
wlanHTConfig - формат HT
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'DataFormat','octets''DataFormat' - Формат входа A-MPDU'bits' (по умолчанию) | 'octets'Формат входного A-MPDU, определяемый как разделенная запятыми пара, состоящая из 'DataFormat' и одно из этих значений.
'bits' - Укажите ampdu ввод в битовом формате
'octets' - Укажите ampdu ввод в формате октета
Типы данных: char | string
'SuppressWarnings' - Подавление предупреждающих сообщенийfalse или 0 (по умолчанию) | true или 1Подавление предупреждающих сообщений, указанных как разделенная запятыми пара, состоящая из 'SuppressWarnings' и одно из этих значений.
false или 0 - Разрешить предупреждающие сообщения.
true или 1 - Подавление предупреждающих сообщений.
Типы данных: logical
mpduList - Перечень блоков MPDUСписок MPDU, возвращаемый как массив ячеек символьных массивов, где каждый массив символов соответствует одному MPDU. В этих символьных массивах каждая строка является шестнадцатеричным представлением октета.
Если разделитель MPDU не найден на входе A-MPDU, функция возвращает mpduList в виде пустого массива ячеек.
Типы данных: cell
failCRC - Индикатор отказа CRC разделителяИндикатор отказа CRC разделителя, возвращаемый в виде вектора строки логических значений. Каждый элемент этого вектора указывает состояние отказа CRC разделителя для подкадра A-MPDU.
Значение 1 для k-го элемента этого вектора указывает, что ошибка CRC разделителя для k-го подкадра A-MPDU. В этом случае k-й элемент mpduList содержит недопустимый MPDU.
Значение 0 для k-го элемента этого вектора указывает, что CRC разделителя передан для k-го подкадра. В этом случае k-й элемент mpduList содержит допустимый MPDU.
Типы данных: logical
status - Состояние деагрегации A-MPDUСостояние деагрегации A-MPDU, возвращаемое как непозволительное целое число в интервале [-20, 0]. Каждое значение перечисления status соответствует члену wlanMACDecodeStatus класс перечисления, который указывает состояние синтаксического анализа кадров MAC в соответствии с этой таблицей.
| Значение перечисления | Член класса перечисления | Состояние декодирования |
0 | Success | Кадр MAC успешно декодирован |
-1 | FCSFailed | Сбой последовательности проверки кадров (FCS) |
-2 | InvalidProtocolVersion | Недопустимая версия протокола |
-3 | UnsupportedFrameType | Неподдерживаемый тип кадра |
-4 | UnsupportedFrameSubtype | Неподдерживаемый подтип кадра |
-5 | NotEnoughData | Недостаточно данных для декодирования кадра |
-6 | UnsupportedBAVariant | Неподдерживаемый вариант кадра подтверждения блокировки |
-7 | UnknownBitmapSize | Неизвестный размер растрового изображения |
-8 | UnknownAddressExtMode | Режим расширения неизвестного адреса |
-9 | MalformedAMSDULength | Неверно сформированный агрегатный блок данных службы MAC (A-MSDU) с недопустимой длиной |
-10 | MalformedSSID | Неправильный информационный элемент (IE) идентификатора набора служб (SSID) |
-11 | MalformedSupportedRatesIE | Неправильно сформированные поддерживаемые скорости IE |
-12 | MalformedIELength | Неправильно сформированное поле длины IE |
-13 | MissingMandatoryIEs | Отсутствуют обязательные IE |
-14 | NoMPDUFound | Не найден MPDU в A-MPDU |
-15 | CorruptedAMPDU | Все разделители в полученном A-MPDU не прошли проверку циклическим избыточным кодом (CRC) |
-16 | InvalidDelimiterLength | Недопустимое поле длины в разделителе MPDU |
-17 | MaxAMSDULenthExceeded | A-MSDU превышает максимальный предел длины |
-18 | MaxMPDULengthExceeded | MPDU превышает максимальный предел длины |
-19 | MaxMMPDULengthExceeded | Длина кадра управления MAC превышает максимальный предел |
-20 | MaxMSDULengthExceeded | MSDU превышает максимальный предел длины |
-21 | UnexpectedProtectedFrame | Недопустимое значение защищенного бита для этого типа кадра |
-22 | UnsupportedTriggerType | Неподдерживаемый тип кадра триггера |
-23 | UnknownHELTFTypeAndGI | Неизвестный защитный интервал (GI) и высокоэффективное длинное поле обучения (HE-LTF) |
-24 | UnknownAPTxPower | Неизвестное значение для подполя мощности AP Tx поля Common Info |
-25 | UnknownAID12Value | Неизвестное значение для поля AID12 User Info " |
-26 | UnknownRUAllocation | Неизвестное значение для B7-B1 в подразделе Выделение RU поля Информация о пользователе |
-27 | UnknownULMCS | Неизвестное значение для подполя UL MCS поля User Info |
-28 | UnknownTargetRSSI | Неизвестное значение для подполя UL Target RSSI поля User Info |
-29 | UnsupportedBARType | Неподдерживаемое значение для поля BAR Type поля BAR Control |
-30 | MissingUserInfo | Принятый кадр триггера содержит недопустимое поле User Info |
-31 | InvalidLSIGLength | Недопустимое значение для подполя UL Length поля Common Info, соответствующего длине поля унаследованного сигнала (L-SIG). |
Значение перечисления, отличное от 0 означает, что деагрегация A-MPDU остановлена, поскольку входной A-MPDU поврежден или неправильно сформирован.
Типы данных: int16
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.