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