NAIRealmElement.java revision 7b2caa25fb57f2d95e0d0421704c49d3af4b8e6f
1package com.android.server.wifi.anqp; 2 3import java.net.ProtocolException; 4import java.nio.ByteBuffer; 5import java.util.ArrayList; 6import java.util.Collections; 7import java.util.List; 8 9import static com.android.server.wifi.anqp.Constants.BYTES_IN_SHORT; 10import static com.android.server.wifi.anqp.Constants.SHORT_MASK; 11 12/** 13 * The NAI Realm ANQP Element, IEEE802.11-2012 section 8.4.4.10 14 */ 15public class NAIRealmElement extends ANQPElement { 16 private final List<NAIRealmData> mRealmData; 17 18 public NAIRealmElement(Constants.ANQPElementType infoID, ByteBuffer payload) 19 throws ProtocolException { 20 super(infoID); 21 22 if (!payload.hasRemaining()) { 23 mRealmData = Collections.emptyList(); 24 return; 25 } 26 27 if (payload.remaining() < BYTES_IN_SHORT) { 28 throw new ProtocolException("Runt NAI Realm: " + payload.remaining()); 29 } 30 31 int count = payload.getShort() & SHORT_MASK; 32 mRealmData = new ArrayList<NAIRealmData>(count); 33 while (count > 0) { 34 mRealmData.add(new NAIRealmData(payload)); 35 count--; 36 } 37 } 38 39 public List<NAIRealmData> getRealmData() { 40 return Collections.unmodifiableList(mRealmData); 41 } 42 43 @Override 44 public String toString() { 45 StringBuilder sb = new StringBuilder(); 46 sb.append("NAI Realm Element:\n"); 47 for (NAIRealmData data : mRealmData) { 48 sb.append(data); 49 } 50 return sb.toString(); 51 } 52} 53