/** * 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 Dot112040BssCoexistenceElement object. * @throws IllegalRawDataException if parsing the raw data fails. */ public static Dot112040BssCoexistenceElement newInstance(byte[] rawData, int offset, int length) throws IllegalRawDataException { ByteArrays.validateBounds(rawData, offset, length); return new Dot112040BssCoexistenceElement(rawData, offset, length); }
/** * @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("20/40 BSS Coexistence:").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(" Information Requested: ").append(informationRequested).append(ls); sb.append(indent).append(" 40 MHz Intolerant: ").append(fortyMhzIntolerant).append(ls); sb.append(indent) .append(" 20 MHz BSS Width Requested: ") .append(twentyMhzBssWidthRequested) .append(ls); sb.append(indent) .append(" OBSS Scanning Exemption Requested: ") .append(obssScanningExemptionRequested) .append(ls); sb.append(indent) .append(" OBSS Scanning Exemption Granted: ") .append(obssScanningExemptionGranted) .append(ls); sb.append(indent).append(" Bit 5: ").append(bit5).append(ls); sb.append(indent).append(" Bit 6: ").append(bit6).append(ls); sb.append(indent).append(" Bit 7: ").append(bit7).append(ls); return sb.toString(); }
@Override public byte[] getRawData() { byte[] rawData = new byte[3]; rawData[0] = getElementId().value(); rawData[1] = getLength(); if (informationRequested) { rawData[2] |= 0x01;
Dot112040BssCoexistenceElement.newInstance(rawData, offset, length); int elemLen = twentyFortyBssCoexistence.length(); offset += elemLen; length -= elemLen;
@Override public String toString() { return toString(""); }
/** * @param rawData rawData * @param offset offset * @param length length * @throws IllegalRawDataException if parsing the raw data fails. */ private Dot112040BssCoexistenceElement(byte[] rawData, int offset, int length) throws IllegalRawDataException { super(rawData, offset, length, Dot11InformationElementId.IE_20_40_BSS_COEXISTENCE); if (getLengthAsInt() != 1) { throw new IllegalRawDataException( "The length must be 1 but is actually: " + getLengthAsInt()); } this.informationRequested = (rawData[offset + 2] & 0x01) != 0; this.fortyMhzIntolerant = (rawData[offset + 2] & 0x02) != 0; this.twentyMhzBssWidthRequested = (rawData[offset + 2] & 0x04) != 0; this.obssScanningExemptionRequested = (rawData[offset + 2] & 0x08) != 0; this.obssScanningExemptionGranted = (rawData[offset + 2] & 0x10) != 0; this.bit5 = (rawData[offset + 2] & 0x20) != 0; this.bit6 = (rawData[offset + 2] & 0x40) != 0; this.bit7 = (rawData[offset + 2] & 0x80) != 0; }
rawFields.add(twentyFortyBssCoexistence.getRawData());
if (twentyFortyBssCoexistence == null) { if (other.twentyFortyBssCoexistence != null) return false; } else if (!twentyFortyBssCoexistence.equals(other.twentyFortyBssCoexistence)) return false; if (!vendorSpecificElements.equals(other.vendorSpecificElements)) return false; return true;
len += twentyFortyBssCoexistence.length();
@Override protected int calcHashCode() { final int prime = 31; int result = super.calcHashCode(); result = prime * result + ((channelUsage == null) ? 0 : channelUsage.hashCode()); result = prime * result + ((dsssParameterSet == null) ? 0 : dsssParameterSet.hashCode()); result = prime * result + ((extendedCapabilities == null) ? 0 : extendedCapabilities.hashCode()); result = prime * result + ((extendedSupportedRates == null) ? 0 : extendedSupportedRates.hashCode()); result = prime * result + ((htCapabilities == null) ? 0 : htCapabilities.hashCode()); result = prime * result + ((interworking == null) ? 0 : interworking.hashCode()); result = prime * result + ((meshId == null) ? 0 : meshId.hashCode()); result = prime * result + ((request == null) ? 0 : request.hashCode()); result = prime * result + ((ssid == null) ? 0 : ssid.hashCode()); result = prime * result + ((ssidList == null) ? 0 : ssidList.hashCode()); result = prime * result + ((supportedOperatingClasses == null) ? 0 : supportedOperatingClasses.hashCode()); result = prime * result + ((supportedRates == null) ? 0 : supportedRates.hashCode()); result = prime * result + ((twentyFortyBssCoexistence == null) ? 0 : twentyFortyBssCoexistence.hashCode()); result = prime * result + vendorSpecificElements.hashCode(); return result; }
Dot112040BssCoexistenceElement.newInstance(rawData, offset, length); int elemLen = twentyFortyBssCoexistence.length(); offset += elemLen; length -= elemLen;
sb.append(twentyFortyBssCoexistence.toString(" "));
/** * @param rawData rawData * @param offset offset * @param length length * @throws IllegalRawDataException if parsing the raw data fails. */ private Dot112040BssCoexistenceElement(byte[] rawData, int offset, int length) throws IllegalRawDataException { super(rawData, offset, length, Dot11InformationElementId.IE_20_40_BSS_COEXISTENCE); if (getLengthAsInt() != 1) { throw new IllegalRawDataException( "The length must be 1 but is actually: " + getLengthAsInt()); } this.informationRequested = (rawData[offset + 2] & 0x01) != 0; this.fortyMhzIntolerant = (rawData[offset + 2] & 0x02) != 0; this.twentyMhzBssWidthRequested = (rawData[offset + 2] & 0x04) != 0; this.obssScanningExemptionRequested = (rawData[offset + 2] & 0x08) != 0; this.obssScanningExemptionGranted = (rawData[offset + 2] & 0x10) != 0; this.bit5 = (rawData[offset + 2] & 0x20) != 0; this.bit6 = (rawData[offset + 2] & 0x40) != 0; this.bit7 = (rawData[offset + 2] & 0x80) != 0; }
rawFields.add(twentyFortyBssCoexistence.getRawData());
if (twentyFortyBssCoexistence == null) { if (other.twentyFortyBssCoexistence != null) return false; } else if (!twentyFortyBssCoexistence.equals(other.twentyFortyBssCoexistence)) return false; if (!vendorSpecificElements.equals(other.vendorSpecificElements)) return false; return true;
len += twentyFortyBssCoexistence.length();
/** * @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("20/40 BSS Coexistence:").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(" Information Requested: ").append(informationRequested).append(ls); sb.append(indent).append(" 40 MHz Intolerant: ").append(fortyMhzIntolerant).append(ls); sb.append(indent) .append(" 20 MHz BSS Width Requested: ") .append(twentyMhzBssWidthRequested) .append(ls); sb.append(indent) .append(" OBSS Scanning Exemption Requested: ") .append(obssScanningExemptionRequested) .append(ls); sb.append(indent) .append(" OBSS Scanning Exemption Granted: ") .append(obssScanningExemptionGranted) .append(ls); sb.append(indent).append(" Bit 5: ").append(bit5).append(ls); sb.append(indent).append(" Bit 6: ").append(bit6).append(ls); sb.append(indent).append(" Bit 7: ").append(bit7).append(ls); return sb.toString(); }
@Override public byte[] getRawData() { byte[] rawData = new byte[3]; rawData[0] = getElementId().value(); rawData[1] = getLength(); if (informationRequested) { rawData[2] |= 0x01;
@Override public Dot112040BssCoexistenceElement build() { if (getCorrectLengthAtBuild()) { length((byte) 1); } return new Dot112040BssCoexistenceElement(this); } }
@Override public String toString() { return toString(""); }