UsbAccessory.java revision 015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2
19182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood/* 29182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * Copyright (C) 2011 The Android Open Source Project 39182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * 49182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * Licensed under the Apache License, Version 2.0 (the "License"); 59182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * you may not use this file except in compliance with the License. 69182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * You may obtain a copy of the License at 79182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * 89182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * http://www.apache.org/licenses/LICENSE-2.0 99182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * 109182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * Unless required by applicable law or agreed to in writing, software 119182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * distributed under the License is distributed on an "AS IS" BASIS, 129182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * See the License for the specific language governing permissions and 149182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * limitations under the License. 159182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood */ 169182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 17c4308f01c965571dc2354107c3574df113e397eeMike Lockwoodpackage android.hardware.usb; 189182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 199182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwoodimport android.os.Bundle; 209182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwoodimport android.os.Parcel; 219182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwoodimport android.os.Parcelable; 229182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwoodimport android.util.Log; 239182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 249182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood/** 259182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * A class representing a USB accessory. 269182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood */ 27c4308f01c965571dc2354107c3574df113e397eeMike Lockwoodpublic class UsbAccessory implements Parcelable { 289182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 299182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood private static final String TAG = "UsbAccessory"; 309182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 31c4308f01c965571dc2354107c3574df113e397eeMike Lockwood private final String mManufacturer; 32c4308f01c965571dc2354107c3574df113e397eeMike Lockwood private final String mModel; 33ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood private final String mDescription; 34c4308f01c965571dc2354107c3574df113e397eeMike Lockwood private final String mVersion; 35ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood private final String mUri; 36015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood private final String mSerial; 379182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 389182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood /** 399182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * UsbAccessory should only be instantiated by UsbService implementation 409182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * @hide 419182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood */ 42ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood public UsbAccessory(String manufacturer, String model, String description, 43015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood String version, String uri, String serial) { 449182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood mManufacturer = manufacturer; 459182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood mModel = model; 46ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood mDescription = description; 479182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood mVersion = version; 48ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood mUri = uri; 49015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood mSerial = serial; 509182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 519182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 529182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood /** 539182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * UsbAccessory should only be instantiated by UsbService implementation 549182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * @hide 559182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood */ 569182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public UsbAccessory(String[] strings) { 579182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood mManufacturer = strings[0]; 589182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood mModel = strings[1]; 59ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood mDescription = strings[2]; 609182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood mVersion = strings[3]; 61ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood mUri = strings[4]; 62015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood mSerial = strings[5]; 639182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 649182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 659182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood /** 669182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * Returns the manufacturer of the accessory. 679182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * 689182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * @return the accessory manufacturer 699182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood */ 709182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public String getManufacturer() { 719182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood return mManufacturer; 729182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 739182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 749182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood /** 759182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * Returns the model name of the accessory. 769182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * 779182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * @return the accessory model 789182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood */ 799182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public String getModel() { 809182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood return mModel; 819182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 829182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 839182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood /** 84ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood * Returns a user visible description of the accessory. 859182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * 86ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood * @return the accessory description 879182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood */ 88ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood public String getDescription() { 89ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood return mDescription; 909182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 919182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 929182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood /** 939182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * Returns the version of the accessory. 949182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * 959182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * @return the accessory version 969182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood */ 979182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public String getVersion() { 989182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood return mVersion; 999182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 1009182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 101ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood /** 102ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood * Returns the URI for the accessory. 103ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood * This is an optional URI that might show information about the accessory 104ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood * or provide the option to download an application for the accessory 105ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood * 106ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood * @return the accessory URI 107ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood */ 108ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood public String getUri() { 109ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood return mUri; 110ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood } 111ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood 112015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood /** 113015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood * Returns the unique serial number for the accessory. 114015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood * This is an optional serial number that can be used to differentiate 115015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood * between individual accessories of the same model and manufacturer 116015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood * 117015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood * @return the unique serial number 118015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood */ 119015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood public String getSerial() { 120015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood return mSerial; 121015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood } 122015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood 12302eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood private static boolean compare(String s1, String s2) { 12402eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood if (s1 == null) return (s2 == null); 12502eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood return s1.equals(s2); 12602eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood } 12702eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood 12802eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood @Override 12902eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood public boolean equals(Object obj) { 13002eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood if (obj instanceof UsbAccessory) { 13102eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood UsbAccessory accessory = (UsbAccessory)obj; 13202eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood return (compare(mManufacturer, accessory.getManufacturer()) && 13302eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood compare(mModel, accessory.getModel()) && 134ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood compare(mDescription, accessory.getDescription()) && 135ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood compare(mVersion, accessory.getVersion()) && 136015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood compare(mUri, accessory.getUri()) && 137015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood compare(mSerial, accessory.getSerial())); 13802eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood } 13902eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood return false; 14002eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood } 14102eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood 1429182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood @Override 143c6f23e8521dedac7a07119031913235be3ca37c3Mike Lockwood public int hashCode() { 144c6f23e8521dedac7a07119031913235be3ca37c3Mike Lockwood return ((mManufacturer == null ? 0 : mManufacturer.hashCode()) ^ 145c6f23e8521dedac7a07119031913235be3ca37c3Mike Lockwood (mModel == null ? 0 : mModel.hashCode()) ^ 146ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood (mDescription == null ? 0 : mDescription.hashCode()) ^ 147ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood (mVersion == null ? 0 : mVersion.hashCode()) ^ 148015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood (mUri == null ? 0 : mUri.hashCode()) ^ 149015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood (mSerial == null ? 0 : mSerial.hashCode())); 150c6f23e8521dedac7a07119031913235be3ca37c3Mike Lockwood } 151c6f23e8521dedac7a07119031913235be3ca37c3Mike Lockwood 152c6f23e8521dedac7a07119031913235be3ca37c3Mike Lockwood @Override 1539182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public String toString() { 1549182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood return "UsbAccessory[mManufacturer=" + mManufacturer + 1559182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood ", mModel=" + mModel + 156ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood ", mDescription=" + mDescription + 157ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood ", mVersion=" + mVersion + 158015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood ", mUri=" + mUri + 159015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood ", mSerial=" + mSerial + "]"; 1609182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 1619182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 1629182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public static final Parcelable.Creator<UsbAccessory> CREATOR = 1639182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood new Parcelable.Creator<UsbAccessory>() { 1649182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public UsbAccessory createFromParcel(Parcel in) { 1659182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood String manufacturer = in.readString(); 1669182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood String model = in.readString(); 167ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood String description = in.readString(); 1689182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood String version = in.readString(); 169ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood String uri = in.readString(); 170015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood String serial = in.readString(); 171015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood return new UsbAccessory(manufacturer, model, description, version, uri, serial); 1729182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 1739182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 1749182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public UsbAccessory[] newArray(int size) { 1759182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood return new UsbAccessory[size]; 1769182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 1779182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood }; 1789182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 1799182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public int describeContents() { 1809182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood return 0; 1819182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 1829182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 1839182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public void writeToParcel(Parcel parcel, int flags) { 1849182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood parcel.writeString(mManufacturer); 1859182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood parcel.writeString(mModel); 186ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood parcel.writeString(mDescription); 1879182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood parcel.writeString(mVersion); 188ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood parcel.writeString(mUri); 189015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood parcel.writeString(mSerial); 1909182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 1919182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood} 192