| package com.android.server.wifi.anqp; |
| |
| import com.android.server.wifi.hotspot2.Utils; |
| |
| import java.net.ProtocolException; |
| import java.nio.ByteBuffer; |
| import java.nio.ByteOrder; |
| import java.util.ArrayList; |
| import java.util.Collections; |
| import java.util.List; |
| |
| import static com.android.server.wifi.anqp.Constants.BYTE_MASK; |
| import static com.android.server.wifi.anqp.Constants.getInteger; |
| |
| /** |
| * The Roaming Consortium ANQP Element, IEEE802.11-2012 section 8.4.4.7 |
| */ |
| public class RoamingConsortiumElement extends ANQPElement { |
| |
| private final List<Long> mOis; |
| |
| public RoamingConsortiumElement(Constants.ANQPElementType infoID, ByteBuffer payload) |
| throws ProtocolException { |
| super(infoID); |
| |
| mOis = new ArrayList<Long>(); |
| |
| while (payload.hasRemaining()) { |
| int length = payload.get() & BYTE_MASK; |
| if (length > payload.remaining()) { |
| throw new ProtocolException("Bad OI length: " + length); |
| } |
| mOis.add(getInteger(payload, ByteOrder.BIG_ENDIAN, length)); |
| } |
| } |
| |
| public List<Long> getOIs() { |
| return Collections.unmodifiableList(mOis); |
| } |
| |
| @Override |
| public String toString() { |
| return "RoamingConsortium{mOis=[" + Utils.roamingConsortiumsToString(mOis) + "]}"; |
| } |
| } |