Decode MPDU
[
recovers cfgMAC
,payload
,status
] = wlanMPDUDecode(mpdu
,phyFormat
)payload
, one or more MAC service data units (MSDUs), by
decoding MAC protocol data unit (MPDU) mpdu
. The function decodes the
MPDU by using parameters appropriate for the specified PHY format.
The function also returns status
, the result of the MPDU decoding,
and cfgMAC
, a wlanMACFrameConfig
configuration
object.
[
specifies options using one or more name-value pair arguments in addition any input argument
combination from previous syntaxes.cfgMAC
,payload
,status
] = wlanMPDUDecode(___,Name,Value
)
Create a WLAN MAC frame configuration object for an MPDU in high-efficiency single-user (HE SU) format, and then generate the MPDU.
phyFormat = 'HE-SU'; cfgMAC = wlanMACFrameConfig('FrameFormat',phyFormat); payload = randi([0 255],1,40); mpdu = wlanMACFrame(payload,cfgMAC,'OutputFormat','bits');
Return the MSDUs by decoding the MPDU for the specified PHY format configuration.
[rxCfgMAC,payload,status] = wlanMPDUDecode(mpdu,phyFormat);
Confirm successful decoding by displaying the status.
disp(status)
Success
Create a WLAN MAC frame configuration object for a QoS Data frame, and then generate the MPDU.
cfgMAC = wlanMACFrameConfig('FrameType','QoS Data'); payload = randi([0 255],1,40); mpdu = wlanMACFrame(payload,cfgMAC,'OutputFormat','bits');
Create a non-high-throughput-format (non-HT-format) configuration object with default settings.
cfgPHY = wlanNonHTConfig;
Return the MSDUs by decoding the MPDU for the specified PHY format configuration.
[cfgMAC,payload,status] = wlanMPDUDecode(mpdu,cfgPHY);
Confirm successful decoding by displaying the status.
disp(status)
Success
Deaggregate a VHT A-MPDU and decode the extracted MPDUs.
Create a WLAN MAC frame configuration object for a VHT A-MPDU.
txCfgMAC = wlanMACFrameConfig('FrameType','QoS Data','FrameFormat','VHT');
Create a VHT-format configuration object with default settings.
cfgPHY = wlanVHTConfig;
Generate a random payload of eight MSDUs.
txPayload = repmat({randi([0 255],1,40)},1,8);
Generate the A-MPDU containing eight MPDUs for the specified MAC and PHY configurations.
ampdu = wlanMACFrame(txPayload,txCfgMAC,cfgPHY);
Extract the list of MPDUs by deaggregating the A-MPDU. Display the status of the deaggregation and the delimiter CRC.
[mpduList,failCRC,status] = wlanAMPDUDeaggregate(ampdu,cfgPHY,'DataFormat','octets'); disp(status)
Success
disp(failCRC)
0 0 0 0 0 0 0 0
Decode all of the MPDUs in the extracted. Confirm successful decoding by displaying the status.
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
mpdu
— MPDU to be decodedMPDU to be decoded, specified as one of these values.
A binary-valued vector representing the MPDU in bit form
A vector of integers in the interval [0, 255] representing octets in decimal format
A string scalar representing the MPDU as octets in hexadecimal format
A character vector representing the MPDU as octets in hexadecimal format
A character array, where each row represents an octet in hexadecimal format
Data Types: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| char
| string
phyFormat
— PHY format'HE-SU'
| 'HE-EXT-SU'
| 'HE-MU
| 'HE-TB'
| 'VHT'
| 'HT'
PHY format, specified as one of these values.
'HE-SU'
— High-efficiency single-user (HE SU)
format
'HE-EXT-SU'
— HE extended-range SU (HE ER SU)
format
'HE-MU'
— HE multi-user (HE MU) format
'HE-TB'
— HE trigger-based (HE TB) format
'VHT'
— Very-high-throughput (VHT) format
'HT'
— High-throughput (HT) format
Data Types: char
| string
cfgPHY
— PHY format and transmission parameterswlanHESUConfig
object | wlanHEMUConfig
object | wlanHETBConfig
object | wlanHERecoveryConfig
object | wlanVHTConfig
object | wlanHTConfig
object | wlanNonHTConfig
objectPHY format and transmission parameters, specified as one of these objects.
wlanHESUConfig
— HE SU or HE ER SU format
wlanHEMUConfig
— HE MU format
wlanHETBConfig
—
HE TB format
wlanHERecoveryConfig
— Recovered HE transmission in HE SU, HE
ER SU, or HE MU format
wlanVHTConfig
— VHT format
wlanHTConfig
— HT format
wlanNonHTConfig
—
Non-high-throughput (non-HT) format
Specify optional
comma-separated pairs of Name,Value
arguments. Name
is
the argument name and Value
is the corresponding value.
Name
must appear inside quotes. You can specify several name and value
pair arguments in any order as
Name1,Value1,...,NameN,ValueN
.
'DataFormat','octets'
'DataFormat'
— Format of input MPDU'bits'
(default) | 'octets'
Format of input MPDU, specified as the comma-separated pair consisting of
'DataFormat'
and one of these values.
'bits'
— Specify the mpdu
input in bit format
'octets'
— Specify the mpdu
input in octet format
Data Types: char
| string
'SuppressWarnings'
— Suppress warning messagesfalse
or 0
(default) | true
or 1
Suppress warning messages, specified as the comma-separated pair consisting of
'SuppressWarnings'
and one of these values.
false
or 0
— Allow warning
messages.
true
or 1
— Suppress warning
messages.
Data Types: logical
cfgMAC
— MAC frame configurationwlanMACFrameConfig
objectMAC frame configuration, returned as a wlanMACFrameConfig
object.
payload
— One or more MSDUsOne or more MSDUs, returned as a cell array of character arrays. The function
returns a character array for each MSDU. In these character arrays, each row is the
hexadecimal representation of an octet. For each MAC frame that contains no data, the
function returns payload
as an empty cell array.
Data Types: cell
status
— Status of MPDU decodingStatus of MPDU decoding, returned as a nonpositive integer in the interval [–20, 0].
Each value of status
corresponds to a member of the
wlanMACDecodeStatus
enumeration class, which indicates the status of
MAC frame decoding according to this table.
Enumeration value | Member of enumeration class | Decoding Status |
0 | Success | MAC frame successfully decoded |
–1 | FCSFailed | Frame check sequence (FCS) failed |
–2 | InvalidProtocolVersion | Invalid protocol version |
–3 | UnsupportedFrameType | Unsupported frame type |
–4 | UnsupportedFrameSubtype | Unsupported frame subtype |
–5 | NotEnoughData | Insufficient data to decode the frame |
–6 | UnsupportedBAVariant | Unsupported variant of Block Ack frame |
–7 | UnknownBitmapSize | Unknown bitmap size |
–8 | UnknownAddressExtMode | Unknown address extension mode |
–9 | MalformedAMSDULength | Malformed aggregated MAC service data unit (A-MSDU) with invalid length |
–10 | MalformedSSID | Malformed service set identifier (SSID) information element (IE) |
–11 | MalformedSupportedRatesIE | Malformed supported rates IE |
–12 | MalformedIELength | Malformed IE length field |
–13 | MissingMandatoryIEs | Mandatory IEs missing |
–14 | NoMPDUFound | No MPDU found in the A-MPDU |
–15 | CorruptedAMPDU | All the delimiters in the given A-MPDU failed the cyclic redundancy check (CRC) |
–16 | InvalidDelimiterLength | Invalid length field in MPDU delimiter |
–17 | MaxAMSDULenthExceeded | A-MSDU exceeds the maximum length limit |
–18 | MaxMPDULengthExceeded | MPDU exceeds the maximum length limit |
–19 | MaxMMPDULengthExceeded | MAC management frame exceeds the maximum length limit |
–20 | MaxMSDULengthExceeded | MSDU exceeds the maximum length limit |
–21 | UnexpectedProtectedFrame | Invalid value of protected bit for this frame type |
An enumeration value other than 0
means that MPDU decoding
failed. If the decoding fails, the output cfgMAC
displays no
properties and the output payload
is returned as an empty cell
array.
Data Types: int16
You have a modified version of this example. Do you want to open this example with your edits?