org.pcap4j.packet.Dot11HTCapabilitiesElement Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pcap4j-core Show documentation
Show all versions of pcap4j-core Show documentation
The core module of Pcap4J.
/*_##########################################################################
_##
_## Copyright (C) 2016 Pcap4J.org
_##
_##########################################################################
*/
package org.pcap4j.packet;
import java.nio.ByteOrder;
import java.util.Arrays;
import org.pcap4j.packet.namednumber.Dot11InformationElementId;
import org.pcap4j.util.ByteArrays;
/**
* IEEE802.11 HT Capabilities element
*
*
* 1 1 2 1 16 2 4 1
* +------------+------------+------------+------------+------------+------------+------------+------------+
* | Element ID | Length | HT | A-MPDU | Supported | HT | Transmit | ASEL |
* | | |Capabilities| Parameters | MCS Set | Extended |Beamforming |Capabilities|
* | | | Info | | |Capabilities|Capabilities| |
* +------------+------------+------------+------------+------------+------------+------------+------------+
* Element ID: 45
*
* HT Capabilities Info:
* B0 B1 B2 B3 B4 B5 B6 B7 B8 B9
* +------------+------------+------------+------------+------------+------------+------------+------------+
* | LDPC | Supported | SM | HT- |Short GI for|Short GI for| Tx | Rx |
* | Coding | Channel | Power | Greenfield | 20 MHz | 40 MHz | STBC | STBC |
* | Capability | Width Set | Save | | | | | |
* +------------+------------+------------+------------+------------+------------+------------+------------+
*
* B10 B11 B12 B13 B14 B15
* +------------+------------+------------+------------+------------+------------+
* | HT-Delayed | Maximum | DSSS/CCK | Reserved | Forty MHz | L-SIG TXOP |
* | Block Ack | A-MSDU | Mode in | | Intolerant | Protection |
* | | Length | 40 MHz | | | Support |
* +------------+------------+------------+------------+------------+------------+
*
* A-MPDU Parameters:
* B0 B1 B2 B4 B5 B7
* +---------------+------------------------+------------------------+
* |Maximum A-MPDU | Minimum MPDU | Reserved |
* |Length Exponent| Start Spacing | |
* +---------------+------------------------+------------------------+
*
* Supported MCS Set field:
* B0 B76 B77 B79 B80 B89 B90 B95
* +---------------+----------+--------------------------------+----------+
* |Rx MCS Bitmask | Reserved | Rx Highest Supported Data Rate | Reserved |
* +---------------+----------+--------------------------------+----------+
*
* B96 B97 B98 B99 B100 B101 B127
* +----------+----------+--------------------+----------+------//------+
* |Tx MCS Set| Tx Rx | Tx Maximum Number |Tx Unequal| Reserved |
* | Defined | MCS Set | Spatial Streams |Modulation| |
* | |Not Equal | Supported |Supported | |
* +----------+----------+--------------------+----------+------//------+
*
* HT Extended Capabilities:
* B0 B1 B2 B3 B7 B8 B9 B10 B11 B12 B15
* +---------+-------------------+----//-----+-------------------+--------+---------+----//-----+
* | PCO | PCO | Reserved | MCS | +HTC | RD | Reserved |
* | | Transition Time | | Feedback |Support |Responder| |
* | | | | | | | |
* +---------+-------------------+----//-----+-------------------+--------+---------+----//-----+
*
* Transmit Beamforming Capabilities:
* B0 B1 B2 B3 B4 B5 B6 B7 B8
* +------------+------------+------------+------------+------------+------------+-------------------------+------------+
* | Implicit | Receive | Transmit | Receive | Transmit | Implicit | Calibration |Explicit CSI|
* | Transmit | Staggered | Staggered | NDP | NDP | Transmit | | Transmit |
* |Beamforming | Sounding | Sounding | Capable | Capable |Beamforming | |Beamforming |
* | Receiving | Capable | Capable | | | Capable | | Capable |
* | Capable | | | | | | | |
* +------------+------------+------------+------------+------------+------------+-------------------------+------------+
*
* B9 B10 B11 B12 B13 B14 B15 B16
* +-------------+-------------+---------------------------+---------------------------+---------------------------+
* | Explicit | Explicit | Explicit Transmit | Explicit Noncompressed | Explicit Compressed |
* |Noncompressed| Compressed | Beamforming | Beamforming | Beamforming |
* | Steering | Steering | CSI Feedback | Feedback Capable | Feedback Capable |
* | Capable | Capable | | | |
* +-------------+-------------+---------------------------+---------------------------+---------------------------+
*
* B17 B18 B19 B20 B21 B22 B23 B24
* +---------------------------+---------------------------+---------------------------+---------------------------+
* | Minimal | CSI Number of | Noncompressed Steering | Compressed Steering |
* | Grouping | Beamformer | Number of Beamformer | Number of Beamformer |
* | | Antennas Supported | Antennas Supported | Antennas Supported |
* | | | | |
* +---------------------------+---------------------------+---------------------------+---------------------------+
*
* B25 B26 B27 B28 B29 B30 B31
* +-------------------------+-------------------------+--------------------------------------+
* | CSI Max Number of | Channel | Reserved |
* |Rows Beamformer Supported| Estimation Capability | |
* +-------------------------+-------------------------+--------------------------------------+
*
* ASEL Capability:
* B0 B1 B2 B3 B4 B5 B6 B7
* +---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+
* | Antenna | Explicit CSI |Antenna Indices| Explicit CSI |Antenna Indices| Receive | Transmit | Reserved |
* | Selection |Feedback Based |Feedback Based | Feedback | Feedback | ASEL Capable | Sounding | |
* | Capable | Transmit | Transmit | Capable | Capable | | PPDUs | |
* | | ASEL Capable | ASEL Capable | | | | Capable | |
* +---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+
*
*
* The HT Capabilities element contains a number of fields that are used to advertise optional HT
* capabilities of an HT STA. The HT Capabilities element is present in Beacon, Association Request,
* Association Response, Reassociation Request, Reassociation Response, Probe Request, Probe
* Response, Mesh Peering Open, and Mesh Peering Close frames.
*
* @see IEEE802.11
* @author Kaito Yamada
* @since pcap4j 1.7.0
*/
public final class Dot11HTCapabilitiesElement extends Dot11InformationElement {
/** */
private static final long serialVersionUID = -5174208022820530840L;
private final boolean ldpcCodingSupported;
private final boolean both20and40MhzSupported;
private final SmPowerSaveMode smPowerSaveMode;
private final boolean htGreenfieldSupported;
private final boolean shortGiFor20MhzSupported;
private final boolean shortGiFor40MhzSupported;
private final boolean txStbcSupported;
private final StbcSupport rxStbcSupport;
private final boolean htDelayedBlockAckSupported;
private final AMsduLength maxAMsduLength;
private final boolean dsssCckModeIn40MhzSupported;
private final boolean bit13OfHtCapabilitiesInfo;
private final boolean fortyMhzIntolerant;
private final boolean lSigTxopProtectionSupported;
private final AMpduLength maxAMpduLength;
private final MpduStartSpacing minMpduStartSpacing;
private final boolean bit5OfAMpduParameters;
private final boolean bit6OfAMpduParameters;
private final boolean bit7OfAMpduParameters;
private final boolean[] supportedRxMcsIndexes;
private final boolean bit77OfSupportedMcsSet;
private final boolean bit78OfSupportedMcsSet;
private final boolean bit79OfSupportedMcsSet;
private final short rxHighestSupportedDataRate;
private final boolean bit90OfSupportedMcsSet;
private final boolean bit91OfSupportedMcsSet;
private final boolean bit92OfSupportedMcsSet;
private final boolean bit93OfSupportedMcsSet;
private final boolean bit94OfSupportedMcsSet;
private final boolean bit95OfSupportedMcsSet;
private final boolean txMcsSetDefined;
private final boolean txRxMcsSetNotEqual;
private final NumSpatialStreams txMaxNumSpatialStreamsSupported;
private final boolean txUnequalModulationSupported;
private final boolean bit101OfSupportedMcsSet;
private final boolean bit102OfSupportedMcsSet;
private final boolean bit103OfSupportedMcsSet;
private final boolean bit104OfSupportedMcsSet;
private final boolean bit105OfSupportedMcsSet;
private final boolean bit106OfSupportedMcsSet;
private final boolean bit107OfSupportedMcsSet;
private final boolean bit108OfSupportedMcsSet;
private final boolean bit109OfSupportedMcsSet;
private final boolean bit110OfSupportedMcsSet;
private final boolean bit111OfSupportedMcsSet;
private final boolean bit112OfSupportedMcsSet;
private final boolean bit113OfSupportedMcsSet;
private final boolean bit114OfSupportedMcsSet;
private final boolean bit115OfSupportedMcsSet;
private final boolean bit116OfSupportedMcsSet;
private final boolean bit117OfSupportedMcsSet;
private final boolean bit118OfSupportedMcsSet;
private final boolean bit119OfSupportedMcsSet;
private final boolean bit120OfSupportedMcsSet;
private final boolean bit121OfSupportedMcsSet;
private final boolean bit122OfSupportedMcsSet;
private final boolean bit123OfSupportedMcsSet;
private final boolean bit124OfSupportedMcsSet;
private final boolean bit125OfSupportedMcsSet;
private final boolean bit126OfSupportedMcsSet;
private final boolean bit127OfSupportedMcsSet;
private final boolean pcoSupported;
private final PcoTransitionTime pcoTransitionTime;
private final boolean bit3OfHtExtendedCapabilities;
private final boolean bit4OfHtExtendedCapabilities;
private final boolean bit5OfHtExtendedCapabilities;
private final boolean bit6OfHtExtendedCapabilities;
private final boolean bit7OfHtExtendedCapabilities;
private final McsFeedbackCapability mcsFeedbackCapability;
private final boolean htControlFieldSupported;
private final boolean rdResponderSupported;
private final boolean bit12OfHtExtendedCapabilities;
private final boolean bit13OfHtExtendedCapabilities;
private final boolean bit14OfHtExtendedCapabilities;
private final boolean bit15OfHtExtendedCapabilities;
private final boolean implicitTxBeamformingReceivingSupported;
private final boolean rxStaggeredSoundingSupported;
private final boolean txStaggeredSoundingSupported;
private final boolean rxNdpSupported;
private final boolean txNdpSupported;
private final boolean implicitTxBeamformingSupported;
private final Calibration calibration;
private final boolean explicitCsiTxBeamformingSupported;
private final boolean explicitNoncompressedSteeringSupported;
private final boolean explicitCompressedSteeringSupported;
private final BeamformingFeedbackCapability explicitTxBeamformingCsiFeedbackCapability;
private final BeamformingFeedbackCapability explicitNoncompressedBeamformingFeedbackCapability;
private final BeamformingFeedbackCapability explicitCompressedBeamformingFeedbackCapability;
private final Grouping minGrouping;
private final NumBeamformerAntennas csiNumBeamformerAntennasSupported;
private final NumBeamformerAntennas noncompressedSteeringNumBeamformerAntennasSupported;
private final NumBeamformerAntennas compressedSteeringNumBeamformerAntennasSupported;
private final CsiNumRows csiMaxNumRowsBeamformerSupported;
private final ChannelEstimationCapability channelEstimationCapability;
private final boolean bit29OfTransmitBeamformingCapabilities;
private final boolean bit30OfTransmitBeamformingCapabilities;
private final boolean bit31OfTransmitBeamformingCapabilities;
private final boolean antennaSelectionSupported;
private final boolean explicitCsiFeedbackBasedTxAselSupported;
private final boolean antennaIndicesFeedbackBasedTxAselSupported;
private final boolean explicitCsiFeedbackSupported;
private final boolean antennaIndicesFeedbackSupported;
private final boolean rxAselSupported;
private final boolean txSoundingPpdusSupported;
private final boolean bit7OfAselCapability;
/**
* A static factory method. This method validates the arguments by {@link
* ByteArrays#validateBounds(byte[], int, int)}, which may throw exceptions undocumented here.
*
* @param rawData rawData
* @param offset offset
* @param length length
* @return a new Dot11HTCapabilitiesElement object.
* @throws IllegalRawDataException if parsing the raw data fails.
*/
public static Dot11HTCapabilitiesElement newInstance(byte[] rawData, int offset, int length)
throws IllegalRawDataException {
ByteArrays.validateBounds(rawData, offset, length);
return new Dot11HTCapabilitiesElement(rawData, offset, length);
}
/**
* @param rawData rawData
* @param offset offset
* @param length length
* @throws IllegalRawDataException if parsing the raw data fails.
*/
private Dot11HTCapabilitiesElement(byte[] rawData, int offset, int length)
throws IllegalRawDataException {
super(rawData, offset, length, Dot11InformationElementId.HT_CAPABILITIES);
if (getLengthAsInt() != 26) {
throw new IllegalRawDataException(
"The length must be 26 but is actually: " + getLengthAsInt());
}
byte data = rawData[offset + 2];
this.ldpcCodingSupported = (data & 0x01) != 0;
this.both20and40MhzSupported = (data & 0x02) != 0;
this.smPowerSaveMode = SmPowerSaveMode.getInstance((data >> 2) & 0x03);
this.htGreenfieldSupported = (data & 0x10) != 0;
this.shortGiFor20MhzSupported = (data & 0x20) != 0;
this.shortGiFor40MhzSupported = (data & 0x40) != 0;
this.txStbcSupported = (data & 0x80) != 0;
data = rawData[offset + 3];
this.rxStbcSupport = StbcSupport.getInstance(data & 0x03);
this.htDelayedBlockAckSupported = (data & 0x04) != 0;
this.maxAMsduLength = AMsduLength.getInstance((data >> 3) & 0x01);
this.dsssCckModeIn40MhzSupported = (data & 0x10) != 0;
this.bit13OfHtCapabilitiesInfo = (data & 0x20) != 0;
this.fortyMhzIntolerant = (data & 0x40) != 0;
this.lSigTxopProtectionSupported = (data & 0x80) != 0;
data = rawData[offset + 4];
this.maxAMpduLength = AMpduLength.getInstance(data & 0x03);
this.minMpduStartSpacing = MpduStartSpacing.getInstance((data >> 2) & 0x07);
this.bit5OfAMpduParameters = (data & 0x20) != 0;
this.bit6OfAMpduParameters = (data & 0x40) != 0;
this.bit7OfAMpduParameters = (data & 0x80) != 0;
this.supportedRxMcsIndexes = new boolean[77];
for (int i = 0; i < 9; i++) {
data = rawData[offset + 5 + i];
int bitOffset = i * 8;
for (int bit = 0; bit < 8; bit++) {
supportedRxMcsIndexes[bitOffset + bit] = (data & 0x01) != 0;
data >>= 1;
}
}
data = rawData[offset + 14];
for (int bit = 0; bit < 5; bit++) {
supportedRxMcsIndexes[72 + bit] = (data & 0x01) != 0;
data >>= 1;
}
this.bit77OfSupportedMcsSet = (data & 0x01) != 0;
this.bit78OfSupportedMcsSet = (data & 0x02) != 0;
this.bit79OfSupportedMcsSet = (data & 0x04) != 0;
data = rawData[offset + 16];
this.rxHighestSupportedDataRate = (short) ((rawData[offset + 15] | (data << 8)) & 0x03FF);
this.bit90OfSupportedMcsSet = (data & 0x04) != 0;
this.bit91OfSupportedMcsSet = (data & 0x08) != 0;
this.bit92OfSupportedMcsSet = (data & 0x10) != 0;
this.bit93OfSupportedMcsSet = (data & 0x20) != 0;
this.bit94OfSupportedMcsSet = (data & 0x40) != 0;
this.bit95OfSupportedMcsSet = (data & 0x80) != 0;
data = rawData[offset + 17];
this.txMcsSetDefined = (data & 0x01) != 0;
this.txRxMcsSetNotEqual = (data & 0x02) != 0;
this.txMaxNumSpatialStreamsSupported = NumSpatialStreams.getInstance((data >> 2) & 0x03);
this.txUnequalModulationSupported = (data & 0x10) != 0;
this.bit101OfSupportedMcsSet = (data & 0x20) != 0;
this.bit102OfSupportedMcsSet = (data & 0x40) != 0;
this.bit103OfSupportedMcsSet = (data & 0x80) != 0;
data = rawData[offset + 18];
this.bit104OfSupportedMcsSet = (data & 0x01) != 0;
this.bit105OfSupportedMcsSet = (data & 0x02) != 0;
this.bit106OfSupportedMcsSet = (data & 0x04) != 0;
this.bit107OfSupportedMcsSet = (data & 0x08) != 0;
this.bit108OfSupportedMcsSet = (data & 0x10) != 0;
this.bit109OfSupportedMcsSet = (data & 0x20) != 0;
this.bit110OfSupportedMcsSet = (data & 0x40) != 0;
this.bit111OfSupportedMcsSet = (data & 0x80) != 0;
data = rawData[offset + 19];
this.bit112OfSupportedMcsSet = (data & 0x01) != 0;
this.bit113OfSupportedMcsSet = (data & 0x02) != 0;
this.bit114OfSupportedMcsSet = (data & 0x04) != 0;
this.bit115OfSupportedMcsSet = (data & 0x08) != 0;
this.bit116OfSupportedMcsSet = (data & 0x10) != 0;
this.bit117OfSupportedMcsSet = (data & 0x20) != 0;
this.bit118OfSupportedMcsSet = (data & 0x40) != 0;
this.bit119OfSupportedMcsSet = (data & 0x80) != 0;
data = rawData[offset + 20];
this.bit120OfSupportedMcsSet = (data & 0x01) != 0;
this.bit121OfSupportedMcsSet = (data & 0x02) != 0;
this.bit122OfSupportedMcsSet = (data & 0x04) != 0;
this.bit123OfSupportedMcsSet = (data & 0x08) != 0;
this.bit124OfSupportedMcsSet = (data & 0x10) != 0;
this.bit125OfSupportedMcsSet = (data & 0x20) != 0;
this.bit126OfSupportedMcsSet = (data & 0x40) != 0;
this.bit127OfSupportedMcsSet = (data & 0x80) != 0;
data = rawData[offset + 21];
this.pcoSupported = (data & 0x01) != 0;
this.pcoTransitionTime = PcoTransitionTime.getInstance((data >> 1) & 0x03);
this.bit3OfHtExtendedCapabilities = (data & 0x08) != 0;
this.bit4OfHtExtendedCapabilities = (data & 0x10) != 0;
this.bit5OfHtExtendedCapabilities = (data & 0x20) != 0;
this.bit6OfHtExtendedCapabilities = (data & 0x40) != 0;
this.bit7OfHtExtendedCapabilities = (data & 0x80) != 0;
data = rawData[offset + 22];
this.mcsFeedbackCapability = McsFeedbackCapability.getInstance(data & 0x03);
this.htControlFieldSupported = (data & 0x04) != 0;
this.rdResponderSupported = (data & 0x08) != 0;
this.bit12OfHtExtendedCapabilities = (data & 0x10) != 0;
this.bit13OfHtExtendedCapabilities = (data & 0x20) != 0;
this.bit14OfHtExtendedCapabilities = (data & 0x40) != 0;
this.bit15OfHtExtendedCapabilities = (data & 0x80) != 0;
data = rawData[offset + 23];
this.implicitTxBeamformingReceivingSupported = (data & 0x01) != 0;
this.rxStaggeredSoundingSupported = (data & 0x02) != 0;
this.txStaggeredSoundingSupported = (data & 0x04) != 0;
this.rxNdpSupported = (data & 0x08) != 0;
this.txNdpSupported = (data & 0x10) != 0;
this.implicitTxBeamformingSupported = (data & 0x20) != 0;
this.calibration = Calibration.getInstance((data >> 6) & 0x03);
int intData = ByteArrays.getInt(rawData, offset + 24, ByteOrder.LITTLE_ENDIAN);
this.explicitCsiTxBeamformingSupported = (intData & 0x01) != 0;
this.explicitNoncompressedSteeringSupported = (intData & 0x02) != 0;
this.explicitCompressedSteeringSupported = (intData & 0x04) != 0;
this.explicitTxBeamformingCsiFeedbackCapability =
BeamformingFeedbackCapability.getInstance((intData >> 3) & 0x03);
this.explicitNoncompressedBeamformingFeedbackCapability =
BeamformingFeedbackCapability.getInstance((intData >> 5) & 0x03);
this.explicitCompressedBeamformingFeedbackCapability =
BeamformingFeedbackCapability.getInstance((intData >> 7) & 0x03);
this.minGrouping = Grouping.getInstance((intData >> 9) & 0x03);
this.csiNumBeamformerAntennasSupported =
NumBeamformerAntennas.getInstance((intData >> 11) & 0x03);
this.noncompressedSteeringNumBeamformerAntennasSupported =
NumBeamformerAntennas.getInstance((intData >> 13) & 0x03);
this.compressedSteeringNumBeamformerAntennasSupported =
NumBeamformerAntennas.getInstance((intData >> 15) & 0x03);
this.csiMaxNumRowsBeamformerSupported = CsiNumRows.getInstance((intData >> 17) & 0x03);
this.channelEstimationCapability =
ChannelEstimationCapability.getInstance((intData >> 19) & 0x03);
this.bit29OfTransmitBeamformingCapabilities = (intData & 0x200000) != 0;
this.bit30OfTransmitBeamformingCapabilities = (intData & 0x400000) != 0;
this.bit31OfTransmitBeamformingCapabilities = (intData & 0x800000) != 0;
this.antennaSelectionSupported = (intData & 0x01000000) != 0;
this.explicitCsiFeedbackBasedTxAselSupported = (intData & 0x02000000) != 0;
this.antennaIndicesFeedbackBasedTxAselSupported = (intData & 0x04000000) != 0;
this.explicitCsiFeedbackSupported = (intData & 0x08000000) != 0;
this.antennaIndicesFeedbackSupported = (intData & 0x10000000) != 0;
this.rxAselSupported = (intData & 0x20000000) != 0;
this.txSoundingPpdusSupported = (intData & 0x40000000) != 0;
this.bit7OfAselCapability = (intData & 0x80000000) != 0;
}
/** @param builder builder */
private Dot11HTCapabilitiesElement(Builder builder) {
super(builder);
if (builder == null
|| builder.smPowerSaveMode == null
|| builder.rxStbcSupport == null
|| builder.maxAMsduLength == null
|| builder.maxAMpduLength == null
|| builder.minMpduStartSpacing == null
|| builder.supportedRxMcsIndexes == null
|| builder.txMaxNumSpatialStreamsSupported == null
|| builder.pcoTransitionTime == null
|| builder.mcsFeedbackCapability == null
|| builder.calibration == null
|| builder.explicitTxBeamformingCsiFeedbackCapability == null
|| builder.explicitNoncompressedBeamformingFeedbackCapability == null
|| builder.explicitCompressedBeamformingFeedbackCapability == null
|| builder.minGrouping == null
|| builder.csiNumBeamformerAntennasSupported == null
|| builder.noncompressedSteeringNumBeamformerAntennasSupported == null
|| builder.compressedSteeringNumBeamformerAntennasSupported == null
|| builder.csiMaxNumRowsBeamformerSupported == null
|| builder.channelEstimationCapability == null) {
StringBuilder sb = new StringBuilder();
sb.append("builder: ")
.append(builder)
.append(" builder.smPowerSaveMode: ")
.append(builder.smPowerSaveMode)
.append(" builder.rxStbcSupport: ")
.append(builder.rxStbcSupport)
.append(" builder.maxAMsduLength: ")
.append(builder.maxAMsduLength)
.append(" builder.maxAMpduLength: ")
.append(builder.maxAMpduLength)
.append(" builder.minMpduStartSpacing: ")
.append(builder.minMpduStartSpacing)
.append(" builder.supportedRxMcsIndexes: ")
.append(builder.supportedRxMcsIndexes)
.append(" builder.txMaxNumSpatialStreamsSupported: ")
.append(builder.txMaxNumSpatialStreamsSupported)
.append(" builder.pcoTransitionTime: ")
.append(builder.pcoTransitionTime)
.append(" builder.mcsFeedbackCapability: ")
.append(builder.mcsFeedbackCapability)
.append(" builder.calibration: ")
.append(builder.calibration)
.append(" builder.explicitTxBeamformingCsiFeedbackCapability: ")
.append(builder.explicitTxBeamformingCsiFeedbackCapability)
.append(" builder.explicitNoncompressedBeamformingFeedbackCapability: ")
.append(builder.explicitNoncompressedBeamformingFeedbackCapability)
.append(" builder.explicitCompressedBeamformingFeedbackCapability: ")
.append(builder.explicitCompressedBeamformingFeedbackCapability)
.append(" builder.minGrouping: ")
.append(builder.minGrouping)
.append(" builder.csiNumBeamformerAntennasSupported: ")
.append(builder.csiNumBeamformerAntennasSupported)
.append(" builder.noncompressedSteeringNumBeamformerAntennasSupported: ")
.append(builder.noncompressedSteeringNumBeamformerAntennasSupported)
.append(" builder.compressedSteeringNumBeamformerAntennasSupported: ")
.append(builder.compressedSteeringNumBeamformerAntennasSupported)
.append(" builder.csiMaxNumRowsBeamformerSupported: ")
.append(builder.csiMaxNumRowsBeamformerSupported)
.append(" builder.channelEstimationCapability: ")
.append(builder.channelEstimationCapability);
throw new NullPointerException(sb.toString());
}
if (builder.supportedRxMcsIndexes.length != 77) {
throw new IllegalArgumentException(
"supportedRxMcsIndexes.length must be 77. builder.supportedRxMcsIndexes.length: "
+ builder.supportedRxMcsIndexes.length);
}
if ((builder.rxHighestSupportedDataRate & 0xFC00) != 0) {
throw new IllegalArgumentException(
"(rxHighestSupportedDataRate & 0xFC00) must be zero."
+ " builder.rxHighestSupportedDataRate: "
+ builder.rxHighestSupportedDataRate);
}
this.ldpcCodingSupported = builder.ldpcCodingSupported;
this.both20and40MhzSupported = builder.both20and40MhzSupported;
this.smPowerSaveMode = builder.smPowerSaveMode;
this.htGreenfieldSupported = builder.htGreenfieldSupported;
this.shortGiFor20MhzSupported = builder.shortGiFor20MhzSupported;
this.shortGiFor40MhzSupported = builder.shortGiFor40MhzSupported;
this.txStbcSupported = builder.txStbcSupported;
this.rxStbcSupport = builder.rxStbcSupport;
this.htDelayedBlockAckSupported = builder.htDelayedBlockAckSupported;
this.maxAMsduLength = builder.maxAMsduLength;
this.dsssCckModeIn40MhzSupported = builder.dsssCckModeIn40MhzSupported;
this.bit13OfHtCapabilitiesInfo = builder.bit13OfHtCapabilitiesInfo;
this.fortyMhzIntolerant = builder.fortyMhzIntolerant;
this.lSigTxopProtectionSupported = builder.lSigTxopProtectionSupported;
this.maxAMpduLength = builder.maxAMpduLength;
this.minMpduStartSpacing = builder.minMpduStartSpacing;
this.bit5OfAMpduParameters = builder.bit5OfAMpduParameters;
this.bit6OfAMpduParameters = builder.bit6OfAMpduParameters;
this.bit7OfAMpduParameters = builder.bit7OfAMpduParameters;
this.supportedRxMcsIndexes = builder.supportedRxMcsIndexes;
this.bit77OfSupportedMcsSet = builder.bit77OfSupportedMcsSet;
this.bit78OfSupportedMcsSet = builder.bit78OfSupportedMcsSet;
this.bit79OfSupportedMcsSet = builder.bit79OfSupportedMcsSet;
this.rxHighestSupportedDataRate = builder.rxHighestSupportedDataRate;
this.bit90OfSupportedMcsSet = builder.bit90OfSupportedMcsSet;
this.bit91OfSupportedMcsSet = builder.bit91OfSupportedMcsSet;
this.bit92OfSupportedMcsSet = builder.bit92OfSupportedMcsSet;
this.bit93OfSupportedMcsSet = builder.bit93OfSupportedMcsSet;
this.bit94OfSupportedMcsSet = builder.bit94OfSupportedMcsSet;
this.bit95OfSupportedMcsSet = builder.bit95OfSupportedMcsSet;
this.txMcsSetDefined = builder.txMcsSetDefined;
this.txRxMcsSetNotEqual = builder.txRxMcsSetNotEqual;
this.txMaxNumSpatialStreamsSupported = builder.txMaxNumSpatialStreamsSupported;
this.txUnequalModulationSupported = builder.txUnequalModulationSupported;
this.bit101OfSupportedMcsSet = builder.bit101OfSupportedMcsSet;
this.bit102OfSupportedMcsSet = builder.bit102OfSupportedMcsSet;
this.bit103OfSupportedMcsSet = builder.bit103OfSupportedMcsSet;
this.bit104OfSupportedMcsSet = builder.bit104OfSupportedMcsSet;
this.bit105OfSupportedMcsSet = builder.bit105OfSupportedMcsSet;
this.bit106OfSupportedMcsSet = builder.bit106OfSupportedMcsSet;
this.bit107OfSupportedMcsSet = builder.bit107OfSupportedMcsSet;
this.bit108OfSupportedMcsSet = builder.bit108OfSupportedMcsSet;
this.bit109OfSupportedMcsSet = builder.bit109OfSupportedMcsSet;
this.bit110OfSupportedMcsSet = builder.bit110OfSupportedMcsSet;
this.bit111OfSupportedMcsSet = builder.bit111OfSupportedMcsSet;
this.bit112OfSupportedMcsSet = builder.bit112OfSupportedMcsSet;
this.bit113OfSupportedMcsSet = builder.bit113OfSupportedMcsSet;
this.bit114OfSupportedMcsSet = builder.bit114OfSupportedMcsSet;
this.bit115OfSupportedMcsSet = builder.bit115OfSupportedMcsSet;
this.bit116OfSupportedMcsSet = builder.bit116OfSupportedMcsSet;
this.bit117OfSupportedMcsSet = builder.bit117OfSupportedMcsSet;
this.bit118OfSupportedMcsSet = builder.bit118OfSupportedMcsSet;
this.bit119OfSupportedMcsSet = builder.bit119OfSupportedMcsSet;
this.bit120OfSupportedMcsSet = builder.bit120OfSupportedMcsSet;
this.bit121OfSupportedMcsSet = builder.bit121OfSupportedMcsSet;
this.bit122OfSupportedMcsSet = builder.bit122OfSupportedMcsSet;
this.bit123OfSupportedMcsSet = builder.bit123OfSupportedMcsSet;
this.bit124OfSupportedMcsSet = builder.bit124OfSupportedMcsSet;
this.bit125OfSupportedMcsSet = builder.bit125OfSupportedMcsSet;
this.bit126OfSupportedMcsSet = builder.bit126OfSupportedMcsSet;
this.bit127OfSupportedMcsSet = builder.bit127OfSupportedMcsSet;
this.pcoSupported = builder.pcoSupported;
this.pcoTransitionTime = builder.pcoTransitionTime;
this.bit3OfHtExtendedCapabilities = builder.bit3OfHtExtendedCapabilities;
this.bit4OfHtExtendedCapabilities = builder.bit4OfHtExtendedCapabilities;
this.bit5OfHtExtendedCapabilities = builder.bit5OfHtExtendedCapabilities;
this.bit6OfHtExtendedCapabilities = builder.bit6OfHtExtendedCapabilities;
this.bit7OfHtExtendedCapabilities = builder.bit7OfHtExtendedCapabilities;
this.mcsFeedbackCapability = builder.mcsFeedbackCapability;
this.htControlFieldSupported = builder.htControlFieldSupported;
this.rdResponderSupported = builder.rdResponderSupported;
this.bit12OfHtExtendedCapabilities = builder.bit12OfHtExtendedCapabilities;
this.bit13OfHtExtendedCapabilities = builder.bit13OfHtExtendedCapabilities;
this.bit14OfHtExtendedCapabilities = builder.bit14OfHtExtendedCapabilities;
this.bit15OfHtExtendedCapabilities = builder.bit15OfHtExtendedCapabilities;
this.implicitTxBeamformingReceivingSupported = builder.implicitTxBeamformingReceivingSupported;
this.rxStaggeredSoundingSupported = builder.rxStaggeredSoundingSupported;
this.txStaggeredSoundingSupported = builder.txStaggeredSoundingSupported;
this.rxNdpSupported = builder.rxNdpSupported;
this.txNdpSupported = builder.txNdpSupported;
this.implicitTxBeamformingSupported = builder.implicitTxBeamformingSupported;
this.calibration = builder.calibration;
this.explicitCsiTxBeamformingSupported = builder.explicitCsiTxBeamformingSupported;
this.explicitNoncompressedSteeringSupported = builder.explicitNoncompressedSteeringSupported;
this.explicitCompressedSteeringSupported = builder.explicitCompressedSteeringSupported;
this.explicitTxBeamformingCsiFeedbackCapability =
builder.explicitTxBeamformingCsiFeedbackCapability;
this.explicitNoncompressedBeamformingFeedbackCapability =
builder.explicitNoncompressedBeamformingFeedbackCapability;
this.explicitCompressedBeamformingFeedbackCapability =
builder.explicitCompressedBeamformingFeedbackCapability;
this.minGrouping = builder.minGrouping;
this.csiNumBeamformerAntennasSupported = builder.csiNumBeamformerAntennasSupported;
this.noncompressedSteeringNumBeamformerAntennasSupported =
builder.noncompressedSteeringNumBeamformerAntennasSupported;
this.compressedSteeringNumBeamformerAntennasSupported =
builder.compressedSteeringNumBeamformerAntennasSupported;
this.csiMaxNumRowsBeamformerSupported = builder.csiMaxNumRowsBeamformerSupported;
this.channelEstimationCapability = builder.channelEstimationCapability;
this.bit29OfTransmitBeamformingCapabilities = builder.bit29OfTransmitBeamformingCapabilities;
this.bit30OfTransmitBeamformingCapabilities = builder.bit30OfTransmitBeamformingCapabilities;
this.bit31OfTransmitBeamformingCapabilities = builder.bit31OfTransmitBeamformingCapabilities;
this.antennaSelectionSupported = builder.antennaSelectionSupported;
this.explicitCsiFeedbackBasedTxAselSupported = builder.explicitCsiFeedbackBasedTxAselSupported;
this.antennaIndicesFeedbackBasedTxAselSupported =
builder.antennaIndicesFeedbackBasedTxAselSupported;
this.explicitCsiFeedbackSupported = builder.explicitCsiFeedbackSupported;
this.antennaIndicesFeedbackSupported = builder.antennaIndicesFeedbackSupported;
this.rxAselSupported = builder.rxAselSupported;
this.txSoundingPpdusSupported = builder.txSoundingPpdusSupported;
this.bit7OfAselCapability = builder.bit7OfAselCapability;
}
/** @return true if the LDPC Coding Capability field is set to 1; false otherwise. */
public boolean isLdpcCodingSupported() {
return ldpcCodingSupported;
}
/** @return true if the Supported Channel Width Set field is set to 1; false otherwise. */
public boolean isBoth20and40MhzSupported() {
return both20and40MhzSupported;
}
/** @return smPowerSaveMode */
public SmPowerSaveMode getSmPowerSaveMode() {
return smPowerSaveMode;
}
/** @return true if the HT-Greenfield field is set to 1; false otherwise. */
public boolean isHtGreenfieldSupported() {
return htGreenfieldSupported;
}
/** @return true if the Short GI for 20 MHz field is set to 1; false otherwise. */
public boolean isShortGiFor20MhzSupported() {
return shortGiFor20MhzSupported;
}
/** @return true if the Short GI for 40 MHz field is set to 1; false otherwise. */
public boolean isShortGiFor40MhzSupported() {
return shortGiFor40MhzSupported;
}
/** @return true if the Tx STBC field is set to 1; false otherwise. */
public boolean isTxStbcSupported() {
return txStbcSupported;
}
/** @return rxStbcSupport */
public StbcSupport getRxStbcSupport() {
return rxStbcSupport;
}
/** @return true if the HT-Delayed Block Ack field is set to 1; false otherwise. */
public boolean isHtDelayedBlockAckSupported() {
return htDelayedBlockAckSupported;
}
/** @return maxAMsduLength */
public AMsduLength getMaxAMsduLength() {
return maxAMsduLength;
}
/** @return true if the DSSS/CCK Mode in 40 MHz field is set to 1; false otherwise. */
public boolean isDsssCckModeIn40MhzSupported() {
return dsssCckModeIn40MhzSupported;
}
/** @return true if the bit 13 of the HT Capabilities Info field is set to 1; false otherwise. */
public boolean getBit13OfHtCapabilitiesInfo() {
return bit13OfHtCapabilitiesInfo;
}
/** @return true if the Forty MHz Intolerant field is set to 1; false otherwise. */
public boolean isFortyMhzIntolerant() {
return fortyMhzIntolerant;
}
/** @return true if the L-SIG TXOP Protection Support field is set to 1; false otherwise. */
public boolean islSigTxopProtectionSupported() {
return lSigTxopProtectionSupported;
}
/** @return maxAMpduLength */
public AMpduLength getMaxAMpduLength() {
return maxAMpduLength;
}
/** @return minMpduStartSpacing */
public MpduStartSpacing getMinMpduStartSpacing() {
return minMpduStartSpacing;
}
/** @return true if the bit 5 of the A-MPDU Parameters field is set to 1; false otherwise. */
public boolean getBit5OfAMpduParameters() {
return bit5OfAMpduParameters;
}
/** @return true if the bit 6 of the A-MPDU Parameters field is set to 1; false otherwise. */
public boolean getBit6OfAMpduParameters() {
return bit6OfAMpduParameters;
}
/** @return true if the bit 7 of the A-MPDU Parameters field is set to 1; false otherwise. */
public boolean getBit7OfAMpduParameters() {
return bit7OfAMpduParameters;
}
/**
* @return supportedRxMcsIndexes. supportedRxMcsIndexes[x] is set to true if the bit x of the Rx
* MCS Bitmask is set to 1; otherwise supportedRxMcsIndexes[x] is set to false.
*/
public boolean[] getSupportedRxMcsIndexes() {
boolean[] clone = new boolean[77];
System.arraycopy(supportedRxMcsIndexes, 0, clone, 0, clone.length);
return clone;
}
/** @return true if the bit 77 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit77OfSupportedMcsSet() {
return bit77OfSupportedMcsSet;
}
/** @return true if the bit 78 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit78OfSupportedMcsSet() {
return bit78OfSupportedMcsSet;
}
/** @return true if the bit 79 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit79OfSupportedMcsSet() {
return bit79OfSupportedMcsSet;
}
/** @return rxHighestSupportedDataRate */
public short getRxHighestSupportedDataRate() {
return rxHighestSupportedDataRate;
}
/** @return rxHighestSupportedDataRate */
public int getRxHighestSupportedDataRateAsInt() {
return rxHighestSupportedDataRate;
}
/** @return true if the bit 90 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit90OfSupportedMcsSet() {
return bit90OfSupportedMcsSet;
}
/** @return true if the bit 91 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit91OfSupportedMcsSet() {
return bit91OfSupportedMcsSet;
}
/** @return true if the bit 92 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit92OfSupportedMcsSet() {
return bit92OfSupportedMcsSet;
}
/** @return true if the bit 93 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit93OfSupportedMcsSet() {
return bit93OfSupportedMcsSet;
}
/** @return true if the bit 94 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit94OfSupportedMcsSet() {
return bit94OfSupportedMcsSet;
}
/** @return true if the bit 95 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit95OfSupportedMcsSet() {
return bit95OfSupportedMcsSet;
}
/** @return true if the Tx MCS Set Defined field is set to 1; false otherwise. */
public boolean isTxMcsSetDefined() {
return txMcsSetDefined;
}
/** @return true if the Tx Rx MCS Set Not Equal field is set to 1; false otherwise. */
public boolean isTxRxMcsSetNotEqual() {
return txRxMcsSetNotEqual;
}
/** @return txMaxNumSpatialStreamsSupported */
public NumSpatialStreams getTxMaxNumSpatialStreamsSupported() {
return txMaxNumSpatialStreamsSupported;
}
/** @return true if the Tx Unequal Modulation Supported field is set to 1; false otherwise. */
public boolean isTxUnequalModulationSupported() {
return txUnequalModulationSupported;
}
/** @return true if the bit 101 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit101OfSupportedMcsSet() {
return bit101OfSupportedMcsSet;
}
/** @return true if the bit 102 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit102OfSupportedMcsSet() {
return bit102OfSupportedMcsSet;
}
/** @return true if the bit 103 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit103OfSupportedMcsSet() {
return bit103OfSupportedMcsSet;
}
/** @return true if the bit 104 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit104OfSupportedMcsSet() {
return bit104OfSupportedMcsSet;
}
/** @return true if the bit 105 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit105OfSupportedMcsSet() {
return bit105OfSupportedMcsSet;
}
/** @return true if the bit 106 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit106OfSupportedMcsSet() {
return bit106OfSupportedMcsSet;
}
/** @return true if the bit 107 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit107OfSupportedMcsSet() {
return bit107OfSupportedMcsSet;
}
/** @return true if the bit 108 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit108OfSupportedMcsSet() {
return bit108OfSupportedMcsSet;
}
/** @return true if the bit 109 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit109OfSupportedMcsSet() {
return bit109OfSupportedMcsSet;
}
/** @return true if the bit 110 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit110OfSupportedMcsSet() {
return bit110OfSupportedMcsSet;
}
/** @return true if the bit 111 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit111OfSupportedMcsSet() {
return bit111OfSupportedMcsSet;
}
/** @return true if the bit 112 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit112OfSupportedMcsSet() {
return bit112OfSupportedMcsSet;
}
/** @return true if the bit 113 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit113OfSupportedMcsSet() {
return bit113OfSupportedMcsSet;
}
/** @return true if the bit 114 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit114OfSupportedMcsSet() {
return bit114OfSupportedMcsSet;
}
/** @return true if the bit 115 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit115OfSupportedMcsSet() {
return bit115OfSupportedMcsSet;
}
/** @return true if the bit 116 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit116OfSupportedMcsSet() {
return bit116OfSupportedMcsSet;
}
/** @return true if the bit 117 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit117OfSupportedMcsSet() {
return bit117OfSupportedMcsSet;
}
/** @return true if the bit 118 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit118OfSupportedMcsSet() {
return bit118OfSupportedMcsSet;
}
/** @return true if the bit 119 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit119OfSupportedMcsSet() {
return bit119OfSupportedMcsSet;
}
/** @return true if the bit 120 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit120OfSupportedMcsSet() {
return bit120OfSupportedMcsSet;
}
/** @return true if the bit 121 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit121OfSupportedMcsSet() {
return bit121OfSupportedMcsSet;
}
/** @return true if the bit 122 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit122OfSupportedMcsSet() {
return bit122OfSupportedMcsSet;
}
/** @return true if the bit 123 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit123OfSupportedMcsSet() {
return bit123OfSupportedMcsSet;
}
/** @return true if the bit 124 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit124OfSupportedMcsSet() {
return bit124OfSupportedMcsSet;
}
/** @return true if the bit 125 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit125OfSupportedMcsSet() {
return bit125OfSupportedMcsSet;
}
/** @return true if the bit 126 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit126OfSupportedMcsSet() {
return bit126OfSupportedMcsSet;
}
/** @return true if the bit 127 of the Supported MCS Set field is set to 1; false otherwise. */
public boolean getBit127OfSupportedMcsSet() {
return bit127OfSupportedMcsSet;
}
/** @return true if the PCO field is set to 1; false otherwise. */
public boolean isPcoSupported() {
return pcoSupported;
}
/** @return pcoTransitionTime */
public PcoTransitionTime getPcoTransitionTime() {
return pcoTransitionTime;
}
/** @return true if the field is set to 1; false otherwise. */
public boolean getBit3OfHtExtendedCapabilities() {
return bit3OfHtExtendedCapabilities;
}
/**
* @return true if the bit 4 of the HT Extended Capabilities field is set to 1; false otherwise.
*/
public boolean getBit4OfHtExtendedCapabilities() {
return bit4OfHtExtendedCapabilities;
}
/**
* @return true if the bit 5 of the HT Extended Capabilities field is set to 1; false otherwise.
*/
public boolean getBit5OfHtExtendedCapabilities() {
return bit5OfHtExtendedCapabilities;
}
/**
* @return true if the bit 6 of the HT Extended Capabilities field is set to 1; false otherwise.
*/
public boolean getBit6OfHtExtendedCapabilities() {
return bit6OfHtExtendedCapabilities;
}
/**
* @return true if the bit 7 of the HT Extended Capabilities field is set to 1; false otherwise.
*/
public boolean getBit7OfHtExtendedCapabilities() {
return bit7OfHtExtendedCapabilities;
}
/** @return mcsFeedbackCapability */
public McsFeedbackCapability getMcsFeedbackCapability() {
return mcsFeedbackCapability;
}
/** @return true if the +HTC Support field is set to 1; false otherwise. */
public boolean isHtControlFieldSupported() {
return htControlFieldSupported;
}
/** @return true if the RD Responder field is set to 1; false otherwise. */
public boolean isRdResponderSupported() {
return rdResponderSupported;
}
/**
* @return true if the bit 12 of the HT Extended Capabilities field is set to 1; false otherwise.
*/
public boolean getBit12OfHtExtendedCapabilities() {
return bit12OfHtExtendedCapabilities;
}
/**
* @return true if the bit 13 of the HT Extended Capabilities field is set to 1; false otherwise.
*/
public boolean getBit13OfHtExtendedCapabilities() {
return bit13OfHtExtendedCapabilities;
}
/**
* @return true if the bit 14 of the HT Extended Capabilities field is set to 1; false otherwise.
*/
public boolean getBit14OfHtExtendedCapabilities() {
return bit14OfHtExtendedCapabilities;
}
/**
* @return true if the bit 15 of the HT Extended Capabilities field is set to 1; false otherwise.
*/
public boolean getBit15OfHtExtendedCapabilities() {
return bit15OfHtExtendedCapabilities;
}
/**
* @return true if the Implicit Transmit Beamforming Receiving Capable field is set to 1; false
* otherwise.
*/
public boolean isImplicitTxBeamformingReceivingSupported() {
return implicitTxBeamformingReceivingSupported;
}
/** @return true if the Receive Staggered Sounding Capable field is set to 1; false otherwise. */
public boolean isRxStaggeredSoundingSupported() {
return rxStaggeredSoundingSupported;
}
/** @return true if the Transmit Staggered Sounding Capable field is set to 1; false otherwise. */
public boolean isTxStaggeredSoundingSupported() {
return txStaggeredSoundingSupported;
}
/** @return true if the Receive NDP Capable field is set to 1; false otherwise. */
public boolean isRxNdpSupported() {
return rxNdpSupported;
}
/** @return true if the Transmit NDP Capable field is set to 1; false otherwise. */
public boolean isTxNdpSupported() {
return txNdpSupported;
}
/**
* @return true if the Implicit Transmit Beamforming Capable field is set to 1; false otherwise.
*/
public boolean isImplicitTxBeamformingSupported() {
return implicitTxBeamformingSupported;
}
/** @return calibration */
public Calibration getCalibration() {
return calibration;
}
/**
* @return true if the Explicit CSI Transmit Beamforming Capable field is set to 1; false
* otherwise.
*/
public boolean isExplicitCsiTxBeamformingSupported() {
return explicitCsiTxBeamformingSupported;
}
/**
* @return true if the Explicit Noncompressed Steering Capable field is set to 1; false otherwise.
*/
public boolean isExplicitNoncompressedSteeringSupported() {
return explicitNoncompressedSteeringSupported;
}
/**
* @return true if the Explicit Compressed Steering Capable field is set to 1; false otherwise.
*/
public boolean isExplicitCompressedSteeringSupported() {
return explicitCompressedSteeringSupported;
}
/** @return explicitTxBeamformingCsiFeedbackCapability */
public BeamformingFeedbackCapability getExplicitTxBeamformingCsiFeedbackCapability() {
return explicitTxBeamformingCsiFeedbackCapability;
}
/** @return explicitNoncompressedBeamformingFeedbackCapability */
public BeamformingFeedbackCapability getExplicitNoncompressedBeamformingFeedbackCapability() {
return explicitNoncompressedBeamformingFeedbackCapability;
}
/** @return explicitCompressedBeamformingFeedbackCapability */
public BeamformingFeedbackCapability getExplicitCompressedBeamformingFeedbackCapability() {
return explicitCompressedBeamformingFeedbackCapability;
}
/** @return minGrouping */
public Grouping getMinGrouping() {
return minGrouping;
}
/** @return csiNumBeamformerAntennasSupported */
public NumBeamformerAntennas getCsiNumBeamformerAntennasSupported() {
return csiNumBeamformerAntennasSupported;
}
/** @return noncompressedSteeringNumBeamformerAntennasSupported */
public NumBeamformerAntennas getNoncompressedSteeringNumBeamformerAntennasSupported() {
return noncompressedSteeringNumBeamformerAntennasSupported;
}
/** @return compressedSteeringNumBeamformerAntennasSupported */
public NumBeamformerAntennas getCompressedSteeringNumBeamformerAntennasSupported() {
return compressedSteeringNumBeamformerAntennasSupported;
}
/** @return csiMaxNumRowsBeamformerSupported */
public CsiNumRows getCsiMaxNumRowsBeamformerSupported() {
return csiMaxNumRowsBeamformerSupported;
}
/** @return channelEstimationCapability */
public ChannelEstimationCapability getChannelEstimationCapability() {
return channelEstimationCapability;
}
/**
* @return true if the bit 29 of the Transmit Beamforming Capabilities field is set to 1; false
* otherwise.
*/
public boolean getBit29OfTransmitBeamformingCapabilities() {
return bit29OfTransmitBeamformingCapabilities;
}
/**
* @return true if the bit 30 of the Transmit Beamforming Capabilities field is set to 1; false
* otherwise.
*/
public boolean getBit30OfTransmitBeamformingCapabilities() {
return bit30OfTransmitBeamformingCapabilities;
}
/**
* @return true if the bit 31 of the Transmit Beamforming Capabilities field is set to 1; false
* otherwise.
*/
public boolean getBit31OfTransmitBeamformingCapabilities() {
return bit31OfTransmitBeamformingCapabilities;
}
/** @return true if the Antenna Selection Capable field is set to 1; false otherwise. */
public boolean isAntennaSelectionSupported() {
return antennaSelectionSupported;
}
/**
* @return true if the Explicit CSI Feedback Based Transmit ASEL Capable field is set to 1; false
* otherwise.
*/
public boolean isExplicitCsiFeedbackBasedTxAselSupported() {
return explicitCsiFeedbackBasedTxAselSupported;
}
/**
* @return true if the Antenna Indices Feedback Based Transmit ASEL Capable field is set to 1;
* false otherwise.
*/
public boolean isAntennaIndicesFeedbackBasedTxAselSupported() {
return antennaIndicesFeedbackBasedTxAselSupported;
}
/** @return true if the Explicit CSI Feedback Capable field is set to 1; false otherwise. */
public boolean isExplicitCsiFeedbackSupported() {
return explicitCsiFeedbackSupported;
}
/** @return true if the Antenna Indices Feedback Capable field is set to 1; false otherwise. */
public boolean isAntennaIndicesFeedbackSupported() {
return antennaIndicesFeedbackSupported;
}
/** @return true if the Receive ASEL Capable field is set to 1; false otherwise. */
public boolean isRxAselSupported() {
return rxAselSupported;
}
/** @return true if the Transmit Sounding PPDUs Capable field is set to 1; false otherwise. */
public boolean isTxSoundingPpdusSupported() {
return txSoundingPpdusSupported;
}
/** @return true if the bit 70 of the ASEL Capability field is set to 1; false otherwise. */
public boolean getBit7OfAselCapability() {
return bit7OfAselCapability;
}
@Override
public int length() {
return 28;
}
@Override
public byte[] getRawData() {
byte[] rawData = new byte[length()];
rawData[0] = getElementId().value();
rawData[1] = getLength();
int idx = 2;
rawData[idx] = (byte) (smPowerSaveMode.value << 2);
if (ldpcCodingSupported) {
rawData[idx] |= 0x01;
}
if (both20and40MhzSupported) {
rawData[idx] |= 0x02;
}
if (htGreenfieldSupported) {
rawData[idx] |= 0x10;
}
if (shortGiFor20MhzSupported) {
rawData[idx] |= 0x20;
}
if (shortGiFor40MhzSupported) {
rawData[idx] |= 0x40;
}
if (txStbcSupported) {
rawData[idx] |= 0x80;
}
idx = 3;
rawData[idx] = (byte) (rxStbcSupport.value | (maxAMsduLength.value << 3));
if (htDelayedBlockAckSupported) {
rawData[idx] |= 0x04;
}
if (dsssCckModeIn40MhzSupported) {
rawData[idx] |= 0x10;
}
if (bit13OfHtCapabilitiesInfo) {
rawData[idx] |= 0x20;
}
if (fortyMhzIntolerant) {
rawData[idx] |= 0x40;
}
if (lSigTxopProtectionSupported) {
rawData[idx] |= 0x80;
}
idx = 4;
rawData[idx] = (byte) (maxAMpduLength.value | (minMpduStartSpacing.value << 2));
if (bit5OfAMpduParameters) {
rawData[idx] |= 0x20;
}
if (bit6OfAMpduParameters) {
rawData[idx] |= 0x40;
}
if (bit7OfAMpduParameters) {
rawData[idx] |= 0x80;
}
for (int i = 0; i < supportedRxMcsIndexes.length; i++) {
if (supportedRxMcsIndexes[i]) {
idx = 5 + i / 8;
switch (i % 8) {
case 0:
rawData[idx] |= 0x01;
break;
case 1:
rawData[idx] |= 0x02;
break;
case 2:
rawData[idx] |= 0x04;
break;
case 3:
rawData[idx] |= 0x08;
break;
case 4:
rawData[idx] |= 0x10;
break;
case 5:
rawData[idx] |= 0x20;
break;
case 6:
rawData[idx] |= 0x40;
break;
case 7:
rawData[idx] |= 0x80;
break;
}
}
}
idx = 14;
if (bit77OfSupportedMcsSet) {
rawData[idx] |= 0x20;
}
if (bit78OfSupportedMcsSet) {
rawData[idx] |= 0x40;
}
if (bit79OfSupportedMcsSet) {
rawData[idx] |= 0x80;
}
System.arraycopy(
ByteArrays.toByteArray(rxHighestSupportedDataRate, ByteOrder.LITTLE_ENDIAN),
0,
rawData,
15,
2);
idx = 16;
if (bit90OfSupportedMcsSet) {
rawData[idx] |= 0x04;
}
if (bit91OfSupportedMcsSet) {
rawData[idx] |= 0x08;
}
if (bit92OfSupportedMcsSet) {
rawData[idx] |= 0x10;
}
if (bit93OfSupportedMcsSet) {
rawData[idx] |= 0x20;
}
if (bit94OfSupportedMcsSet) {
rawData[idx] |= 0x40;
}
if (bit95OfSupportedMcsSet) {
rawData[idx] |= 0x80;
}
idx = 17;
rawData[idx] = (byte) (txMaxNumSpatialStreamsSupported.value << 2);
if (txMcsSetDefined) {
rawData[idx] |= 0x01;
}
if (txRxMcsSetNotEqual) {
rawData[idx] |= 0x02;
}
if (txUnequalModulationSupported) {
rawData[idx] |= 0x10;
}
if (bit101OfSupportedMcsSet) {
rawData[idx] |= 0x20;
}
if (bit102OfSupportedMcsSet) {
rawData[idx] |= 0x40;
}
if (bit103OfSupportedMcsSet) {
rawData[idx] |= 0x80;
}
idx = 18;
if (bit104OfSupportedMcsSet) {
rawData[idx] |= 0x01;
}
if (bit105OfSupportedMcsSet) {
rawData[idx] |= 0x02;
}
if (bit106OfSupportedMcsSet) {
rawData[idx] |= 0x04;
}
if (bit107OfSupportedMcsSet) {
rawData[idx] |= 0x08;
}
if (bit108OfSupportedMcsSet) {
rawData[idx] |= 0x10;
}
if (bit109OfSupportedMcsSet) {
rawData[idx] |= 0x20;
}
if (bit110OfSupportedMcsSet) {
rawData[idx] |= 0x40;
}
if (bit111OfSupportedMcsSet) {
rawData[idx] |= 0x80;
}
idx = 19;
if (bit112OfSupportedMcsSet) {
rawData[idx] |= 0x01;
}
if (bit113OfSupportedMcsSet) {
rawData[idx] |= 0x02;
}
if (bit114OfSupportedMcsSet) {
rawData[idx] |= 0x04;
}
if (bit115OfSupportedMcsSet) {
rawData[idx] |= 0x08;
}
if (bit116OfSupportedMcsSet) {
rawData[idx] |= 0x10;
}
if (bit117OfSupportedMcsSet) {
rawData[idx] |= 0x20;
}
if (bit118OfSupportedMcsSet) {
rawData[idx] |= 0x40;
}
if (bit119OfSupportedMcsSet) {
rawData[idx] |= 0x80;
}
idx = 20;
if (bit120OfSupportedMcsSet) {
rawData[idx] |= 0x01;
}
if (bit121OfSupportedMcsSet) {
rawData[idx] |= 0x02;
}
if (bit122OfSupportedMcsSet) {
rawData[idx] |= 0x04;
}
if (bit123OfSupportedMcsSet) {
rawData[idx] |= 0x08;
}
if (bit124OfSupportedMcsSet) {
rawData[idx] |= 0x10;
}
if (bit125OfSupportedMcsSet) {
rawData[idx] |= 0x20;
}
if (bit126OfSupportedMcsSet) {
rawData[idx] |= 0x40;
}
if (bit127OfSupportedMcsSet) {
rawData[idx] |= 0x80;
}
idx = 21;
rawData[idx] = (byte) (pcoTransitionTime.value << 1);
if (pcoSupported) {
rawData[idx] |= 0x01;
}
if (bit3OfHtExtendedCapabilities) {
rawData[idx] |= 0x08;
}
if (bit4OfHtExtendedCapabilities) {
rawData[idx] |= 0x10;
}
if (bit5OfHtExtendedCapabilities) {
rawData[idx] |= 0x20;
}
if (bit6OfHtExtendedCapabilities) {
rawData[idx] |= 0x40;
}
if (bit7OfHtExtendedCapabilities) {
rawData[idx] |= 0x80;
}
idx = 22;
rawData[idx] = (byte) mcsFeedbackCapability.value;
if (htControlFieldSupported) {
rawData[idx] |= 0x04;
}
if (rdResponderSupported) {
rawData[idx] |= 0x08;
}
if (bit12OfHtExtendedCapabilities) {
rawData[idx] |= 0x10;
}
if (bit13OfHtExtendedCapabilities) {
rawData[idx] |= 0x20;
}
if (bit14OfHtExtendedCapabilities) {
rawData[idx] |= 0x40;
}
if (bit15OfHtExtendedCapabilities) {
rawData[idx] |= 0x80;
}
idx = 23;
rawData[idx] = (byte) (calibration.value << 6);
if (implicitTxBeamformingReceivingSupported) {
rawData[idx] |= 0x01;
}
if (rxStaggeredSoundingSupported) {
rawData[idx] |= 0x02;
}
if (txStaggeredSoundingSupported) {
rawData[idx] |= 0x04;
}
if (rxNdpSupported) {
rawData[idx] |= 0x08;
}
if (txNdpSupported) {
rawData[idx] |= 0x10;
}
if (implicitTxBeamformingSupported) {
rawData[idx] |= 0x20;
}
int lastData =
(explicitTxBeamformingCsiFeedbackCapability.value << 3)
| (explicitNoncompressedBeamformingFeedbackCapability.value << 5)
| (explicitCompressedBeamformingFeedbackCapability.value << 7)
| (minGrouping.value << 9)
| (csiNumBeamformerAntennasSupported.value << 11)
| (noncompressedSteeringNumBeamformerAntennasSupported.value << 13)
| (compressedSteeringNumBeamformerAntennasSupported.value << 15)
| (csiMaxNumRowsBeamformerSupported.value << 17)
| (channelEstimationCapability.value << 19);
if (explicitCsiTxBeamformingSupported) {
lastData |= 0x01;
}
if (explicitNoncompressedSteeringSupported) {
lastData |= 0x02;
}
if (explicitCompressedSteeringSupported) {
lastData |= 0x04;
}
if (bit29OfTransmitBeamformingCapabilities) {
lastData |= 0x200000;
}
if (bit30OfTransmitBeamformingCapabilities) {
lastData |= 0x400000;
}
if (bit31OfTransmitBeamformingCapabilities) {
lastData |= 0x800000;
}
if (antennaSelectionSupported) {
lastData |= 0x01000000;
}
if (explicitCsiFeedbackBasedTxAselSupported) {
lastData |= 0x02000000;
}
if (antennaIndicesFeedbackBasedTxAselSupported) {
lastData |= 0x04000000;
}
if (explicitCsiFeedbackSupported) {
lastData |= 0x08000000;
}
if (antennaIndicesFeedbackSupported) {
lastData |= 0x10000000;
}
if (rxAselSupported) {
lastData |= 0x20000000;
}
if (txSoundingPpdusSupported) {
lastData |= 0x40000000;
}
if (bit7OfAselCapability) {
lastData |= 0x80000000;
}
System.arraycopy(ByteArrays.toByteArray(lastData, ByteOrder.LITTLE_ENDIAN), 0, rawData, 24, 4);
return rawData;
}
/** @return a new Builder object populated with this object's fields. */
public Builder getBuilder() {
return new Builder(this);
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + (antennaIndicesFeedbackBasedTxAselSupported ? 1231 : 1237);
result = prime * result + (antennaIndicesFeedbackSupported ? 1231 : 1237);
result = prime * result + (antennaSelectionSupported ? 1231 : 1237);
result = prime * result + (bit101OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit102OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit103OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit104OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit105OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit106OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit107OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit108OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit109OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit110OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit111OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit112OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit113OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit114OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit115OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit116OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit117OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit118OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit119OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit120OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit121OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit122OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit123OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit124OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit125OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit126OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit127OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit12OfHtExtendedCapabilities ? 1231 : 1237);
result = prime * result + (bit13OfHtCapabilitiesInfo ? 1231 : 1237);
result = prime * result + (bit13OfHtExtendedCapabilities ? 1231 : 1237);
result = prime * result + (bit14OfHtExtendedCapabilities ? 1231 : 1237);
result = prime * result + (bit15OfHtExtendedCapabilities ? 1231 : 1237);
result = prime * result + (bit29OfTransmitBeamformingCapabilities ? 1231 : 1237);
result = prime * result + (bit30OfTransmitBeamformingCapabilities ? 1231 : 1237);
result = prime * result + (bit31OfTransmitBeamformingCapabilities ? 1231 : 1237);
result = prime * result + (bit3OfHtExtendedCapabilities ? 1231 : 1237);
result = prime * result + (bit4OfHtExtendedCapabilities ? 1231 : 1237);
result = prime * result + (bit5OfAMpduParameters ? 1231 : 1237);
result = prime * result + (bit5OfHtExtendedCapabilities ? 1231 : 1237);
result = prime * result + (bit6OfAMpduParameters ? 1231 : 1237);
result = prime * result + (bit6OfHtExtendedCapabilities ? 1231 : 1237);
result = prime * result + (bit77OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit78OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit79OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit7OfAMpduParameters ? 1231 : 1237);
result = prime * result + (bit7OfAselCapability ? 1231 : 1237);
result = prime * result + (bit7OfHtExtendedCapabilities ? 1231 : 1237);
result = prime * result + (bit90OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit91OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit92OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit93OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit94OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (bit95OfSupportedMcsSet ? 1231 : 1237);
result = prime * result + (both20and40MhzSupported ? 1231 : 1237);
result = prime * result + calibration.hashCode();
result = prime * result + channelEstimationCapability.hashCode();
result = prime * result + compressedSteeringNumBeamformerAntennasSupported.hashCode();
result = prime * result + csiMaxNumRowsBeamformerSupported.hashCode();
result = prime * result + csiNumBeamformerAntennasSupported.hashCode();
result = prime * result + (dsssCckModeIn40MhzSupported ? 1231 : 1237);
result = prime * result + explicitCompressedBeamformingFeedbackCapability.hashCode();
result = prime * result + (explicitCompressedSteeringSupported ? 1231 : 1237);
result = prime * result + (explicitCsiFeedbackBasedTxAselSupported ? 1231 : 1237);
result = prime * result + (explicitCsiFeedbackSupported ? 1231 : 1237);
result = prime * result + (explicitCsiTxBeamformingSupported ? 1231 : 1237);
result = prime * result + explicitNoncompressedBeamformingFeedbackCapability.hashCode();
result = prime * result + (explicitNoncompressedSteeringSupported ? 1231 : 1237);
result = prime * result + explicitTxBeamformingCsiFeedbackCapability.hashCode();
result = prime * result + (fortyMhzIntolerant ? 1231 : 1237);
result = prime * result + (htControlFieldSupported ? 1231 : 1237);
result = prime * result + (htDelayedBlockAckSupported ? 1231 : 1237);
result = prime * result + (htGreenfieldSupported ? 1231 : 1237);
result = prime * result + (implicitTxBeamformingReceivingSupported ? 1231 : 1237);
result = prime * result + (implicitTxBeamformingSupported ? 1231 : 1237);
result = prime * result + (lSigTxopProtectionSupported ? 1231 : 1237);
result = prime * result + (ldpcCodingSupported ? 1231 : 1237);
result = prime * result + maxAMpduLength.hashCode();
result = prime * result + maxAMsduLength.hashCode();
result = prime * result + mcsFeedbackCapability.hashCode();
result = prime * result + minGrouping.hashCode();
result = prime * result + minMpduStartSpacing.hashCode();
result = prime * result + noncompressedSteeringNumBeamformerAntennasSupported.hashCode();
result = prime * result + (pcoSupported ? 1231 : 1237);
result = prime * result + pcoTransitionTime.hashCode();
result = prime * result + (rdResponderSupported ? 1231 : 1237);
result = prime * result + (rxAselSupported ? 1231 : 1237);
result = prime * result + rxHighestSupportedDataRate;
result = prime * result + (rxNdpSupported ? 1231 : 1237);
result = prime * result + (rxStaggeredSoundingSupported ? 1231 : 1237);
result = prime * result + rxStbcSupport.hashCode();
result = prime * result + (shortGiFor20MhzSupported ? 1231 : 1237);
result = prime * result + (shortGiFor40MhzSupported ? 1231 : 1237);
result = prime * result + smPowerSaveMode.hashCode();
result = prime * result + Arrays.hashCode(supportedRxMcsIndexes);
result = prime * result + txMaxNumSpatialStreamsSupported.hashCode();
result = prime * result + (txMcsSetDefined ? 1231 : 1237);
result = prime * result + (txNdpSupported ? 1231 : 1237);
result = prime * result + (txRxMcsSetNotEqual ? 1231 : 1237);
result = prime * result + (txSoundingPpdusSupported ? 1231 : 1237);
result = prime * result + (txStaggeredSoundingSupported ? 1231 : 1237);
result = prime * result + (txStbcSupported ? 1231 : 1237);
result = prime * result + (txUnequalModulationSupported ? 1231 : 1237);
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!super.equals(obj)) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
Dot11HTCapabilitiesElement other = (Dot11HTCapabilitiesElement) obj;
if (antennaIndicesFeedbackBasedTxAselSupported
!= other.antennaIndicesFeedbackBasedTxAselSupported) {
return false;
}
if (antennaIndicesFeedbackSupported != other.antennaIndicesFeedbackSupported) {
return false;
}
if (antennaSelectionSupported != other.antennaSelectionSupported) {
return false;
}
if (bit101OfSupportedMcsSet != other.bit101OfSupportedMcsSet) {
return false;
}
if (bit102OfSupportedMcsSet != other.bit102OfSupportedMcsSet) {
return false;
}
if (bit103OfSupportedMcsSet != other.bit103OfSupportedMcsSet) {
return false;
}
if (bit104OfSupportedMcsSet != other.bit104OfSupportedMcsSet) {
return false;
}
if (bit105OfSupportedMcsSet != other.bit105OfSupportedMcsSet) {
return false;
}
if (bit106OfSupportedMcsSet != other.bit106OfSupportedMcsSet) {
return false;
}
if (bit107OfSupportedMcsSet != other.bit107OfSupportedMcsSet) {
return false;
}
if (bit108OfSupportedMcsSet != other.bit108OfSupportedMcsSet) {
return false;
}
if (bit109OfSupportedMcsSet != other.bit109OfSupportedMcsSet) {
return false;
}
if (bit110OfSupportedMcsSet != other.bit110OfSupportedMcsSet) {
return false;
}
if (bit111OfSupportedMcsSet != other.bit111OfSupportedMcsSet) {
return false;
}
if (bit112OfSupportedMcsSet != other.bit112OfSupportedMcsSet) {
return false;
}
if (bit113OfSupportedMcsSet != other.bit113OfSupportedMcsSet) {
return false;
}
if (bit114OfSupportedMcsSet != other.bit114OfSupportedMcsSet) {
return false;
}
if (bit115OfSupportedMcsSet != other.bit115OfSupportedMcsSet) {
return false;
}
if (bit116OfSupportedMcsSet != other.bit116OfSupportedMcsSet) {
return false;
}
if (bit117OfSupportedMcsSet != other.bit117OfSupportedMcsSet) {
return false;
}
if (bit118OfSupportedMcsSet != other.bit118OfSupportedMcsSet) {
return false;
}
if (bit119OfSupportedMcsSet != other.bit119OfSupportedMcsSet) {
return false;
}
if (bit120OfSupportedMcsSet != other.bit120OfSupportedMcsSet) {
return false;
}
if (bit121OfSupportedMcsSet != other.bit121OfSupportedMcsSet) {
return false;
}
if (bit122OfSupportedMcsSet != other.bit122OfSupportedMcsSet) {
return false;
}
if (bit123OfSupportedMcsSet != other.bit123OfSupportedMcsSet) {
return false;
}
if (bit124OfSupportedMcsSet != other.bit124OfSupportedMcsSet) {
return false;
}
if (bit125OfSupportedMcsSet != other.bit125OfSupportedMcsSet) {
return false;
}
if (bit126OfSupportedMcsSet != other.bit126OfSupportedMcsSet) {
return false;
}
if (bit127OfSupportedMcsSet != other.bit127OfSupportedMcsSet) {
return false;
}
if (bit12OfHtExtendedCapabilities != other.bit12OfHtExtendedCapabilities) {
return false;
}
if (bit13OfHtCapabilitiesInfo != other.bit13OfHtCapabilitiesInfo) {
return false;
}
if (bit13OfHtExtendedCapabilities != other.bit13OfHtExtendedCapabilities) {
return false;
}
if (bit14OfHtExtendedCapabilities != other.bit14OfHtExtendedCapabilities) {
return false;
}
if (bit15OfHtExtendedCapabilities != other.bit15OfHtExtendedCapabilities) {
return false;
}
if (bit29OfTransmitBeamformingCapabilities != other.bit29OfTransmitBeamformingCapabilities) {
return false;
}
if (bit30OfTransmitBeamformingCapabilities != other.bit30OfTransmitBeamformingCapabilities) {
return false;
}
if (bit31OfTransmitBeamformingCapabilities != other.bit31OfTransmitBeamformingCapabilities) {
return false;
}
if (bit3OfHtExtendedCapabilities != other.bit3OfHtExtendedCapabilities) {
return false;
}
if (bit4OfHtExtendedCapabilities != other.bit4OfHtExtendedCapabilities) {
return false;
}
if (bit5OfAMpduParameters != other.bit5OfAMpduParameters) {
return false;
}
if (bit5OfHtExtendedCapabilities != other.bit5OfHtExtendedCapabilities) {
return false;
}
if (bit6OfAMpduParameters != other.bit6OfAMpduParameters) {
return false;
}
if (bit6OfHtExtendedCapabilities != other.bit6OfHtExtendedCapabilities) {
return false;
}
if (bit77OfSupportedMcsSet != other.bit77OfSupportedMcsSet) {
return false;
}
if (bit78OfSupportedMcsSet != other.bit78OfSupportedMcsSet) {
return false;
}
if (bit79OfSupportedMcsSet != other.bit79OfSupportedMcsSet) {
return false;
}
if (bit7OfAMpduParameters != other.bit7OfAMpduParameters) {
return false;
}
if (bit7OfAselCapability != other.bit7OfAselCapability) {
return false;
}
if (bit7OfHtExtendedCapabilities != other.bit7OfHtExtendedCapabilities) {
return false;
}
if (bit90OfSupportedMcsSet != other.bit90OfSupportedMcsSet) {
return false;
}
if (bit91OfSupportedMcsSet != other.bit91OfSupportedMcsSet) {
return false;
}
if (bit92OfSupportedMcsSet != other.bit92OfSupportedMcsSet) {
return false;
}
if (bit93OfSupportedMcsSet != other.bit93OfSupportedMcsSet) {
return false;
}
if (bit94OfSupportedMcsSet != other.bit94OfSupportedMcsSet) {
return false;
}
if (bit95OfSupportedMcsSet != other.bit95OfSupportedMcsSet) {
return false;
}
if (both20and40MhzSupported != other.both20and40MhzSupported) {
return false;
}
if (calibration != other.calibration) {
return false;
}
if (channelEstimationCapability != other.channelEstimationCapability) {
return false;
}
if (compressedSteeringNumBeamformerAntennasSupported
!= other.compressedSteeringNumBeamformerAntennasSupported) {
return false;
}
if (csiMaxNumRowsBeamformerSupported != other.csiMaxNumRowsBeamformerSupported) {
return false;
}
if (csiNumBeamformerAntennasSupported != other.csiNumBeamformerAntennasSupported) {
return false;
}
if (dsssCckModeIn40MhzSupported != other.dsssCckModeIn40MhzSupported) {
return false;
}
if (explicitCompressedBeamformingFeedbackCapability
!= other.explicitCompressedBeamformingFeedbackCapability) {
return false;
}
if (explicitCompressedSteeringSupported != other.explicitCompressedSteeringSupported) {
return false;
}
if (explicitCsiFeedbackBasedTxAselSupported != other.explicitCsiFeedbackBasedTxAselSupported) {
return false;
}
if (explicitCsiFeedbackSupported != other.explicitCsiFeedbackSupported) {
return false;
}
if (explicitCsiTxBeamformingSupported != other.explicitCsiTxBeamformingSupported) {
return false;
}
if (explicitNoncompressedBeamformingFeedbackCapability
!= other.explicitNoncompressedBeamformingFeedbackCapability) {
return false;
}
if (explicitNoncompressedSteeringSupported != other.explicitNoncompressedSteeringSupported) {
return false;
}
if (explicitTxBeamformingCsiFeedbackCapability
!= other.explicitTxBeamformingCsiFeedbackCapability) {
return false;
}
if (fortyMhzIntolerant != other.fortyMhzIntolerant) {
return false;
}
if (htControlFieldSupported != other.htControlFieldSupported) {
return false;
}
if (htDelayedBlockAckSupported != other.htDelayedBlockAckSupported) {
return false;
}
if (htGreenfieldSupported != other.htGreenfieldSupported) {
return false;
}
if (implicitTxBeamformingReceivingSupported != other.implicitTxBeamformingReceivingSupported) {
return false;
}
if (implicitTxBeamformingSupported != other.implicitTxBeamformingSupported) {
return false;
}
if (lSigTxopProtectionSupported != other.lSigTxopProtectionSupported) {
return false;
}
if (ldpcCodingSupported != other.ldpcCodingSupported) {
return false;
}
if (maxAMpduLength != other.maxAMpduLength) {
return false;
}
if (maxAMsduLength != other.maxAMsduLength) {
return false;
}
if (mcsFeedbackCapability != other.mcsFeedbackCapability) {
return false;
}
if (minGrouping != other.minGrouping) {
return false;
}
if (minMpduStartSpacing != other.minMpduStartSpacing) {
return false;
}
if (noncompressedSteeringNumBeamformerAntennasSupported
!= other.noncompressedSteeringNumBeamformerAntennasSupported) {
return false;
}
if (pcoSupported != other.pcoSupported) {
return false;
}
if (pcoTransitionTime != other.pcoTransitionTime) {
return false;
}
if (rdResponderSupported != other.rdResponderSupported) {
return false;
}
if (rxAselSupported != other.rxAselSupported) {
return false;
}
if (rxHighestSupportedDataRate != other.rxHighestSupportedDataRate) {
return false;
}
if (rxNdpSupported != other.rxNdpSupported) {
return false;
}
if (rxStaggeredSoundingSupported != other.rxStaggeredSoundingSupported) {
return false;
}
if (rxStbcSupport != other.rxStbcSupport) {
return false;
}
if (shortGiFor20MhzSupported != other.shortGiFor20MhzSupported) {
return false;
}
if (shortGiFor40MhzSupported != other.shortGiFor40MhzSupported) {
return false;
}
if (smPowerSaveMode != other.smPowerSaveMode) {
return false;
}
if (!Arrays.equals(supportedRxMcsIndexes, other.supportedRxMcsIndexes)) {
return false;
}
if (txMaxNumSpatialStreamsSupported != other.txMaxNumSpatialStreamsSupported) {
return false;
}
if (txMcsSetDefined != other.txMcsSetDefined) {
return false;
}
if (txNdpSupported != other.txNdpSupported) {
return false;
}
if (txRxMcsSetNotEqual != other.txRxMcsSetNotEqual) {
return false;
}
if (txSoundingPpdusSupported != other.txSoundingPpdusSupported) {
return false;
}
if (txStaggeredSoundingSupported != other.txStaggeredSoundingSupported) {
return false;
}
if (txStbcSupported != other.txStbcSupported) {
return false;
}
if (txUnequalModulationSupported != other.txUnequalModulationSupported) {
return false;
}
return true;
}
@Override
public String toString() {
return toString("");
}
/**
* @param indent indent
* @return the string representation of this object.
*/
public String toString(String indent) {
StringBuilder sb = new StringBuilder();
String ls = System.getProperty("line.separator");
sb.append(indent).append("HT Capabilities:").append(ls);
sb.append(indent).append(" Element ID: ").append(getElementId()).append(ls);
sb.append(indent).append(" Length: ").append(getLengthAsInt()).append(" bytes").append(ls);
sb.append(indent)
.append(" HT Capabilities Info:")
.append(ls)
.append(indent)
.append(" LDPC Coding is Supported: ")
.append(ldpcCodingSupported)
.append(ls)
.append(indent)
.append(" Supported Channel Width Set: ")
.append(both20and40MhzSupported ? "20 MHz and 40 MHz" : "20 MHz")
.append(ls)
.append(indent)
.append(" SM Power Save: ")
.append(smPowerSaveMode)
.append(ls)
.append(indent)
.append(" HT-Greenfield is Supported: ")
.append(htGreenfieldSupported)
.append(ls)
.append(indent)
.append(" Short GI for 20 MHz is Supported: ")
.append(shortGiFor20MhzSupported)
.append(ls)
.append(indent)
.append(" Short GI for 40 MHz is Supported: ")
.append(shortGiFor40MhzSupported)
.append(ls)
.append(indent)
.append(" Tx STBC is Supported: ")
.append(txStbcSupported)
.append(ls)
.append(indent)
.append(" Rx STBC Support: ")
.append(rxStbcSupport)
.append(ls)
.append(indent)
.append(" HT-Delayed Block Ack is Supported: ")
.append(htDelayedBlockAckSupported)
.append(ls)
.append(indent)
.append(" Max A-MSDU Length: ")
.append(maxAMsduLength)
.append(" octets")
.append(ls)
.append(indent)
.append(" DSSS/CCK Mode in 40 MHz is Supported: ")
.append(dsssCckModeIn40MhzSupported)
.append(ls)
.append(indent)
.append(" Bit 13: ")
.append(bit13OfHtCapabilitiesInfo)
.append(ls)
.append(indent)
.append(" 40 MHz is Intolerant: ")
.append(fortyMhzIntolerant)
.append(ls)
.append(indent)
.append(" L-SIG TXOP Protection is Supported: ")
.append(lSigTxopProtectionSupported)
.append(ls);
sb.append(indent)
.append(" A-MPDU Parameters:")
.append(ls)
.append(indent)
.append(" Max A-MPDU Length: ")
.append(maxAMpduLength)
.append(" octets")
.append(ls)
.append(indent)
.append(" Min MPDU Start Spacing: ")
.append(minMpduStartSpacing)
.append(ls)
.append(indent)
.append(" Bit 5: ")
.append(bit5OfAMpduParameters)
.append(ls)
.append(indent)
.append(" Bit 6: ")
.append(bit6OfAMpduParameters)
.append(ls)
.append(indent)
.append(" Bit 7: ")
.append(bit7OfAMpduParameters)
.append(ls);
sb.append(indent)
.append(" Supported MCS Set:")
.append(ls)
.append(indent)
.append(" Supported Rx MCS Indexes: ");
boolean firstMcsIdx = true;
for (int i = 0; i < supportedRxMcsIndexes.length; i++) {
if (supportedRxMcsIndexes[i]) {
if (!firstMcsIdx) {
sb.append(", ");
} else {
firstMcsIdx = false;
}
sb.append(i);
}
}
sb.append(ls)
.append(indent)
.append(" Bit 77: ")
.append(bit77OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 78: ")
.append(bit78OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 79: ")
.append(bit79OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Rx Highest Supported Data Rate: ")
.append(rxHighestSupportedDataRate)
.append(" Mb/s")
.append(ls)
.append(indent)
.append(" Bit 90: ")
.append(bit90OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 91: ")
.append(bit91OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 92: ")
.append(bit92OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 93: ")
.append(bit93OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 94: ")
.append(bit94OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 95: ")
.append(bit95OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Tx MCS Set is Defined: ")
.append(txMcsSetDefined)
.append(ls)
.append(indent)
.append(" Tx Rx MCS Set Not Equal: ")
.append(txRxMcsSetNotEqual)
.append(ls)
.append(indent)
.append(" Tx Max Number Spatial Streams Supported: ")
.append(txMaxNumSpatialStreamsSupported)
.append(ls)
.append(indent)
.append(" Tx Unequal Modulation is Supported: ")
.append(txUnequalModulationSupported)
.append(ls)
.append(indent)
.append(" Bit 101: ")
.append(bit101OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 102: ")
.append(bit102OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 103: ")
.append(bit103OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 104: ")
.append(bit104OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 105: ")
.append(bit105OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 106: ")
.append(bit106OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 107: ")
.append(bit107OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 108: ")
.append(bit108OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 109: ")
.append(bit109OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 110: ")
.append(bit110OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 111: ")
.append(bit111OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 112: ")
.append(bit112OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 113: ")
.append(bit113OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 114: ")
.append(bit114OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 115: ")
.append(bit115OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 116: ")
.append(bit116OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 117: ")
.append(bit117OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 118: ")
.append(bit118OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 119: ")
.append(bit119OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 120: ")
.append(bit120OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 121: ")
.append(bit121OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 122: ")
.append(bit122OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 123: ")
.append(bit123OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 124: ")
.append(bit124OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 125: ")
.append(bit125OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 126: ")
.append(bit126OfSupportedMcsSet)
.append(ls)
.append(indent)
.append(" Bit 127: ")
.append(bit127OfSupportedMcsSet)
.append(ls);
sb.append(indent)
.append(" HT Extended Capabilities:")
.append(ls)
.append(indent)
.append(" PCO is Supported: ")
.append(pcoSupported)
.append(ls)
.append(indent)
.append(" PCO Transition Time: ")
.append(pcoTransitionTime)
.append(ls)
.append(indent)
.append(" Bit 3: ")
.append(bit3OfHtExtendedCapabilities)
.append(ls)
.append(indent)
.append(" Bit 4: ")
.append(bit4OfHtExtendedCapabilities)
.append(ls)
.append(indent)
.append(" Bit 5: ")
.append(bit5OfHtExtendedCapabilities)
.append(ls)
.append(indent)
.append(" Bit 6: ")
.append(bit6OfHtExtendedCapabilities)
.append(ls)
.append(indent)
.append(" Bit 7: ")
.append(bit7OfHtExtendedCapabilities)
.append(ls)
.append(indent)
.append(" MCS Feedback: ")
.append(mcsFeedbackCapability)
.append(ls)
.append(indent)
.append(" HT Control Field is Support: ")
.append(htControlFieldSupported)
.append(ls)
.append(indent)
.append(" RD Responder is Supported: ")
.append(rdResponderSupported)
.append(ls)
.append(indent)
.append(" Bit 12: ")
.append(bit12OfHtExtendedCapabilities)
.append(ls)
.append(indent)
.append(" Bit 13: ")
.append(bit13OfHtExtendedCapabilities)
.append(ls)
.append(indent)
.append(" Bit 14: ")
.append(bit14OfHtExtendedCapabilities)
.append(ls)
.append(indent)
.append(" Bit 15: ")
.append(bit15OfHtExtendedCapabilities)
.append(ls);
sb.append(indent)
.append(" Transmit Beamforming Capabilities:")
.append(ls)
.append(indent)
.append(" Implicit Tx Beamforming Receiving is Supported: ")
.append(implicitTxBeamformingReceivingSupported)
.append(ls)
.append(indent)
.append(" Rx Staggered Sounding is Supported: ")
.append(rxStaggeredSoundingSupported)
.append(ls)
.append(indent)
.append(" Tx Staggered Sounding is Supported: ")
.append(txStaggeredSoundingSupported)
.append(ls)
.append(indent)
.append(" Rx NDP is Supported: ")
.append(rxNdpSupported)
.append(ls)
.append(indent)
.append(" Tx NDP is Supported: ")
.append(txNdpSupported)
.append(ls)
.append(indent)
.append(" Implicit Tx Beamforming is Supported: ")
.append(implicitTxBeamformingSupported)
.append(ls)
.append(indent)
.append(" Calibration: ")
.append(calibration)
.append(ls)
.append(indent)
.append(" Explicit CSI Tx Beamforming is Supported: ")
.append(explicitCsiTxBeamformingSupported)
.append(ls)
.append(indent)
.append(" Explicit Noncompressed Steering is Supported: ")
.append(explicitNoncompressedSteeringSupported)
.append(ls)
.append(indent)
.append(" Explicit Compressed Steering is Supported: ")
.append(explicitCompressedSteeringSupported)
.append(ls)
.append(indent)
.append(" Explicit Tx Beamforming CSI Feedback: ")
.append(explicitTxBeamformingCsiFeedbackCapability)
.append(ls)
.append(indent)
.append(" Explicit Noncompressed Beamforming Feedback: ")
.append(explicitNoncompressedBeamformingFeedbackCapability)
.append(ls)
.append(indent)
.append(" Explicit Compressed Beamforming Feedback: ")
.append(explicitCompressedBeamformingFeedbackCapability)
.append(ls)
.append(indent)
.append(" Min Grouping: ")
.append(minGrouping)
.append(ls)
.append(indent)
.append(" CSI Number of Beamformer Antennas Supported: ")
.append(csiNumBeamformerAntennasSupported)
.append(ls)
.append(indent)
.append(" Noncompressed Steering Number of Beamformer Antennas Supported: ")
.append(noncompressedSteeringNumBeamformerAntennasSupported)
.append(ls)
.append(indent)
.append(" Compressed Steering Number of Beamformer Antennas Supported: ")
.append(compressedSteeringNumBeamformerAntennasSupported)
.append(ls)
.append(indent)
.append(" CSI Max Number of Rows Beamformer Supported: ")
.append(csiMaxNumRowsBeamformerSupported)
.append(ls)
.append(indent)
.append(" Channel Estimation: ")
.append(channelEstimationCapability)
.append(ls)
.append(indent)
.append(" Bit 29: ")
.append(bit29OfTransmitBeamformingCapabilities)
.append(ls)
.append(indent)
.append(" Bit 30: ")
.append(bit30OfTransmitBeamformingCapabilities)
.append(ls)
.append(indent)
.append(" Bit 31: ")
.append(bit31OfTransmitBeamformingCapabilities)
.append(ls);
sb.append(indent)
.append(" ASEL Capabilities:")
.append(ls)
.append(indent)
.append(" Antenna Selection is Supported: ")
.append(antennaSelectionSupported)
.append(ls)
.append(indent)
.append(" Explicit CSI Feedback Based Tx ASEL is Supported: ")
.append(explicitCsiFeedbackBasedTxAselSupported)
.append(ls)
.append(indent)
.append(" Antenna Indices Feedback Based Tx ASEL is Supported: ")
.append(antennaIndicesFeedbackBasedTxAselSupported)
.append(ls)
.append(indent)
.append(" Explicit CSI Feedback is Supported: ")
.append(explicitCsiFeedbackSupported)
.append(ls)
.append(indent)
.append(" Antenna Indices Feedback is Supported: ")
.append(antennaIndicesFeedbackSupported)
.append(ls)
.append(indent)
.append(" Rx ASEL is Supported: ")
.append(rxAselSupported)
.append(ls)
.append(indent)
.append(" Tx Sounding PPDUs is Supported: ")
.append(txSoundingPpdusSupported)
.append(ls)
.append(indent)
.append(" Bit 7: ")
.append(bit7OfAselCapability)
.append(ls);
return sb.toString();
}
/**
* SM Power Save field of IEEE802.11 HT Capabilities element.
*
* @see IEEE802.11
* @author Kaito Yamada
* @since pcap4j 1.7.0
*/
public static enum SmPowerSaveMode {
/** Static: 0 */
STATIC(0),
/** Dynamic: 1 */
DYNAMIC(1),
/** reserved: 2 */
RESERVED(2),
/** disabled: 3 */
DISABLED(3);
private final int value;
private SmPowerSaveMode(int value) {
this.value = value;
}
/** @return value */
public int getValue() {
return value;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(20);
sb.append(value).append(" (").append(name()).append(")");
return sb.toString();
}
/**
* @param value value
* @return the SmPowerSaveMode object the value of which is the given value.
*/
public static SmPowerSaveMode getInstance(int value) {
for (SmPowerSaveMode mode : values()) {
if (mode.value == value) {
return mode;
}
}
throw new IllegalArgumentException("Invalid value: " + value);
}
}
/**
* Rx STBC field of IEEE802.11 HT Capabilities element.
*
* @see IEEE802.11
* @author Kaito Yamada
* @since pcap4j 1.7.0
*/
public static enum StbcSupport {
/** No support: 0 */
NO_SUPPORT(0, "No support"),
/** One spatial stream is supported: 1 */
ONE_SPATIAL_STREAM(1, "One spatial stream is supported"),
/** One and two spatial streams are supported: 2 */
ONE_AND_TWO_SPATIAL_STREAMS(2, "One and two spatial streams are supported"),
/** One, two and three spatial streams are supported: 3 */
ONE_TWO_AND_THREE_SPATIAL_STREAMS(3, "One, two and three spatial streams are supported");
private final int value;
private final String name;
private StbcSupport(int value, String name) {
this.value = value;
this.name = name;
}
/** @return value */
public int getValue() {
return value;
}
/** @return name */
public String getName() {
return name;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(60);
sb.append(value).append(" (").append(name).append(")");
return sb.toString();
}
/**
* @param value value
* @return the StbcSupport object the value of which is the given value.
*/
public static StbcSupport getInstance(int value) {
for (StbcSupport val : values()) {
if (val.value == value) {
return val;
}
}
throw new IllegalArgumentException("Invalid value: " + value);
}
}
/**
* Maximum A-MSDU Length field of IEEE802.11 HT Capabilities element.
*
* @see IEEE802.11
* @author Kaito Yamada
* @since pcap4j 1.7.0
*/
public static enum AMsduLength {
/** 3839 octets: 0 */
MAX_3839(0, "3839 octets"),
/** 7935 octets: 1 */
MAX_7935(1, "7935 octets");
private final int value;
private final String name;
private AMsduLength(int value, String name) {
this.value = value;
this.name = name;
}
/** @return value */
public int getValue() {
return value;
}
/** @return name */
public String getName() {
return name;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(50);
sb.append(value).append(" (").append(name).append(")");
return sb.toString();
}
/**
* @param value value
* @return the AMsduLength object the value of which is the given value.
*/
public static AMsduLength getInstance(int value) {
for (AMsduLength val : values()) {
if (val.value == value) {
return val;
}
}
throw new IllegalArgumentException("Invalid value: " + value);
}
}
/**
* Maximum A-MPDU Length Exponent field of IEEE802.11 HT Capabilities element.
*
* @see IEEE802.11
* @author Kaito Yamada
* @since pcap4j 1.7.0
*/
public static enum AMpduLength {
/** 8191 octets: 0 */
MAX_8191(0, "8191 octets"),
/** 16383 octets: 1 */
MAX_16383(1, "16383 octets"),
/** 32767 octets: 2 */
MAX_32767(2, "32767 octets"),
/** 65535 octets: 3 */
MAX_65535(3, "65535 octets");
private final int value;
private final String name;
private AMpduLength(int value, String name) {
this.value = value;
this.name = name;
}
/** @return value */
public int getValue() {
return value;
}
/** @return name */
public String getName() {
return name;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(50);
sb.append(value).append(" (").append(name).append(")");
return sb.toString();
}
/**
* @param value value
* @return the AMpduLength object the value of which is the given value.
*/
public static AMpduLength getInstance(int value) {
for (AMpduLength val : values()) {
if (val.value == value) {
return val;
}
}
throw new IllegalArgumentException("Invalid value: " + value);
}
}
/**
* Minimum MPDU Start Spacing field of IEEE802.11 HT Capabilities element.
*
* @see IEEE802.11
* @author Kaito Yamada
* @since pcap4j 1.7.0
*/
public static enum MpduStartSpacing {
/** No restriction: 0 */
NO_RESTRICTION(0, "No restriction"),
/** 1/4 us: 1 */
ONE_FOURTH_US(1, "1/4 us"),
/** 1/2 us: 2 */
HALF_US(2, "1/2 us"),
/** 1 us: 3 */
ONE_US(3, "1 us"),
/** 2 us: 4 */
TWO_US(4, "2 us"),
/** 4 us: 5 */
FOUR_US(5, "4 us"),
/** 8 us: 6 */
EIGHT_US(6, "8 us"),
/** 16 us: 7 */
SIXTEEN_US(7, "16 us");
private final int value;
private final String name;
private MpduStartSpacing(int value, String name) {
this.value = value;
this.name = name;
}
/** @return value */
public int getValue() {
return value;
}
/** @return name */
public String getName() {
return name;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(50);
sb.append(value).append(" (").append(name).append(")");
return sb.toString();
}
/**
* @param value value
* @return the MpduStartSpacing object the value of which is the given value.
*/
public static MpduStartSpacing getInstance(int value) {
for (MpduStartSpacing cp : values()) {
if (cp.value == value) {
return cp;
}
}
throw new IllegalArgumentException("Invalid value: " + value);
}
}
/**
* Tx Maximum Number Spatial Streams Supported field of IEEE802.11 HT Capabilities element.
*
* @see IEEE802.11
* @author Kaito Yamada
* @since pcap4j 1.7.0
*/
public static enum NumSpatialStreams {
/** 1 spatial stream: 0 */
ONE(0, "1 spatial stream"),
/** 2 spatial stream: 1 */
TWO(1, "2 spatial stream"),
/** 3 spatial stream: 2 */
THREE(2, "3 spatial stream"),
/** 4 spatial stream: 3 */
FOUR(3, "4 spatial stream");
private final int value;
private final String name;
private NumSpatialStreams(int value, String name) {
this.value = value;
this.name = name;
}
/** @return value */
public int getValue() {
return value;
}
/** @return name */
public String getName() {
return name;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(50);
sb.append(value).append(" (").append(name).append(")");
return sb.toString();
}
/**
* @param value value
* @return the NumSpatialStreams object the value of which is the given value.
*/
public static NumSpatialStreams getInstance(int value) {
for (NumSpatialStreams cp : values()) {
if (cp.value == value) {
return cp;
}
}
throw new IllegalArgumentException("Invalid value: " + value);
}
}
/**
* PCO Transition Time field of IEEE802.11 HT Capabilities element.
*
* @see IEEE802.11
* @author Kaito Yamada
* @since pcap4j 1.7.0
*/
public static enum PcoTransitionTime {
/** No transition: 0 */
NO_TRANSITION(0, "No transition"),
/** 400 us: 1 */
PTT_400_US(1, "400 us"),
/** 1.5 ms: 2 */
PTT_1_5_MS(2, "1.5 ms"),
/** 5 ms: 3 */
PTT_5_MS(3, "5 ms");
private final int value;
private final String name;
private PcoTransitionTime(int value, String name) {
this.value = value;
this.name = name;
}
/** @return value */
public int getValue() {
return value;
}
/** @return name */
public String getName() {
return name;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(50);
sb.append(value).append(" (").append(name).append(")");
return sb.toString();
}
/**
* @param value value
* @return the PcoTransitionTime object the value of which is the given value.
*/
public static PcoTransitionTime getInstance(int value) {
for (PcoTransitionTime cp : values()) {
if (cp.value == value) {
return cp;
}
}
throw new IllegalArgumentException("Invalid value: " + value);
}
}
/**
* MCA Feedback field of IEEE802.11 HT Capabilities element.
*
* @see IEEE802.11
* @author Kaito Yamada
* @since pcap4j 1.7.0
*/
public static enum McsFeedbackCapability {
/** No Feedback: 0 */
NO_FEEDBACK(0, "No Feedback"),
/** reserved: 1 */
RESERVED(1, "reserved"),
/** Only unsolicited: 2 */
ONLY_UNSOLICITED(2, "Only unsolicited"),
/** Unsolicited and solicited: 3 */
UNSOLICITED_AND_SOLICITED(3, "Unsolicited and solicited");
private final int value;
private final String name;
private McsFeedbackCapability(int value, String name) {
this.value = value;
this.name = name;
}
/** @return value */
public int getValue() {
return value;
}
/** @return name */
public String getName() {
return name;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(50);
sb.append(value).append(" (").append(name).append(")");
return sb.toString();
}
/**
* @param value value
* @return the McsFeedbackCapability object the value of which is the given value.
*/
public static McsFeedbackCapability getInstance(int value) {
for (McsFeedbackCapability cp : values()) {
if (cp.value == value) {
return cp;
}
}
throw new IllegalArgumentException("Invalid value: " + value);
}
}
/**
* Calibration field of IEEE802.11 HT Capabilities element.
*
* @see IEEE802.11
* @author Kaito Yamada
* @since pcap4j 1.7.0
*/
public static enum Calibration {
/** Not supported: 0 */
NOT_SUPPORTED(0, "Not supported"),
/** Respond: 1 */
RESPOND(1, "Respond"),
/** reserved: 2 */
RESERVED(2, "reserved"),
/** Initiate and respond: 3 */
INITIATE_AND_RESPOND(3, "Initiate and respond");
private final int value;
private final String name;
private Calibration(int value, String name) {
this.value = value;
this.name = name;
}
/** @return value */
public int getValue() {
return value;
}
/** @return name */
public String getName() {
return name;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(50);
sb.append(value).append(" (").append(name).append(")");
return sb.toString();
}
/**
* @param value value
* @return the Calibration object the value of which is the given value.
*/
public static Calibration getInstance(int value) {
for (Calibration cp : values()) {
if (cp.value == value) {
return cp;
}
}
throw new IllegalArgumentException("Invalid value: " + value);
}
}
/**
* Explicit Transmit Beamforming CSI Feedback field, Explicit Noncompressed Beamforming Feedback
* Capable field, and Explicit Compressed Beamforming Feedback Capable field of IEEE802.11 HT
* Capabilities element.
*
* @see IEEE802.11
* @author Kaito Yamada
* @since pcap4j 1.7.0
*/
public static enum BeamformingFeedbackCapability {
/** Not supported: 0 */
NOT_SUPPORTED(0, "Not supported"),
/** Delayed: 1 */
DELAYED(1, "Delayed"),
/** Immediate: 2 */
IMMEDIATE(2, "Immediate"),
/** Delayed and immediate: 3 */
DELAYED_AND_IMMEDIATE(3, "Delayed and immediate");
private final int value;
private final String name;
private BeamformingFeedbackCapability(int value, String name) {
this.value = value;
this.name = name;
}
/** @return value */
public int getValue() {
return value;
}
/** @return name */
public String getName() {
return name;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(50);
sb.append(value).append(" (").append(name).append(")");
return sb.toString();
}
/**
* @param value value
* @return the BeamformingFeedbackCapability object the value of which is the given value.
*/
public static BeamformingFeedbackCapability getInstance(int value) {
for (BeamformingFeedbackCapability cp : values()) {
if (cp.value == value) {
return cp;
}
}
throw new IllegalArgumentException("Invalid value: " + value);
}
}
/**
* Minimal Grouping field of IEEE802.11 HT Capabilities element.
*
* @see IEEE802.11
* @author Kaito Yamada
* @since pcap4j 1.7.0
*/
public static enum Grouping {
/** No grouping: 0 */
NO_GROUPING(0, "No grouping"),
/** Groups of 1, 2: 1 */
GROUPS_OF_1_2(1, "Groups of 1, 2"),
/** Groups of 1, 4: 2 */
GROUPS_OF_1_4(2, "Groups of 1, 4"),
/** Groups of 1, 2, 4: 3 */
GROUPS_OF_1_2_4(3, "Groups of 1, 2, 4");
private final int value;
private final String name;
private Grouping(int value, String name) {
this.value = value;
this.name = name;
}
/** @return value */
public int getValue() {
return value;
}
/** @return name */
public String getName() {
return name;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(50);
sb.append(value).append(" (").append(name).append(")");
return sb.toString();
}
/**
* @param value value
* @return the Grouping object the value of which is the given value.
*/
public static Grouping getInstance(int value) {
for (Grouping cp : values()) {
if (cp.value == value) {
return cp;
}
}
throw new IllegalArgumentException("Invalid value: " + value);
}
}
/**
* CSI Number of Beamformer Antennas Supported field, Noncompressed Steering Number of Beamformer
* Antennas Supported field, and Compressed Steering Number of Beamformer Antennas Supported field
* of IEEE802.11 HT Capabilities element.
*
* @see IEEE802.11
* @author Kaito Yamada
* @since pcap4j 1.7.0
*/
public static enum NumBeamformerAntennas {
/** Single Tx antenna sounding: 0 */
SINGLE(0, "Single Tx antenna sounding"),
/** 2 Tx antenna sounding: 1 */
TWO(1, "2 Tx antenna sounding"),
/** 3 Tx antenna sounding: 2 */
THREE(2, "3 Tx antenna sounding"),
/** 4 Tx antenna sounding: 3 */
FOUR(3, "4 Tx antenna sounding");
private final int value;
private final String name;
private NumBeamformerAntennas(int value, String name) {
this.value = value;
this.name = name;
}
/** @return value */
public int getValue() {
return value;
}
/** @return name */
public String getName() {
return name;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(50);
sb.append(value).append(" (").append(name).append(")");
return sb.toString();
}
/**
* @param value value
* @return the NumBeamformerAntennas object the value of which is the given value.
*/
public static NumBeamformerAntennas getInstance(int value) {
for (NumBeamformerAntennas cp : values()) {
if (cp.value == value) {
return cp;
}
}
throw new IllegalArgumentException("Invalid value: " + value);
}
}
/**
* CSI Max Number of Rows Beamformer Supported field of IEEE802.11 HT Capabilities element.
*
* @see IEEE802.11
* @author Kaito Yamada
* @since pcap4j 1.7.0
*/
public static enum CsiNumRows {
/** Single row of CSI: 0 */
SINGLE(0, "Single row of CSI"),
/** 2 rows of CSI: 1 */
TWO(1, "2 rows of CSI"),
/** 3 rows of CSI: 2 */
THREE(2, "3 rows of CSI"),
/** 4 rows of CSI: 3 */
FOUR(3, "4 rows of CSI");
private final int value;
private final String name;
private CsiNumRows(int value, String name) {
this.value = value;
this.name = name;
}
/** @return value */
public int getValue() {
return value;
}
/** @return name */
public String getName() {
return name;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(50);
sb.append(value).append(" (").append(name).append(")");
return sb.toString();
}
/**
* @param value value
* @return the CsiNumRows object the value of which is the given value.
*/
public static CsiNumRows getInstance(int value) {
for (CsiNumRows cp : values()) {
if (cp.value == value) {
return cp;
}
}
throw new IllegalArgumentException("Invalid value: " + value);
}
}
/**
* Channel Estimation Capability field of IEEE802.11 HT Capabilities element.
*
* @see IEEE802.11
* @author Kaito Yamada
* @since pcap4j 1.7.0
*/
public static enum ChannelEstimationCapability {
/** 1 space-time stream: 0 */
ONE_SPACE_TIME_STREAM(0, "1 space-time stream"),
/** 2 space-time streams: 1 */
TWO_SPACE_TIME_STREAMS(1, "2 space-time streams"),
/** 3 space-time streams: 2 */
THREE_SPACE_TIME_STREAMS(2, "3 space-time streams"),
/** 4 space-time streams: 3 */
FOUR_SPACE_TIME_STREAMS(3, "4 space-time streams");
private final int value;
private final String name;
private ChannelEstimationCapability(int value, String name) {
this.value = value;
this.name = name;
}
/** @return value */
public int getValue() {
return value;
}
/** @return name */
public String getName() {
return name;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(50);
sb.append(value).append(" (").append(name).append(")");
return sb.toString();
}
/**
* @param value value
* @return the ChannelEstimationCapability object the value of which is the given value.
*/
public static ChannelEstimationCapability getInstance(int value) {
for (ChannelEstimationCapability cp : values()) {
if (cp.value == value) {
return cp;
}
}
throw new IllegalArgumentException("Invalid value: " + value);
}
}
/**
* @author Kaito Yamada
* @since pcap4j 1.7.0
*/
public static final class Builder extends Dot11InformationElement.Builder {
private boolean ldpcCodingSupported;
private boolean both20and40MhzSupported;
private SmPowerSaveMode smPowerSaveMode;
private boolean htGreenfieldSupported;
private boolean shortGiFor20MhzSupported;
private boolean shortGiFor40MhzSupported;
private boolean txStbcSupported;
private StbcSupport rxStbcSupport;
private boolean htDelayedBlockAckSupported;
private AMsduLength maxAMsduLength;
private boolean dsssCckModeIn40MhzSupported;
private boolean bit13OfHtCapabilitiesInfo;
private boolean fortyMhzIntolerant;
private boolean lSigTxopProtectionSupported;
private AMpduLength maxAMpduLength;
private MpduStartSpacing minMpduStartSpacing;
private boolean bit5OfAMpduParameters;
private boolean bit6OfAMpduParameters;
private boolean bit7OfAMpduParameters;
private boolean[] supportedRxMcsIndexes;
private boolean bit77OfSupportedMcsSet;
private boolean bit78OfSupportedMcsSet;
private boolean bit79OfSupportedMcsSet;
private short rxHighestSupportedDataRate;
private boolean bit90OfSupportedMcsSet;
private boolean bit91OfSupportedMcsSet;
private boolean bit92OfSupportedMcsSet;
private boolean bit93OfSupportedMcsSet;
private boolean bit94OfSupportedMcsSet;
private boolean bit95OfSupportedMcsSet;
private boolean txMcsSetDefined;
private boolean txRxMcsSetNotEqual;
private NumSpatialStreams txMaxNumSpatialStreamsSupported;
private boolean txUnequalModulationSupported;
private boolean bit101OfSupportedMcsSet;
private boolean bit102OfSupportedMcsSet;
private boolean bit103OfSupportedMcsSet;
private boolean bit104OfSupportedMcsSet;
private boolean bit105OfSupportedMcsSet;
private boolean bit106OfSupportedMcsSet;
private boolean bit107OfSupportedMcsSet;
private boolean bit108OfSupportedMcsSet;
private boolean bit109OfSupportedMcsSet;
private boolean bit110OfSupportedMcsSet;
private boolean bit111OfSupportedMcsSet;
private boolean bit112OfSupportedMcsSet;
private boolean bit113OfSupportedMcsSet;
private boolean bit114OfSupportedMcsSet;
private boolean bit115OfSupportedMcsSet;
private boolean bit116OfSupportedMcsSet;
private boolean bit117OfSupportedMcsSet;
private boolean bit118OfSupportedMcsSet;
private boolean bit119OfSupportedMcsSet;
private boolean bit120OfSupportedMcsSet;
private boolean bit121OfSupportedMcsSet;
private boolean bit122OfSupportedMcsSet;
private boolean bit123OfSupportedMcsSet;
private boolean bit124OfSupportedMcsSet;
private boolean bit125OfSupportedMcsSet;
private boolean bit126OfSupportedMcsSet;
private boolean bit127OfSupportedMcsSet;
private boolean pcoSupported;
private PcoTransitionTime pcoTransitionTime;
private boolean bit3OfHtExtendedCapabilities;
private boolean bit4OfHtExtendedCapabilities;
private boolean bit5OfHtExtendedCapabilities;
private boolean bit6OfHtExtendedCapabilities;
private boolean bit7OfHtExtendedCapabilities;
private McsFeedbackCapability mcsFeedbackCapability;
private boolean htControlFieldSupported;
private boolean rdResponderSupported;
private boolean bit12OfHtExtendedCapabilities;
private boolean bit13OfHtExtendedCapabilities;
private boolean bit14OfHtExtendedCapabilities;
private boolean bit15OfHtExtendedCapabilities;
private boolean implicitTxBeamformingReceivingSupported;
private boolean rxStaggeredSoundingSupported;
private boolean txStaggeredSoundingSupported;
private boolean rxNdpSupported;
private boolean txNdpSupported;
private boolean implicitTxBeamformingSupported;
private Calibration calibration;
private boolean explicitCsiTxBeamformingSupported;
private boolean explicitNoncompressedSteeringSupported;
private boolean explicitCompressedSteeringSupported;
private BeamformingFeedbackCapability explicitTxBeamformingCsiFeedbackCapability;
private BeamformingFeedbackCapability explicitNoncompressedBeamformingFeedbackCapability;
private BeamformingFeedbackCapability explicitCompressedBeamformingFeedbackCapability;
private Grouping minGrouping;
private NumBeamformerAntennas csiNumBeamformerAntennasSupported;
private NumBeamformerAntennas noncompressedSteeringNumBeamformerAntennasSupported;
private NumBeamformerAntennas compressedSteeringNumBeamformerAntennasSupported;
private CsiNumRows csiMaxNumRowsBeamformerSupported;
private ChannelEstimationCapability channelEstimationCapability;
private boolean bit29OfTransmitBeamformingCapabilities;
private boolean bit30OfTransmitBeamformingCapabilities;
private boolean bit31OfTransmitBeamformingCapabilities;
private boolean antennaSelectionSupported;
private boolean explicitCsiFeedbackBasedTxAselSupported;
private boolean antennaIndicesFeedbackBasedTxAselSupported;
private boolean explicitCsiFeedbackSupported;
private boolean antennaIndicesFeedbackSupported;
private boolean rxAselSupported;
private boolean txSoundingPpdusSupported;
private boolean bit7OfAselCapability;
/** */
public Builder() {
elementId(
Dot11InformationElementId.getInstance(Dot11InformationElementId.HT_CAPABILITIES.value()));
}
/** @param elem a Dot11HTCapabilitiesElement object. */
private Builder(Dot11HTCapabilitiesElement obj) {
super(obj);
this.ldpcCodingSupported = obj.ldpcCodingSupported;
this.both20and40MhzSupported = obj.both20and40MhzSupported;
this.smPowerSaveMode = obj.smPowerSaveMode;
this.htGreenfieldSupported = obj.htGreenfieldSupported;
this.shortGiFor20MhzSupported = obj.shortGiFor20MhzSupported;
this.shortGiFor40MhzSupported = obj.shortGiFor40MhzSupported;
this.txStbcSupported = obj.txStbcSupported;
this.rxStbcSupport = obj.rxStbcSupport;
this.htDelayedBlockAckSupported = obj.htDelayedBlockAckSupported;
this.maxAMsduLength = obj.maxAMsduLength;
this.dsssCckModeIn40MhzSupported = obj.dsssCckModeIn40MhzSupported;
this.bit13OfHtCapabilitiesInfo = obj.bit13OfHtCapabilitiesInfo;
this.fortyMhzIntolerant = obj.fortyMhzIntolerant;
this.lSigTxopProtectionSupported = obj.lSigTxopProtectionSupported;
this.maxAMpduLength = obj.maxAMpduLength;
this.minMpduStartSpacing = obj.minMpduStartSpacing;
this.bit5OfAMpduParameters = obj.bit5OfAMpduParameters;
this.bit6OfAMpduParameters = obj.bit6OfAMpduParameters;
this.bit7OfAMpduParameters = obj.bit7OfAMpduParameters;
this.supportedRxMcsIndexes = obj.supportedRxMcsIndexes;
this.bit77OfSupportedMcsSet = obj.bit77OfSupportedMcsSet;
this.bit78OfSupportedMcsSet = obj.bit78OfSupportedMcsSet;
this.bit79OfSupportedMcsSet = obj.bit79OfSupportedMcsSet;
this.rxHighestSupportedDataRate = obj.rxHighestSupportedDataRate;
this.bit90OfSupportedMcsSet = obj.bit90OfSupportedMcsSet;
this.bit91OfSupportedMcsSet = obj.bit91OfSupportedMcsSet;
this.bit92OfSupportedMcsSet = obj.bit92OfSupportedMcsSet;
this.bit93OfSupportedMcsSet = obj.bit93OfSupportedMcsSet;
this.bit94OfSupportedMcsSet = obj.bit94OfSupportedMcsSet;
this.bit95OfSupportedMcsSet = obj.bit95OfSupportedMcsSet;
this.txMcsSetDefined = obj.txMcsSetDefined;
this.txRxMcsSetNotEqual = obj.txRxMcsSetNotEqual;
this.txMaxNumSpatialStreamsSupported = obj.txMaxNumSpatialStreamsSupported;
this.txUnequalModulationSupported = obj.txUnequalModulationSupported;
this.bit101OfSupportedMcsSet = obj.bit101OfSupportedMcsSet;
this.bit102OfSupportedMcsSet = obj.bit102OfSupportedMcsSet;
this.bit103OfSupportedMcsSet = obj.bit103OfSupportedMcsSet;
this.bit104OfSupportedMcsSet = obj.bit104OfSupportedMcsSet;
this.bit105OfSupportedMcsSet = obj.bit105OfSupportedMcsSet;
this.bit106OfSupportedMcsSet = obj.bit106OfSupportedMcsSet;
this.bit107OfSupportedMcsSet = obj.bit107OfSupportedMcsSet;
this.bit108OfSupportedMcsSet = obj.bit108OfSupportedMcsSet;
this.bit109OfSupportedMcsSet = obj.bit109OfSupportedMcsSet;
this.bit110OfSupportedMcsSet = obj.bit110OfSupportedMcsSet;
this.bit111OfSupportedMcsSet = obj.bit111OfSupportedMcsSet;
this.bit112OfSupportedMcsSet = obj.bit112OfSupportedMcsSet;
this.bit113OfSupportedMcsSet = obj.bit113OfSupportedMcsSet;
this.bit114OfSupportedMcsSet = obj.bit114OfSupportedMcsSet;
this.bit115OfSupportedMcsSet = obj.bit115OfSupportedMcsSet;
this.bit116OfSupportedMcsSet = obj.bit116OfSupportedMcsSet;
this.bit117OfSupportedMcsSet = obj.bit117OfSupportedMcsSet;
this.bit118OfSupportedMcsSet = obj.bit118OfSupportedMcsSet;
this.bit119OfSupportedMcsSet = obj.bit119OfSupportedMcsSet;
this.bit120OfSupportedMcsSet = obj.bit120OfSupportedMcsSet;
this.bit121OfSupportedMcsSet = obj.bit121OfSupportedMcsSet;
this.bit122OfSupportedMcsSet = obj.bit122OfSupportedMcsSet;
this.bit123OfSupportedMcsSet = obj.bit123OfSupportedMcsSet;
this.bit124OfSupportedMcsSet = obj.bit124OfSupportedMcsSet;
this.bit125OfSupportedMcsSet = obj.bit125OfSupportedMcsSet;
this.bit126OfSupportedMcsSet = obj.bit126OfSupportedMcsSet;
this.bit127OfSupportedMcsSet = obj.bit127OfSupportedMcsSet;
this.pcoSupported = obj.pcoSupported;
this.pcoTransitionTime = obj.pcoTransitionTime;
this.bit3OfHtExtendedCapabilities = obj.bit3OfHtExtendedCapabilities;
this.bit4OfHtExtendedCapabilities = obj.bit4OfHtExtendedCapabilities;
this.bit5OfHtExtendedCapabilities = obj.bit5OfHtExtendedCapabilities;
this.bit6OfHtExtendedCapabilities = obj.bit6OfHtExtendedCapabilities;
this.bit7OfHtExtendedCapabilities = obj.bit7OfHtExtendedCapabilities;
this.mcsFeedbackCapability = obj.mcsFeedbackCapability;
this.htControlFieldSupported = obj.htControlFieldSupported;
this.rdResponderSupported = obj.rdResponderSupported;
this.bit12OfHtExtendedCapabilities = obj.bit12OfHtExtendedCapabilities;
this.bit13OfHtExtendedCapabilities = obj.bit13OfHtExtendedCapabilities;
this.bit14OfHtExtendedCapabilities = obj.bit14OfHtExtendedCapabilities;
this.bit15OfHtExtendedCapabilities = obj.bit15OfHtExtendedCapabilities;
this.implicitTxBeamformingReceivingSupported = obj.implicitTxBeamformingReceivingSupported;
this.rxStaggeredSoundingSupported = obj.rxStaggeredSoundingSupported;
this.txStaggeredSoundingSupported = obj.txStaggeredSoundingSupported;
this.rxNdpSupported = obj.rxNdpSupported;
this.txNdpSupported = obj.txNdpSupported;
this.implicitTxBeamformingSupported = obj.implicitTxBeamformingSupported;
this.calibration = obj.calibration;
this.explicitCsiTxBeamformingSupported = obj.explicitCsiTxBeamformingSupported;
this.explicitNoncompressedSteeringSupported = obj.explicitNoncompressedSteeringSupported;
this.explicitCompressedSteeringSupported = obj.explicitCompressedSteeringSupported;
this.explicitTxBeamformingCsiFeedbackCapability =
obj.explicitTxBeamformingCsiFeedbackCapability;
this.explicitNoncompressedBeamformingFeedbackCapability =
obj.explicitNoncompressedBeamformingFeedbackCapability;
this.explicitCompressedBeamformingFeedbackCapability =
obj.explicitCompressedBeamformingFeedbackCapability;
this.minGrouping = obj.minGrouping;
this.csiNumBeamformerAntennasSupported = obj.csiNumBeamformerAntennasSupported;
this.noncompressedSteeringNumBeamformerAntennasSupported =
obj.noncompressedSteeringNumBeamformerAntennasSupported;
this.compressedSteeringNumBeamformerAntennasSupported =
obj.compressedSteeringNumBeamformerAntennasSupported;
this.csiMaxNumRowsBeamformerSupported = obj.csiMaxNumRowsBeamformerSupported;
this.channelEstimationCapability = obj.channelEstimationCapability;
this.bit29OfTransmitBeamformingCapabilities = obj.bit29OfTransmitBeamformingCapabilities;
this.bit30OfTransmitBeamformingCapabilities = obj.bit30OfTransmitBeamformingCapabilities;
this.bit31OfTransmitBeamformingCapabilities = obj.bit31OfTransmitBeamformingCapabilities;
this.antennaSelectionSupported = obj.antennaSelectionSupported;
this.explicitCsiFeedbackBasedTxAselSupported = obj.explicitCsiFeedbackBasedTxAselSupported;
this.antennaIndicesFeedbackBasedTxAselSupported =
obj.antennaIndicesFeedbackBasedTxAselSupported;
this.explicitCsiFeedbackSupported = obj.explicitCsiFeedbackSupported;
this.antennaIndicesFeedbackSupported = obj.antennaIndicesFeedbackSupported;
this.rxAselSupported = obj.rxAselSupported;
this.txSoundingPpdusSupported = obj.txSoundingPpdusSupported;
this.bit7OfAselCapability = obj.bit7OfAselCapability;
}
/**
* @param ldpcCodingSupported ldpcCodingSupported
* @return this Builder object for method chaining.
*/
public Builder ldpcCodingSupported(boolean ldpcCodingSupported) {
this.ldpcCodingSupported = ldpcCodingSupported;
return this;
}
/**
* @param both20and40MhzSupported both20and40MhzSupported
* @return this Builder object for method chaining.
*/
public Builder both20and40MhzSupported(boolean both20and40MhzSupported) {
this.both20and40MhzSupported = both20and40MhzSupported;
return this;
}
/**
* @param smPowerSaveMode smPowerSaveMode
* @return this Builder object for method chaining.
*/
public Builder smPowerSaveMode(SmPowerSaveMode smPowerSaveMode) {
this.smPowerSaveMode = smPowerSaveMode;
return this;
}
/**
* @param htGreenfieldSupported htGreenfieldSupported
* @return this Builder object for method chaining.
*/
public Builder htGreenfieldSupported(boolean htGreenfieldSupported) {
this.htGreenfieldSupported = htGreenfieldSupported;
return this;
}
/**
* @param shortGiFor20MhzSupported shortGiFor20MhzSupported
* @return this Builder object for method chaining.
*/
public Builder shortGiFor20MhzSupported(boolean shortGiFor20MhzSupported) {
this.shortGiFor20MhzSupported = shortGiFor20MhzSupported;
return this;
}
/**
* @param shortGiFor40MhzSupported shortGiFor40MhzSupported
* @return this Builder object for method chaining.
*/
public Builder shortGiFor40MhzSupported(boolean shortGiFor40MhzSupported) {
this.shortGiFor40MhzSupported = shortGiFor40MhzSupported;
return this;
}
/**
* @param txStbcSupported txStbcSupported
* @return this Builder object for method chaining.
*/
public Builder txStbcSupported(boolean txStbcSupported) {
this.txStbcSupported = txStbcSupported;
return this;
}
/**
* @param rxStbcSupport rxStbcSupport
* @return this Builder object for method chaining.
*/
public Builder rxStbcSupport(StbcSupport rxStbcSupport) {
this.rxStbcSupport = rxStbcSupport;
return this;
}
/**
* @param htDelayedBlockAckSupported htDelayedBlockAckSupported
* @return this Builder object for method chaining.
*/
public Builder htDelayedBlockAckSupported(boolean htDelayedBlockAckSupported) {
this.htDelayedBlockAckSupported = htDelayedBlockAckSupported;
return this;
}
/**
* @param maxAMsduLength maxAMsduLength
* @return this Builder object for method chaining.
*/
public Builder maxAMsduLength(AMsduLength maxAMsduLength) {
this.maxAMsduLength = maxAMsduLength;
return this;
}
/**
* @param dsssCckModeIn40MhzSupported dsssCckModeIn40MhzSupported
* @return this Builder object for method chaining.
*/
public Builder dsssCckModeIn40MhzSupported(boolean dsssCckModeIn40MhzSupported) {
this.dsssCckModeIn40MhzSupported = dsssCckModeIn40MhzSupported;
return this;
}
/**
* @param bit13OfHtCapabilitiesInfo bit13OfHtCapabilitiesInfo
* @return this Builder object for method chaining.
*/
public Builder bit13OfHtCapabilitiesInfo(boolean bit13OfHtCapabilitiesInfo) {
this.bit13OfHtCapabilitiesInfo = bit13OfHtCapabilitiesInfo;
return this;
}
/**
* @param fortyMhzIntolerant fortyMhzIntolerant
* @return this Builder object for method chaining.
*/
public Builder fortyMhzIntolerant(boolean fortyMhzIntolerant) {
this.fortyMhzIntolerant = fortyMhzIntolerant;
return this;
}
/**
* @param lSigTxopProtectionSupported lSigTxopProtectionSupported
* @return this Builder object for method chaining.
*/
public Builder lSigTxopProtectionSupported(boolean lSigTxopProtectionSupported) {
this.lSigTxopProtectionSupported = lSigTxopProtectionSupported;
return this;
}
/**
* @param maxAMpduLength maxAMpduLength
* @return this Builder object for method chaining.
*/
public Builder maxAMpduLength(AMpduLength maxAMpduLength) {
this.maxAMpduLength = maxAMpduLength;
return this;
}
/**
* @param minMpduStartSpacing minMpduStartSpacing
* @return this Builder object for method chaining.
*/
public Builder minMpduStartSpacing(MpduStartSpacing minMpduStartSpacing) {
this.minMpduStartSpacing = minMpduStartSpacing;
return this;
}
/**
* @param bit5OfAMpduParameters bit5OfAMpduParameters
* @return this Builder object for method chaining.
*/
public Builder bit5OfAMpduParameters(boolean bit5OfAMpduParameters) {
this.bit5OfAMpduParameters = bit5OfAMpduParameters;
return this;
}
/**
* @param bit6OfAMpduParameters bit6OfAMpduParameters
* @return this Builder object for method chaining.
*/
public Builder bit6OfAMpduParameters(boolean bit6OfAMpduParameters) {
this.bit6OfAMpduParameters = bit6OfAMpduParameters;
return this;
}
/**
* @param bit7OfAMpduParameters bit7OfAMpduParameters
* @return this Builder object for method chaining.
*/
public Builder bit7OfAMpduParameters(boolean bit7OfAMpduParameters) {
this.bit7OfAMpduParameters = bit7OfAMpduParameters;
return this;
}
/**
* @param supportedRxMcsIndexes supportedRxMcsIndexes. supportedRxMcsIndexes.length must be 77.
* @return this Builder object for method chaining.
*/
public Builder supportedRxMcsIndexes(boolean[] supportedRxMcsIndexes) {
this.supportedRxMcsIndexes = supportedRxMcsIndexes;
return this;
}
/**
* @param bit77OfSupportedMcsSet bit77OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit77OfSupportedMcsSet(boolean bit77OfSupportedMcsSet) {
this.bit77OfSupportedMcsSet = bit77OfSupportedMcsSet;
return this;
}
/**
* @param bit78OfSupportedMcsSet bit78OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit78OfSupportedMcsSet(boolean bit78OfSupportedMcsSet) {
this.bit78OfSupportedMcsSet = bit78OfSupportedMcsSet;
return this;
}
/**
* @param bit79OfSupportedMcsSet bit79OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit79OfSupportedMcsSet(boolean bit79OfSupportedMcsSet) {
this.bit79OfSupportedMcsSet = bit79OfSupportedMcsSet;
return this;
}
/**
* @param rxHighestSupportedDataRate rxHighestSupportedDataRate. The value is between 0 and 1023
* (inclusive).
* @return this Builder object for method chaining.
*/
public Builder rxHighestSupportedDataRate(short rxHighestSupportedDataRate) {
this.rxHighestSupportedDataRate = rxHighestSupportedDataRate;
return this;
}
/**
* @param bit90OfSupportedMcsSet bit90OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit90OfSupportedMcsSet(boolean bit90OfSupportedMcsSet) {
this.bit90OfSupportedMcsSet = bit90OfSupportedMcsSet;
return this;
}
/**
* @param bit91OfSupportedMcsSet bit91OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit91OfSupportedMcsSet(boolean bit91OfSupportedMcsSet) {
this.bit91OfSupportedMcsSet = bit91OfSupportedMcsSet;
return this;
}
/**
* @param bit92OfSupportedMcsSet bit92OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit92OfSupportedMcsSet(boolean bit92OfSupportedMcsSet) {
this.bit92OfSupportedMcsSet = bit92OfSupportedMcsSet;
return this;
}
/**
* @param bit93OfSupportedMcsSet bit93OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit93OfSupportedMcsSet(boolean bit93OfSupportedMcsSet) {
this.bit93OfSupportedMcsSet = bit93OfSupportedMcsSet;
return this;
}
/**
* @param bit94OfSupportedMcsSet bit94OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit94OfSupportedMcsSet(boolean bit94OfSupportedMcsSet) {
this.bit94OfSupportedMcsSet = bit94OfSupportedMcsSet;
return this;
}
/**
* @param bit95OfSupportedMcsSet bit95OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit95OfSupportedMcsSet(boolean bit95OfSupportedMcsSet) {
this.bit95OfSupportedMcsSet = bit95OfSupportedMcsSet;
return this;
}
/**
* @param txMcsSetDefined txMcsSetDefined
* @return this Builder object for method chaining.
*/
public Builder txMcsSetDefined(boolean txMcsSetDefined) {
this.txMcsSetDefined = txMcsSetDefined;
return this;
}
/**
* @param txRxMcsSetNotEqual txRxMcsSetNotEqual
* @return this Builder object for method chaining.
*/
public Builder txRxMcsSetNotEqual(boolean txRxMcsSetNotEqual) {
this.txRxMcsSetNotEqual = txRxMcsSetNotEqual;
return this;
}
/**
* @param txMaxNumSpatialStreamsSupported txMaxNumSpatialStreamsSupported
* @return this Builder object for method chaining.
*/
public Builder txMaxNumSpatialStreamsSupported(
NumSpatialStreams txMaxNumSpatialStreamsSupported) {
this.txMaxNumSpatialStreamsSupported = txMaxNumSpatialStreamsSupported;
return this;
}
/**
* @param txUnequalModulationSupported txUnequalModulationSupported
* @return this Builder object for method chaining.
*/
public Builder txUnequalModulationSupported(boolean txUnequalModulationSupported) {
this.txUnequalModulationSupported = txUnequalModulationSupported;
return this;
}
/**
* @param bit101OfSupportedMcsSet bit101OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit101OfSupportedMcsSet(boolean bit101OfSupportedMcsSet) {
this.bit101OfSupportedMcsSet = bit101OfSupportedMcsSet;
return this;
}
/**
* @param bit102OfSupportedMcsSet bit102OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit102OfSupportedMcsSet(boolean bit102OfSupportedMcsSet) {
this.bit102OfSupportedMcsSet = bit102OfSupportedMcsSet;
return this;
}
/**
* @param bit103OfSupportedMcsSet bit103OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit103OfSupportedMcsSet(boolean bit103OfSupportedMcsSet) {
this.bit103OfSupportedMcsSet = bit103OfSupportedMcsSet;
return this;
}
/**
* @param bit104OfSupportedMcsSet bit104OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit104OfSupportedMcsSet(boolean bit104OfSupportedMcsSet) {
this.bit104OfSupportedMcsSet = bit104OfSupportedMcsSet;
return this;
}
/**
* @param bit105OfSupportedMcsSet bit105OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit105OfSupportedMcsSet(boolean bit105OfSupportedMcsSet) {
this.bit105OfSupportedMcsSet = bit105OfSupportedMcsSet;
return this;
}
/**
* @param bit106OfSupportedMcsSet bit106OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit106OfSupportedMcsSet(boolean bit106OfSupportedMcsSet) {
this.bit106OfSupportedMcsSet = bit106OfSupportedMcsSet;
return this;
}
/**
* @param bit107OfSupportedMcsSet bit107OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit107OfSupportedMcsSet(boolean bit107OfSupportedMcsSet) {
this.bit107OfSupportedMcsSet = bit107OfSupportedMcsSet;
return this;
}
/**
* @param bit108OfSupportedMcsSet bit108OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit108OfSupportedMcsSet(boolean bit108OfSupportedMcsSet) {
this.bit108OfSupportedMcsSet = bit108OfSupportedMcsSet;
return this;
}
/**
* @param bit109OfSupportedMcsSet bit109OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit109OfSupportedMcsSet(boolean bit109OfSupportedMcsSet) {
this.bit109OfSupportedMcsSet = bit109OfSupportedMcsSet;
return this;
}
/**
* @param bit110OfSupportedMcsSet bit110OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit110OfSupportedMcsSet(boolean bit110OfSupportedMcsSet) {
this.bit110OfSupportedMcsSet = bit110OfSupportedMcsSet;
return this;
}
/**
* @param bit111OfSupportedMcsSet bit111OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit111OfSupportedMcsSet(boolean bit111OfSupportedMcsSet) {
this.bit111OfSupportedMcsSet = bit111OfSupportedMcsSet;
return this;
}
/**
* @param bit112OfSupportedMcsSet bit112OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit112OfSupportedMcsSet(boolean bit112OfSupportedMcsSet) {
this.bit112OfSupportedMcsSet = bit112OfSupportedMcsSet;
return this;
}
/**
* @param bit113OfSupportedMcsSet bit113OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit113OfSupportedMcsSet(boolean bit113OfSupportedMcsSet) {
this.bit113OfSupportedMcsSet = bit113OfSupportedMcsSet;
return this;
}
/**
* @param bit114OfSupportedMcsSet bit114OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit114OfSupportedMcsSet(boolean bit114OfSupportedMcsSet) {
this.bit114OfSupportedMcsSet = bit114OfSupportedMcsSet;
return this;
}
/**
* @param bit115OfSupportedMcsSet bit115OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit115OfSupportedMcsSet(boolean bit115OfSupportedMcsSet) {
this.bit115OfSupportedMcsSet = bit115OfSupportedMcsSet;
return this;
}
/**
* @param bit116OfSupportedMcsSet bit116OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit116OfSupportedMcsSet(boolean bit116OfSupportedMcsSet) {
this.bit116OfSupportedMcsSet = bit116OfSupportedMcsSet;
return this;
}
/**
* @param bit117OfSupportedMcsSet bit117OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit117OfSupportedMcsSet(boolean bit117OfSupportedMcsSet) {
this.bit117OfSupportedMcsSet = bit117OfSupportedMcsSet;
return this;
}
/**
* @param bit118OfSupportedMcsSet bit118OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit118OfSupportedMcsSet(boolean bit118OfSupportedMcsSet) {
this.bit118OfSupportedMcsSet = bit118OfSupportedMcsSet;
return this;
}
/**
* @param bit119OfSupportedMcsSet bit119OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit119OfSupportedMcsSet(boolean bit119OfSupportedMcsSet) {
this.bit119OfSupportedMcsSet = bit119OfSupportedMcsSet;
return this;
}
/**
* @param bit120OfSupportedMcsSet bit120OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit120OfSupportedMcsSet(boolean bit120OfSupportedMcsSet) {
this.bit120OfSupportedMcsSet = bit120OfSupportedMcsSet;
return this;
}
/**
* @param bit121OfSupportedMcsSet bit121OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit121OfSupportedMcsSet(boolean bit121OfSupportedMcsSet) {
this.bit121OfSupportedMcsSet = bit121OfSupportedMcsSet;
return this;
}
/**
* @param bit122OfSupportedMcsSet bit122OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit122OfSupportedMcsSet(boolean bit122OfSupportedMcsSet) {
this.bit122OfSupportedMcsSet = bit122OfSupportedMcsSet;
return this;
}
/**
* @param bit123OfSupportedMcsSet bit123OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit123OfSupportedMcsSet(boolean bit123OfSupportedMcsSet) {
this.bit123OfSupportedMcsSet = bit123OfSupportedMcsSet;
return this;
}
/**
* @param bit124OfSupportedMcsSet bit124OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit124OfSupportedMcsSet(boolean bit124OfSupportedMcsSet) {
this.bit124OfSupportedMcsSet = bit124OfSupportedMcsSet;
return this;
}
/**
* @param bit125OfSupportedMcsSet bit125OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit125OfSupportedMcsSet(boolean bit125OfSupportedMcsSet) {
this.bit125OfSupportedMcsSet = bit125OfSupportedMcsSet;
return this;
}
/**
* @param bit126OfSupportedMcsSet bit126OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit126OfSupportedMcsSet(boolean bit126OfSupportedMcsSet) {
this.bit126OfSupportedMcsSet = bit126OfSupportedMcsSet;
return this;
}
/**
* @param bit127OfSupportedMcsSet bit127OfSupportedMcsSet
* @return this Builder object for method chaining.
*/
public Builder bit127OfSupportedMcsSet(boolean bit127OfSupportedMcsSet) {
this.bit127OfSupportedMcsSet = bit127OfSupportedMcsSet;
return this;
}
/**
* @param pcoSupported pcoSupported
* @return this Builder object for method chaining.
*/
public Builder pcoSupported(boolean pcoSupported) {
this.pcoSupported = pcoSupported;
return this;
}
/**
* @param pcoTransitionTime pcoTransitionTime
* @return this Builder object for method chaining.
*/
public Builder pcoTransitionTime(PcoTransitionTime pcoTransitionTime) {
this.pcoTransitionTime = pcoTransitionTime;
return this;
}
/**
* @param bit3OfHtExtendedCapabilities bit3OfHtExtendedCapabilities
* @return this Builder object for method chaining.
*/
public Builder bit3OfHtExtendedCapabilities(boolean bit3OfHtExtendedCapabilities) {
this.bit3OfHtExtendedCapabilities = bit3OfHtExtendedCapabilities;
return this;
}
/**
* @param bit4OfHtExtendedCapabilities bit4OfHtExtendedCapabilities
* @return this Builder object for method chaining.
*/
public Builder bit4OfHtExtendedCapabilities(boolean bit4OfHtExtendedCapabilities) {
this.bit4OfHtExtendedCapabilities = bit4OfHtExtendedCapabilities;
return this;
}
/**
* @param bit5OfHtExtendedCapabilities bit5OfHtExtendedCapabilities
* @return this Builder object for method chaining.
*/
public Builder bit5OfHtExtendedCapabilities(boolean bit5OfHtExtendedCapabilities) {
this.bit5OfHtExtendedCapabilities = bit5OfHtExtendedCapabilities;
return this;
}
/**
* @param bit6OfHtExtendedCapabilities bit6OfHtExtendedCapabilities
* @return this Builder object for method chaining.
*/
public Builder bit6OfHtExtendedCapabilities(boolean bit6OfHtExtendedCapabilities) {
this.bit6OfHtExtendedCapabilities = bit6OfHtExtendedCapabilities;
return this;
}
/**
* @param bit7OfHtExtendedCapabilities bit7OfHtExtendedCapabilities
* @return this Builder object for method chaining.
*/
public Builder bit7OfHtExtendedCapabilities(boolean bit7OfHtExtendedCapabilities) {
this.bit7OfHtExtendedCapabilities = bit7OfHtExtendedCapabilities;
return this;
}
/**
* @param mcsFeedbackCapability mcsFeedbackCapability
* @return this Builder object for method chaining.
*/
public Builder mcsFeedbackCapability(McsFeedbackCapability mcsFeedbackCapability) {
this.mcsFeedbackCapability = mcsFeedbackCapability;
return this;
}
/**
* @param htControlFieldSupported htControlFieldSupported
* @return this Builder object for method chaining.
*/
public Builder htControlFieldSupported(boolean htControlFieldSupported) {
this.htControlFieldSupported = htControlFieldSupported;
return this;
}
/**
* @param rdResponderSupported rdResponderSupported
* @return this Builder object for method chaining.
*/
public Builder rdResponderSupported(boolean rdResponderSupported) {
this.rdResponderSupported = rdResponderSupported;
return this;
}
/**
* @param bit12OfHtExtendedCapabilities bit12OfHtExtendedCapabilities
* @return this Builder object for method chaining.
*/
public Builder bit12OfHtExtendedCapabilities(boolean bit12OfHtExtendedCapabilities) {
this.bit12OfHtExtendedCapabilities = bit12OfHtExtendedCapabilities;
return this;
}
/**
* @param bit13OfHtExtendedCapabilities bit13OfHtExtendedCapabilities
* @return this Builder object for method chaining.
*/
public Builder bit13OfHtExtendedCapabilities(boolean bit13OfHtExtendedCapabilities) {
this.bit13OfHtExtendedCapabilities = bit13OfHtExtendedCapabilities;
return this;
}
/**
* @param bit14OfHtExtendedCapabilities bit14OfHtExtendedCapabilities
* @return this Builder object for method chaining.
*/
public Builder bit14OfHtExtendedCapabilities(boolean bit14OfHtExtendedCapabilities) {
this.bit14OfHtExtendedCapabilities = bit14OfHtExtendedCapabilities;
return this;
}
/**
* @param bit15OfHtExtendedCapabilities bit15OfHtExtendedCapabilities
* @return this Builder object for method chaining.
*/
public Builder bit15OfHtExtendedCapabilities(boolean bit15OfHtExtendedCapabilities) {
this.bit15OfHtExtendedCapabilities = bit15OfHtExtendedCapabilities;
return this;
}
/**
* @param implicitTxBeamformingReceivingSupported implicitTxBeamformingReceivingSupported
* @return this Builder object for method chaining.
*/
public Builder implicitTxBeamformingReceivingSupported(
boolean implicitTxBeamformingReceivingSupported) {
this.implicitTxBeamformingReceivingSupported = implicitTxBeamformingReceivingSupported;
return this;
}
/**
* @param rxStaggeredSoundingSupported rxStaggeredSoundingSupported
* @return this Builder object for method chaining.
*/
public Builder rxStaggeredSoundingSupported(boolean rxStaggeredSoundingSupported) {
this.rxStaggeredSoundingSupported = rxStaggeredSoundingSupported;
return this;
}
/**
* @param txStaggeredSoundingSupported txStaggeredSoundingSupported
* @return this Builder object for method chaining.
*/
public Builder txStaggeredSoundingSupported(boolean txStaggeredSoundingSupported) {
this.txStaggeredSoundingSupported = txStaggeredSoundingSupported;
return this;
}
/**
* @param rxNdpSupported rxNdpSupported
* @return this Builder object for method chaining.
*/
public Builder rxNdpSupported(boolean rxNdpSupported) {
this.rxNdpSupported = rxNdpSupported;
return this;
}
/**
* @param txNdpSupported txNdpSupported
* @return this Builder object for method chaining.
*/
public Builder txNdpSupported(boolean txNdpSupported) {
this.txNdpSupported = txNdpSupported;
return this;
}
/**
* @param implicitTxBeamformingSupported implicitTxBeamformingSupported
* @return this Builder object for method chaining.
*/
public Builder implicitTxBeamformingSupported(boolean implicitTxBeamformingSupported) {
this.implicitTxBeamformingSupported = implicitTxBeamformingSupported;
return this;
}
/**
* @param calibration calibration
* @return this Builder object for method chaining.
*/
public Builder calibration(Calibration calibration) {
this.calibration = calibration;
return this;
}
/**
* @param explicitCsiTxBeamformingSupported explicitCsiTxBeamformingSupported
* @return this Builder object for method chaining.
*/
public Builder explicitCsiTxBeamformingSupported(boolean explicitCsiTxBeamformingSupported) {
this.explicitCsiTxBeamformingSupported = explicitCsiTxBeamformingSupported;
return this;
}
/**
* @param explicitNoncompressedSteeringSupported explicitNoncompressedSteeringSupported
* @return this Builder object for method chaining.
*/
public Builder explicitNoncompressedSteeringSupported(
boolean explicitNoncompressedSteeringSupported) {
this.explicitNoncompressedSteeringSupported = explicitNoncompressedSteeringSupported;
return this;
}
/**
* @param explicitCompressedSteeringSupported explicitCompressedSteeringSupported
* @return this Builder object for method chaining.
*/
public Builder explicitCompressedSteeringSupported(
boolean explicitCompressedSteeringSupported) {
this.explicitCompressedSteeringSupported = explicitCompressedSteeringSupported;
return this;
}
/**
* @param explicitTxBeamformingCsiFeedbackCapability explicitTxBeamformingCsiFeedbackCapability
* @return this Builder object for method chaining.
*/
public Builder explicitTxBeamformingCsiFeedbackCapability(
BeamformingFeedbackCapability explicitTxBeamformingCsiFeedbackCapability) {
this.explicitTxBeamformingCsiFeedbackCapability = explicitTxBeamformingCsiFeedbackCapability;
return this;
}
/**
* @param explicitNoncompressedBeamformingFeedbackCapability
* explicitNoncompressedBeamformingFeedbackCapability
* @return this Builder object for method chaining.
*/
public Builder explicitNoncompressedBeamformingFeedbackCapability(
BeamformingFeedbackCapability explicitNoncompressedBeamformingFeedbackCapability) {
this.explicitNoncompressedBeamformingFeedbackCapability =
explicitNoncompressedBeamformingFeedbackCapability;
return this;
}
/**
* @param explicitCompressedBeamformingFeedbackCapability
* explicitCompressedBeamformingFeedbackCapability
* @return this Builder object for method chaining.
*/
public Builder explicitCompressedBeamformingFeedbackCapability(
BeamformingFeedbackCapability explicitCompressedBeamformingFeedbackCapability) {
this.explicitCompressedBeamformingFeedbackCapability =
explicitCompressedBeamformingFeedbackCapability;
return this;
}
/**
* @param minGrouping minGrouping
* @return this Builder object for method chaining.
*/
public Builder minGrouping(Grouping minGrouping) {
this.minGrouping = minGrouping;
return this;
}
/**
* @param csiNumBeamformerAntennasSupported csiNumBeamformerAntennasSupported
* @return this Builder object for method chaining.
*/
public Builder csiNumBeamformerAntennasSupported(
NumBeamformerAntennas csiNumBeamformerAntennasSupported) {
this.csiNumBeamformerAntennasSupported = csiNumBeamformerAntennasSupported;
return this;
}
/**
* @param noncompressedSteeringNumBeamformerAntennasSupported
* noncompressedSteeringNumBeamformerAntennasSupported
* @return this Builder object for method chaining.
*/
public Builder noncompressedSteeringNumBeamformerAntennasSupported(
NumBeamformerAntennas noncompressedSteeringNumBeamformerAntennasSupported) {
this.noncompressedSteeringNumBeamformerAntennasSupported =
noncompressedSteeringNumBeamformerAntennasSupported;
return this;
}
/**
* @param compressedSteeringNumBeamformerAntennasSupported
* compressedSteeringNumBeamformerAntennasSupported
* @return this Builder object for method chaining.
*/
public Builder compressedSteeringNumBeamformerAntennasSupported(
NumBeamformerAntennas compressedSteeringNumBeamformerAntennasSupported) {
this.compressedSteeringNumBeamformerAntennasSupported =
compressedSteeringNumBeamformerAntennasSupported;
return this;
}
/**
* @param csiMaxNumRowsBeamformerSupported csiMaxNumRowsBeamformerSupported
* @return this Builder object for method chaining.
*/
public Builder csiMaxNumRowsBeamformerSupported(CsiNumRows csiMaxNumRowsBeamformerSupported) {
this.csiMaxNumRowsBeamformerSupported = csiMaxNumRowsBeamformerSupported;
return this;
}
/**
* @param channelEstimationCapability channelEstimationCapability
* @return this Builder object for method chaining.
*/
public Builder channelEstimationCapability(
ChannelEstimationCapability channelEstimationCapability) {
this.channelEstimationCapability = channelEstimationCapability;
return this;
}
/**
* @param bit29OfTransmitBeamformingCapabilities bit29OfTransmitBeamformingCapabilities
* @return this Builder object for method chaining.
*/
public Builder bit29OfTransmitBeamformingCapabilities(
boolean bit29OfTransmitBeamformingCapabilities) {
this.bit29OfTransmitBeamformingCapabilities = bit29OfTransmitBeamformingCapabilities;
return this;
}
/**
* @param bit30OfTransmitBeamformingCapabilities bit30OfTransmitBeamformingCapabilities
* @return this Builder object for method chaining.
*/
public Builder bit30OfTransmitBeamformingCapabilities(
boolean bit30OfTransmitBeamformingCapabilities) {
this.bit30OfTransmitBeamformingCapabilities = bit30OfTransmitBeamformingCapabilities;
return this;
}
/**
* @param bit31OfTransmitBeamformingCapabilities bit31OfTransmitBeamformingCapabilities
* @return this Builder object for method chaining.
*/
public Builder bit31OfTransmitBeamformingCapabilities(
boolean bit31OfTransmitBeamformingCapabilities) {
this.bit31OfTransmitBeamformingCapabilities = bit31OfTransmitBeamformingCapabilities;
return this;
}
/**
* @param antennaSelectionSupported antennaSelectionSupported
* @return this Builder object for method chaining.
*/
public Builder antennaSelectionSupported(boolean antennaSelectionSupported) {
this.antennaSelectionSupported = antennaSelectionSupported;
return this;
}
/**
* @param explicitCsiFeedbackBasedTxAselSupported explicitCsiFeedbackBasedTxAselSupported
* @return this Builder object for method chaining.
*/
public Builder explicitCsiFeedbackBasedTxAselSupported(
boolean explicitCsiFeedbackBasedTxAselSupported) {
this.explicitCsiFeedbackBasedTxAselSupported = explicitCsiFeedbackBasedTxAselSupported;
return this;
}
/**
* @param antennaIndicesFeedbackBasedTxAselSupported antennaIndicesFeedbackBasedTxAselSupported
* @return this Builder object for method chaining.
*/
public Builder antennaIndicesFeedbackBasedTxAselSupported(
boolean antennaIndicesFeedbackBasedTxAselSupported) {
this.antennaIndicesFeedbackBasedTxAselSupported = antennaIndicesFeedbackBasedTxAselSupported;
return this;
}
/**
* @param explicitCsiFeedbackSupported explicitCsiFeedbackSupported
* @return this Builder object for method chaining.
*/
public Builder explicitCsiFeedbackSupported(boolean explicitCsiFeedbackSupported) {
this.explicitCsiFeedbackSupported = explicitCsiFeedbackSupported;
return this;
}
/**
* @param antennaIndicesFeedbackSupported antennaIndicesFeedbackSupported
* @return this Builder object for method chaining.
*/
public Builder antennaIndicesFeedbackSupported(boolean antennaIndicesFeedbackSupported) {
this.antennaIndicesFeedbackSupported = antennaIndicesFeedbackSupported;
return this;
}
/**
* @param rxAselSupported rxAselSupported
* @return this Builder object for method chaining.
*/
public Builder rxAselSupported(boolean rxAselSupported) {
this.rxAselSupported = rxAselSupported;
return this;
}
/**
* @param txSoundingPpdusSupported txSoundingPpdusSupported
* @return this Builder object for method chaining.
*/
public Builder txSoundingPpdusSupported(boolean txSoundingPpdusSupported) {
this.txSoundingPpdusSupported = txSoundingPpdusSupported;
return this;
}
/**
* @param bit7OfAselCapability bit7OfAselCapability
* @return this Builder object for method chaining.
*/
public Builder bit7OfAselCapability(boolean bit7OfAselCapability) {
this.bit7OfAselCapability = bit7OfAselCapability;
return this;
}
@Override
public Builder length(byte length) {
super.length(length);
return this;
}
@Override
public Builder correctLengthAtBuild(boolean correctLengthAtBuild) {
super.correctLengthAtBuild(correctLengthAtBuild);
return this;
}
@Override
public Dot11HTCapabilitiesElement build() {
if (getCorrectLengthAtBuild()) {
length((byte) 26);
}
return new Dot11HTCapabilitiesElement(this);
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy