• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.android.anqp;
2 
3 import android.os.Parcel;
4 
5 import java.net.ProtocolException;
6 import java.nio.ByteBuffer;
7 import java.nio.charset.StandardCharsets;
8 
9 import static com.android.anqp.Constants.SHORT_MASK;
10 
11 /**
12  * The Icons available OSU Providers sub field, as specified in
13  * Wi-Fi Alliance Hotspot 2.0 (Release 2) Technical Specification - Version 5.00,
14  * section 4.8.1.4
15  */
16 public class IconInfo {
17     private final int mWidth;
18     private final int mHeight;
19     private final String mLanguage;
20     private final String mIconType;
21     private final String mFileName;
22 
IconInfo(ByteBuffer payload)23     public IconInfo(ByteBuffer payload) throws ProtocolException {
24         if (payload.remaining() < 9) {
25             throw new ProtocolException("Truncated icon meta data");
26         }
27 
28         mWidth = payload.getShort() & SHORT_MASK;
29         mHeight = payload.getShort() & SHORT_MASK;
30         mLanguage = Constants.getTrimmedString(payload,
31                 Constants.LANG_CODE_LENGTH, StandardCharsets.US_ASCII);
32         mIconType = Constants.getPrefixedString(payload, 1, StandardCharsets.US_ASCII);
33         mFileName = Constants.getPrefixedString(payload, 1, StandardCharsets.UTF_8);
34     }
35 
getWidth()36     public int getWidth() {
37         return mWidth;
38     }
39 
getHeight()40     public int getHeight() {
41         return mHeight;
42     }
43 
getLanguage()44     public String getLanguage() {
45         return mLanguage;
46     }
47 
getIconType()48     public String getIconType() {
49         return mIconType;
50     }
51 
getFileName()52     public String getFileName() {
53         return mFileName;
54     }
55 
56     @Override
equals(Object thatObject)57     public boolean equals(Object thatObject) {
58         if (this == thatObject) {
59             return true;
60         }
61         if (thatObject == null || getClass() != thatObject.getClass()) {
62             return false;
63         }
64 
65         IconInfo that = (IconInfo) thatObject;
66         return mHeight == that.mHeight &&
67                 mWidth == that.mWidth &&
68                 mFileName.equals(that.mFileName) &&
69                 mIconType.equals(that.mIconType) &&
70                 mLanguage.equals(that.mLanguage);
71     }
72 
73     @Override
hashCode()74     public int hashCode() {
75         int result = mWidth;
76         result = 31 * result + mHeight;
77         result = 31 * result + mLanguage.hashCode();
78         result = 31 * result + mIconType.hashCode();
79         result = 31 * result + mFileName.hashCode();
80         return result;
81     }
82 
83     @Override
toString()84     public String toString() {
85         return "IconInfo{" +
86                 "Width=" + mWidth +
87                 ", Height=" + mHeight +
88                 ", Language=" + mLanguage +
89                 ", IconType='" + mIconType + '\'' +
90                 ", FileName='" + mFileName + '\'' +
91                 '}';
92     }
93 
IconInfo(Parcel in)94     public IconInfo(Parcel in) {
95         mWidth = in.readInt();
96         mHeight = in.readInt();
97         mLanguage = in.readString();
98         mIconType = in.readString();
99         mFileName = in.readString();
100     }
101 
writeParcel(Parcel out)102     public void writeParcel(Parcel out) {
103         out.writeInt(mWidth);
104         out.writeInt(mHeight);
105         out.writeString(mLanguage);
106         out.writeString(mIconType);
107         out.writeString(mFileName);
108     }
109 }
110