127555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood/* 227555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * Copyright (C) 2011 The Android Open Source Project 327555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * 427555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * Licensed under the Apache License, Version 2.0 (the "License"); 527555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * you may not use this file except in compliance with the License. 627555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * You may obtain a copy of the License at 727555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * 827555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * http://www.apache.org/licenses/LICENSE-2.0 927555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * 1027555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * Unless required by applicable law or agreed to in writing, software 1127555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * distributed under the License is distributed on an "AS IS" BASIS, 1227555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1327555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * See the License for the specific language governing permissions and 1427555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * limitations under the License. 1527555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood */ 1627555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood 17b547fc297f24ce2d74fc86ef2a79a4424b6b4c59Mike Lockwoodpackage com.android.future.usb; 1827555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood 1927555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood/** 2027555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * A class representing a USB accessory. 2127555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood */ 22015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwoodpublic class UsbAccessory { 2327555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood 2427555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood private final String mManufacturer; 2527555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood private final String mModel; 26ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood private final String mDescription; 2727555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood private final String mVersion; 28ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood private final String mUri; 29015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood private final String mSerial; 3027555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood 31c4308f01c965571dc2354107c3574df113e397eeMike Lockwood /* package */ UsbAccessory(android.hardware.usb.UsbAccessory accessory) { 3227555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood mManufacturer = accessory.getManufacturer(); 3327555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood mModel = accessory.getModel(); 34ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood mDescription = accessory.getDescription(); 3527555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood mVersion = accessory.getVersion(); 36ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood mUri = accessory.getUri(); 37015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood mSerial = accessory.getSerial(); 3827555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood } 3927555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood 4027555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood /** 4127555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * Returns the manufacturer of the accessory. 4227555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * 4327555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * @return the accessory manufacturer 4427555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood */ 4527555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood public String getManufacturer() { 4627555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood return mManufacturer; 4727555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood } 4827555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood 4927555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood /** 5027555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * Returns the model name of the accessory. 5127555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * 5227555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * @return the accessory model 5327555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood */ 5427555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood public String getModel() { 5527555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood return mModel; 5627555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood } 5727555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood 5827555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood /** 59ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood * Returns a user visible description of the accessory. 6027555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * 61ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood * @return the accessory description 6227555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood */ 63ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood public String getDescription() { 64ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood return mDescription; 6527555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood } 6627555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood 6727555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood /** 6827555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * Returns the version of the accessory. 6927555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * 7027555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood * @return the accessory version 7127555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood */ 7227555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood public String getVersion() { 7327555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood return mVersion; 7427555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood } 7527555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood 76ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood /** 77ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood * Returns the URI for the accessory. 78ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood * This is an optional URI that might show information about the accessory 79ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood * or provide the option to download an application for the accessory 80ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood * 81ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood * @return the accessory URI 82ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood */ 83ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood public String getUri() { 84ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood return mUri; 85ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood } 86ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood 87015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood /** 88015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood * Returns the unique serial number for the accessory. 89015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood * This is an optional serial number that can be used to differentiate 90015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood * between individual accessories of the same model and manufacturer 91015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood * 92015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood * @return the unique serial number 93015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood */ 94015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood public String getSerial() { 95015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood return mSerial; 96015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood } 97015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood 9827555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood private static boolean compare(String s1, String s2) { 9927555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood if (s1 == null) return (s2 == null); 10027555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood return s1.equals(s2); 10127555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood } 10227555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood 10327555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood @Override 10427555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood public boolean equals(Object obj) { 10527555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood if (obj instanceof UsbAccessory) { 10627555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood UsbAccessory accessory = (UsbAccessory)obj; 10727555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood return (compare(mManufacturer, accessory.getManufacturer()) && 10827555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood compare(mModel, accessory.getModel()) && 109ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood compare(mDescription, accessory.getDescription()) && 110ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood compare(mVersion, accessory.getVersion()) && 111015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood compare(mUri, accessory.getUri()) && 112015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood compare(mSerial, accessory.getSerial())); 11327555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood } 11427555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood return false; 11527555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood } 11627555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood 11727555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood @Override 118ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood public int hashCode() { 119ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood return ((mManufacturer == null ? 0 : mManufacturer.hashCode()) ^ 120ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood (mModel == null ? 0 : mModel.hashCode()) ^ 121ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood (mDescription == null ? 0 : mDescription.hashCode()) ^ 122ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood (mVersion == null ? 0 : mVersion.hashCode()) ^ 123015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood (mUri == null ? 0 : mUri.hashCode()) ^ 124015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood (mSerial == null ? 0 : mSerial.hashCode())); 125ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood } 126ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood 127ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood @Override 12827555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood public String toString() { 12927555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood return "UsbAccessory[mManufacturer=" + mManufacturer + 13027555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood ", mModel=" + mModel + 131ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood ", mDescription=" + mDescription + 132ac36d7c715a9cd793b2dce6de547594810101c3aMike Lockwood ", mVersion=" + mVersion + 133015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood ", mUri=" + mUri + 134015b1ecaec27b7cf5f1a78099d9ae34a0c3169f2Mike Lockwood ", mSerial=" + mSerial + "]"; 13527555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood } 13627555315629ffce59a19bd03ba51a8323cc864b0Mike Lockwood} 137