16a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistpackage com.android.server.wifi.anqp; 26a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 36a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.net.ProtocolException; 46a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.nio.ByteBuffer; 56a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.util.Arrays; 66a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 76a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist/** 86a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist * The HS Capability list vendor specific ANQP Element, 96a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist * Wi-Fi Alliance Hotspot 2.0 (Release 2) Technical Specification - Version 5.00, 106a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist * section 4.2 116a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist */ 126a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistpublic class HSCapabilityListElement extends ANQPElement { 136a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist private final Constants.ANQPElementType[] mCapabilities; 146a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 156a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist public HSCapabilityListElement(Constants.ANQPElementType infoID, ByteBuffer payload) 166a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist throws ProtocolException { 176a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist super(infoID); 186a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 196a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist mCapabilities = new Constants.ANQPElementType[payload.remaining()]; 206a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 216a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist int index = 0; 226a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist while (payload.hasRemaining()) { 236a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist int capID = payload.get() & Constants.BYTE_MASK; 24777f4fc037d3ebd555f10041f8acfb41515b2f4bJan Nordqvist Constants.ANQPElementType capability = Constants.mapHS20Element(capID); 25777f4fc037d3ebd555f10041f8acfb41515b2f4bJan Nordqvist if (capability == null) { 266a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist throw new ProtocolException("Unknown capability: " + capID); 27777f4fc037d3ebd555f10041f8acfb41515b2f4bJan Nordqvist } 286a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist mCapabilities[index++] = capability; 296a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 306a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 316a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 326a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist public Constants.ANQPElementType[] getCapabilities() { 336a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist return mCapabilities; 346a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 356a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 366a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist @Override 376a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist public String toString() { 3877f2b82a2e80af8da52c22d69a76def6d4209757Jan Nordqvist return "HSCapabilityList{" + 396a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist "mCapabilities=" + Arrays.toString(mCapabilities) + 406a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist '}'; 416a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 426a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist} 43