UsbAccessory.java revision c6f23e8521dedac7a07119031913235be3ca37c3
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; 33c4308f01c965571dc2354107c3574df113e397eeMike Lockwood private final String mType; 34c4308f01c965571dc2354107c3574df113e397eeMike Lockwood private final String mVersion; 359182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 369182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood /** 379182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * UsbAccessory should only be instantiated by UsbService implementation 389182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * @hide 399182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood */ 409182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public UsbAccessory(String manufacturer, String model, String type, String version) { 419182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood mManufacturer = manufacturer; 429182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood mModel = model; 439182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood mType = type; 449182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood mVersion = version; 459182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 469182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 479182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood /** 489182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * UsbAccessory should only be instantiated by UsbService implementation 499182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * @hide 509182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood */ 519182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public UsbAccessory(String[] strings) { 529182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood mManufacturer = strings[0]; 539182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood mModel = strings[1]; 549182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood mType = strings[2]; 559182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood mVersion = strings[3]; 569182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 579182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 589182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood /** 599182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * Returns the manufacturer of the accessory. 609182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * 619182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * @return the accessory manufacturer 629182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood */ 639182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public String getManufacturer() { 649182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood return mManufacturer; 659182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 669182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 679182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood /** 689182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * Returns the model name of the accessory. 699182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * 709182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * @return the accessory model 719182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood */ 729182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public String getModel() { 739182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood return mModel; 749182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 759182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 769182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood /** 779182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * Returns the type of the accessory. 789182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * 799182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * @return the accessory type 809182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood */ 819182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public String getType() { 829182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood return mType; 839182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 849182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 859182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood /** 869182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * Returns the version of the accessory. 879182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * 889182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood * @return the accessory version 899182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood */ 909182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public String getVersion() { 919182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood return mVersion; 929182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 939182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 9402eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood private static boolean compare(String s1, String s2) { 9502eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood if (s1 == null) return (s2 == null); 9602eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood return s1.equals(s2); 9702eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood } 9802eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood 9902eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood @Override 10002eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood public boolean equals(Object obj) { 10102eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood if (obj instanceof UsbAccessory) { 10202eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood UsbAccessory accessory = (UsbAccessory)obj; 10302eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood return (compare(mManufacturer, accessory.getManufacturer()) && 10402eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood compare(mModel, accessory.getModel()) && 10502eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood compare(mType, accessory.getType()) && 10602eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood compare(mVersion, accessory.getVersion())); 10702eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood } 10802eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood return false; 10902eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood } 11002eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood 1119182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood @Override 112c6f23e8521dedac7a07119031913235be3ca37c3Mike Lockwood public int hashCode() { 113c6f23e8521dedac7a07119031913235be3ca37c3Mike Lockwood return ((mManufacturer == null ? 0 : mManufacturer.hashCode()) ^ 114c6f23e8521dedac7a07119031913235be3ca37c3Mike Lockwood (mModel == null ? 0 : mModel.hashCode()) ^ 115c6f23e8521dedac7a07119031913235be3ca37c3Mike Lockwood (mType == null ? 0 : mType.hashCode()) ^ 116c6f23e8521dedac7a07119031913235be3ca37c3Mike Lockwood (mVersion == null ? 0 : mVersion.hashCode())); 117c6f23e8521dedac7a07119031913235be3ca37c3Mike Lockwood } 118c6f23e8521dedac7a07119031913235be3ca37c3Mike Lockwood 119c6f23e8521dedac7a07119031913235be3ca37c3Mike Lockwood @Override 1209182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public String toString() { 1219182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood return "UsbAccessory[mManufacturer=" + mManufacturer + 1229182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood ", mModel=" + mModel + 1239182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood ", mType=" + mType + 1249182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood ", mVersion=" + mVersion + "]"; 1259182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 1269182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 1279182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public static final Parcelable.Creator<UsbAccessory> CREATOR = 1289182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood new Parcelable.Creator<UsbAccessory>() { 1299182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public UsbAccessory createFromParcel(Parcel in) { 1309182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood String manufacturer = in.readString(); 1319182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood String model = in.readString(); 1329182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood String type = in.readString(); 1339182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood String version = in.readString(); 1349182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood return new UsbAccessory(manufacturer, model, type, version); 1359182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 1369182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 1379182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public UsbAccessory[] newArray(int size) { 1389182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood return new UsbAccessory[size]; 1399182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 1409182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood }; 1419182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 1429182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public int describeContents() { 1439182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood return 0; 1449182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 1459182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood 1469182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood public void writeToParcel(Parcel parcel, int flags) { 1479182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood parcel.writeString(mManufacturer); 1489182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood parcel.writeString(mModel); 1499182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood parcel.writeString(mType); 1509182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood parcel.writeString(mVersion); 1519182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood } 1529182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood} 153