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 + '}'; } }