Home | History | Annotate | Download | only in anqp
      1 package com.android.server.wifi.anqp;
      2 
      3 import java.net.ProtocolException;
      4 import java.nio.ByteBuffer;
      5 import java.util.Arrays;
      6 
      7 /**
      8  * The ANQP Capability List element, 802.11-2012 section 8.4.4.3
      9  */
     10 public class CapabilityListElement extends ANQPElement {
     11     private final Constants.ANQPElementType[] mCapabilities;
     12 
     13     public CapabilityListElement(Constants.ANQPElementType infoID, ByteBuffer payload)
     14             throws ProtocolException {
     15         super(infoID);
     16         if ((payload.remaining() & 1) == 1)
     17             throw new ProtocolException("Odd length");
     18         mCapabilities = new Constants.ANQPElementType[payload.remaining() / Constants.BYTES_IN_SHORT];
     19 
     20         int index = 0;
     21         while (payload.hasRemaining()) {
     22             int capID = payload.getShort() & Constants.SHORT_MASK;
     23             Constants.ANQPElementType capability = Constants.mapANQPElement(capID);
     24             if (capability == null)
     25                 throw new ProtocolException("Unknown capability: " + capID);
     26             mCapabilities[index++] = capability;
     27         }
     28     }
     29 
     30     public Constants.ANQPElementType[] getCapabilities() {
     31         return mCapabilities;
     32     }
     33 
     34     @Override
     35     public String toString() {
     36         return "CapabilityList{" +
     37                 "mCapabilities=" + Arrays.toString(mCapabilities) +
     38                 '}';
     39     }
     40 }
     41