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