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