1ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvistpackage com.android.anqp; 2ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 3ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvistimport java.net.ProtocolException; 4ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvistimport java.nio.ByteBuffer; 5ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvistimport java.nio.charset.StandardCharsets; 6ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvistimport java.util.ArrayList; 7ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvistimport java.util.Collections; 8ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvistimport java.util.List; 9ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 10ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist/** 11ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist * The OSU Providers List vendor specific ANQP Element, 12ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist * Wi-Fi Alliance Hotspot 2.0 (Release 2) Technical Specification - Version 5.00, 13ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist * section 4.8 14ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist */ 15ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvistpublic class HSOsuProvidersElement extends ANQPElement { 16ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist private final String mSSID; 17ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist private final List<OSUProvider> mProviders; 18ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 19ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public HSOsuProvidersElement(Constants.ANQPElementType infoID, ByteBuffer payload) 20ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist throws ProtocolException { 21ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist super(infoID); 22ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 23ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist mSSID = Constants.getPrefixedString(payload, 1, StandardCharsets.UTF_8); 24ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist int providerCount = payload.get() & Constants.BYTE_MASK; 25ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 26ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist mProviders = new ArrayList<>(providerCount); 27ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 28ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist while (providerCount > 0) { 29ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist mProviders.add(new OSUProvider(mSSID, payload)); 30ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist providerCount--; 31ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist } 32ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist } 33ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 34ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public String getSSID() { 35ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist return mSSID; 36ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist } 37ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 38ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public List<OSUProvider> getProviders() { 39ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist return Collections.unmodifiableList(mProviders); 40ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist } 41ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist 42ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist @Override 43ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist public String toString() { 44ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist return "HSOsuProviders{" + 45ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist "SSID='" + mSSID + '\'' + 46ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist ", providers=" + mProviders + 47ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist '}'; 48ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist } 49ee699a61a5687d7c8518b639a940c8e9d1b384ddJan Nordqvist} 50