140bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood/* 240bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * Copyright (C) 2011 The Android Open Source Project 340bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * 440bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * Licensed under the Apache License, Version 2.0 (the "License"); 540bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * you may not use this file except in compliance with the License. 640bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * You may obtain a copy of the License at 740bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * 840bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * http://www.apache.org/licenses/LICENSE-2.0 940bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * 1040bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * Unless required by applicable law or agreed to in writing, software 1140bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * distributed under the License is distributed on an "AS IS" BASIS, 1240bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1340bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * See the License for the specific language governing permissions and 1440bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * limitations under the License. 1540bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood */ 1640bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood 171110748b2df664f9c5066819c1f0616eae3394a7Mike Lockwoodpackage com.android.future.usb; 1840bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood 1940bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood/** 2040bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * A class representing a USB accessory. 2140bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood */ 22638d7cb3ee0bb3596b01dc19eca9456fa72a36e0Mike Lockwoodpublic class UsbAccessory { 2340bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood 2440bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood private final String mManufacturer; 2540bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood private final String mModel; 262cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood private final String mDescription; 2740bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood private final String mVersion; 282cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood private final String mUri; 29638d7cb3ee0bb3596b01dc19eca9456fa72a36e0Mike Lockwood private final String mSerial; 3040bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood 3140bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood /* package */ UsbAccessory(android.hardware.usb.UsbAccessory accessory) { 3240bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood mManufacturer = accessory.getManufacturer(); 3340bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood mModel = accessory.getModel(); 342cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood mDescription = accessory.getDescription(); 3540bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood mVersion = accessory.getVersion(); 362cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood mUri = accessory.getUri(); 37638d7cb3ee0bb3596b01dc19eca9456fa72a36e0Mike Lockwood mSerial = accessory.getSerial(); 3840bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood } 3940bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood 4040bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood /** 4140bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * Returns the manufacturer of the accessory. 4240bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * 4340bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * @return the accessory manufacturer 4440bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood */ 4540bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood public String getManufacturer() { 4640bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood return mManufacturer; 4740bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood } 4840bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood 4940bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood /** 5040bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * Returns the model name of the accessory. 5140bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * 5240bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * @return the accessory model 5340bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood */ 5440bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood public String getModel() { 5540bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood return mModel; 5640bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood } 5740bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood 5840bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood /** 592cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood * Returns a user visible description of the accessory. 6040bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * 612cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood * @return the accessory description 6240bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood */ 632cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood public String getDescription() { 642cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood return mDescription; 6540bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood } 6640bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood 6740bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood /** 6840bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * Returns the version of the accessory. 6940bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * 7040bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood * @return the accessory version 7140bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood */ 7240bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood public String getVersion() { 7340bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood return mVersion; 7440bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood } 7540bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood 762cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood /** 772cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood * Returns the URI for the accessory. 782cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood * This is an optional URI that might show information about the accessory 792cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood * or provide the option to download an application for the accessory 802cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood * 812cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood * @return the accessory URI 822cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood */ 832cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood public String getUri() { 842cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood return mUri; 852cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood } 862cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood 87638d7cb3ee0bb3596b01dc19eca9456fa72a36e0Mike Lockwood /** 88638d7cb3ee0bb3596b01dc19eca9456fa72a36e0Mike Lockwood * Returns the unique serial number for the accessory. 89638d7cb3ee0bb3596b01dc19eca9456fa72a36e0Mike Lockwood * This is an optional serial number that can be used to differentiate 90638d7cb3ee0bb3596b01dc19eca9456fa72a36e0Mike Lockwood * between individual accessories of the same model and manufacturer 91638d7cb3ee0bb3596b01dc19eca9456fa72a36e0Mike Lockwood * 92638d7cb3ee0bb3596b01dc19eca9456fa72a36e0Mike Lockwood * @return the unique serial number 93638d7cb3ee0bb3596b01dc19eca9456fa72a36e0Mike Lockwood */ 94638d7cb3ee0bb3596b01dc19eca9456fa72a36e0Mike Lockwood public String getSerial() { 95638d7cb3ee0bb3596b01dc19eca9456fa72a36e0Mike Lockwood return mSerial; 96638d7cb3ee0bb3596b01dc19eca9456fa72a36e0Mike Lockwood } 97638d7cb3ee0bb3596b01dc19eca9456fa72a36e0Mike Lockwood 9840bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood private static boolean compare(String s1, String s2) { 9940bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood if (s1 == null) return (s2 == null); 10040bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood return s1.equals(s2); 10140bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood } 10240bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood 10340bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood @Override 10440bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood public boolean equals(Object obj) { 10540bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood if (obj instanceof UsbAccessory) { 10640bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood UsbAccessory accessory = (UsbAccessory)obj; 10740bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood return (compare(mManufacturer, accessory.getManufacturer()) && 10840bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood compare(mModel, accessory.getModel()) && 1092cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood compare(mDescription, accessory.getDescription()) && 1102cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood compare(mVersion, accessory.getVersion()) && 111638d7cb3ee0bb3596b01dc19eca9456fa72a36e0Mike Lockwood compare(mUri, accessory.getUri()) && 112638d7cb3ee0bb3596b01dc19eca9456fa72a36e0Mike Lockwood compare(mSerial, accessory.getSerial())); 11340bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood } 11440bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood return false; 11540bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood } 11640bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood 11740bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood @Override 1182cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood public int hashCode() { 1192cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood return ((mManufacturer == null ? 0 : mManufacturer.hashCode()) ^ 1202cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood (mModel == null ? 0 : mModel.hashCode()) ^ 1212cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood (mDescription == null ? 0 : mDescription.hashCode()) ^ 1222cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood (mVersion == null ? 0 : mVersion.hashCode()) ^ 123638d7cb3ee0bb3596b01dc19eca9456fa72a36e0Mike Lockwood (mUri == null ? 0 : mUri.hashCode()) ^ 124638d7cb3ee0bb3596b01dc19eca9456fa72a36e0Mike Lockwood (mSerial == null ? 0 : mSerial.hashCode())); 1252cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood } 1262cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood 1272cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood @Override 12840bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood public String toString() { 12940bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood return "UsbAccessory[mManufacturer=" + mManufacturer + 13040bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood ", mModel=" + mModel + 1312cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood ", mDescription=" + mDescription + 1322cc0377200b94b2f68f34e34554f2aa39e09cbceMike Lockwood ", mVersion=" + mVersion + 133638d7cb3ee0bb3596b01dc19eca9456fa72a36e0Mike Lockwood ", mUri=" + mUri + 134638d7cb3ee0bb3596b01dc19eca9456fa72a36e0Mike Lockwood ", mSerial=" + mSerial + "]"; 13540bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood } 13640bbf9295d5245d3917629ce15f7b37670aef1acMike Lockwood} 137