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