16a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistpackage com.android.server.wifi.anqp; 26a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 36a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.net.ProtocolException; 46a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.nio.ByteBuffer; 56a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.nio.charset.StandardCharsets; 66a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.util.ArrayList; 76a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.util.Collections; 86a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.util.List; 96a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 106a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist/** 116a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist * The OSU Providers List vendor specific ANQP Element, 126a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist * Wi-Fi Alliance Hotspot 2.0 (Release 2) Technical Specification - Version 5.00, 136a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist * section 4.8 146a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist */ 156a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistpublic class HSOsuProvidersElement extends ANQPElement { 166a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist private final String mSSID; 176a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist private final List<OSUProvider> mProviders; 186a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 196a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist public HSOsuProvidersElement(Constants.ANQPElementType infoID, ByteBuffer payload) 206a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist throws ProtocolException { 216a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist super(infoID); 226a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 236a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist mSSID = Constants.getPrefixedString(payload, 1, StandardCharsets.UTF_8); 246a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist int providerCount = payload.get() & Constants.BYTE_MASK; 256a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 261d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist mProviders = new ArrayList<>(providerCount); 276a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 286a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist while (providerCount > 0) { 296a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist mProviders.add(new OSUProvider(payload)); 306a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist providerCount--; 316a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 326a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 336a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 346a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist public String getSSID() { 356a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist return mSSID; 366a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 376a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 386a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist public List<OSUProvider> getProviders() { 396a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist return Collections.unmodifiableList(mProviders); 406a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 416a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 426a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist @Override 436a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist public String toString() { 4477f2b82a2e80af8da52c22d69a76def6d4209757Jan Nordqvist return "HSOsuProviders{" + 451d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist "SSID='" + mSSID + '\'' + 461d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist ", providers=" + mProviders + 476a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist '}'; 486a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 496a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist} 50