| package com.android.server.wifi.anqp; |
| |
| import java.net.ProtocolException; |
| import java.nio.ByteBuffer; |
| import java.util.ArrayList; |
| import java.util.Collections; |
| import java.util.List; |
| |
| import static com.android.server.wifi.anqp.Constants.BYTE_MASK; |
| |
| |
| /** |
| * The 3GPP Cellular Network ANQP Element, IEEE802.11-2012 section 8.4.4.11 |
| */ |
| public class ThreeGPPNetworkElement extends ANQPElement { |
| private final int mUserData; |
| private final List<CellularNetwork> mPlmns; |
| |
| public ThreeGPPNetworkElement(Constants.ANQPElementType infoID, ByteBuffer payload) |
| throws ProtocolException { |
| super(infoID); |
| |
| mPlmns = new ArrayList<CellularNetwork>(); |
| mUserData = payload.get() & BYTE_MASK; |
| int length = payload.get() & BYTE_MASK; |
| if (length > payload.remaining()) { |
| throw new ProtocolException("Runt payload"); |
| } |
| |
| while (payload.hasRemaining()) { |
| CellularNetwork network = CellularNetwork.buildCellularNetwork(payload); |
| if (network != null) { |
| mPlmns.add(network); |
| } |
| } |
| } |
| |
| public int getUserData() { |
| return mUserData; |
| } |
| |
| public List<CellularNetwork> getPlmns() { |
| return Collections.unmodifiableList(mPlmns); |
| } |
| |
| @Override |
| public String toString() { |
| return "ThreeGPPNetwork{" + |
| "mUserData=" + mUserData + |
| ", mPlmns=" + mPlmns + |
| '}'; |
| } |
| } |