В этом примере показов, как сконфигурировать и сгенерировать MAC- систем координат WLAN, а затем восстановить полезную нагрузку MSDU путем анализа MAC- системы координат.
Семейство 802.11™ стандартов IEEE ® поддерживает четыре типа MAC-фрейма: управление, данные, управление и расширение. В рамках каждого из этих типов стандарт задает область значений подтипов, каждый из которых служит определенной цели в 802.11™ сети.
В этом примере показано, как сконфигурировать, сгенерировать и проанализировать MPDU и A-MPDU с помощью объектов и функций строения WLAN Toolbox™.
Создайте объект конфигурации MAC-фрейма для фрейма данных, задав высокоэффективную конфигурацию физического уровня (PHY) однопользовательского (HE SU) физического уровня (HE SU).
cfgMPDU = wlanMACFrameConfig('FrameType','Data','FrameFormat','HE-SU');
Задайте MSDU как числовой вектор октетов в битовом формате. Можно также задать MSDU как вектор символов или строку октетов в шестнадцатеричном формате.
msdu = randi([0 255],32,1);
Сгенерируйте MPDU путем вызова wlanMACFrame
функция, задающая биты в качестве выхода формата.
[mpdu,mpduLength] = wlanMACFrame(msdu,cfgMPDU,'OutputFormat','bits');
Восстановите MSDU, позвонив в wlanMPDUDecode
функция. Функция также возвращает объект MAC системы координат строения и состояние декодирования. Проверьте, что операция декодирования возвращает правильный формат системы координат, и отобразите состояние.
[rxCfgMPDU,payload,status] = wlanMPDUDecode(mpdu,wlanHESUConfig); disp(isequal(cfgMPDU.FrameFormat,rxCfgMPDU.FrameFormat))
1
disp(status)
Success
Создайте объект строения для MAC- системы координат данных QoS, задав строение HE SU PHY. Включите агрегацию MPDU и отключите агрегацию MSDU.
cfgAMPDU = wlanMACFrameConfig('FrameType','QoS Data','FrameFormat','HE-SU',... 'MPDUAggregation',true,'MSDUAggregation',false);
Задайте массив ячеек из MSDU, задав каждый MSDU как числовой вектор октетов в битовом формате. Можно также задать MSDU как вектор символов или строку октетов в шестнадцатеричном формате.
msduList = repmat({randi([0 255],32,1)},1,4);
Сгенерируйте MPDU для строения HE SU PHY путем вызова wlanMACFrame
функция.
cfgPHY = wlanHESUConfig('MCS',5); [ampdu,ampduLength] = wlanMACFrame(msduList,cfgAMPDU,cfgPHY,'OutputFormat','bits');
Деагрегируйте A-MPDU, чтобы вернуть список MPDU путем вызова wlanAMPDUDeaggregate
функция. Функция также возвращает результат циклической проверки избыточности разделителя (CRC) и состояние деагрегации A-MPDU.
[mpduList,delimiterCRCFailure,status] = wlanAMPDUDeaggregate(ampdu,cfgPHY);
Отображение количества отказов CRC разделителя и состояния деагрегирования.
disp(nnz(delimiterCRCFailure))
0
disp(status)
Success
Получите MSDU путем декодирования деагрегированных MPDU с wlanMPDUDecode
и отобразите состояние процесса декодирования.
if strcmp(status,'Success') for i = 1:numel(mpduList) if ~delimiterCRCFailure(i) [cfg,msdu,decodeStatus] = wlanMPDUDecode(mpduList{i},cfgPHY,'DataFormat','octets'); disp(['MPDU ' num2str(i) ' decoding status: ' char(decodeStatus)]) end end end
MPDU 1 decoding status: Success MPDU 2 decoding status: Success MPDU 3 decoding status: Success MPDU 4 decoding status: Success