| /* |
| * Copyright (C) 2016 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package android.car.usb.handler; |
| |
| import android.content.ComponentName; |
| import android.hardware.usb.UsbDevice; |
| |
| /** |
| * Settings for USB device. |
| * @hide |
| */ |
| public final class UsbDeviceSettings { |
| |
| private final String mSerialNumber; |
| private final int mVid; |
| private final int mPid; |
| private String mDeviceName; |
| private ComponentName mHandler; |
| private boolean mAoap; |
| private boolean mDefaultHandler; |
| |
| UsbDeviceSettings(String serialNumber, int vid, int pid) { |
| mSerialNumber = serialNumber; |
| mVid = vid; |
| mPid = pid; |
| } |
| |
| public String getSerialNumber() { |
| return mSerialNumber; |
| } |
| |
| public int getVid() { |
| return mVid; |
| } |
| |
| public int getPid() { |
| return mPid; |
| } |
| |
| public void setDeviceName(String deviceName) { |
| mDeviceName = deviceName; |
| } |
| |
| public String getDeviceName() { |
| return mDeviceName; |
| } |
| |
| public void setHandler(ComponentName handler) { |
| mHandler = handler; |
| } |
| |
| public ComponentName getHandler() { |
| return mHandler; |
| } |
| |
| public void setAoap(boolean aoap) { |
| mAoap = aoap; |
| } |
| |
| public boolean getAoap() { |
| return mAoap; |
| } |
| |
| public void setDefaultHandler(boolean defaultHandler) { |
| mDefaultHandler = defaultHandler; |
| } |
| |
| public boolean isDefaultHandler() { |
| return mDefaultHandler; |
| } |
| |
| @Override |
| public String toString() { |
| return "UsbDeviceSettings{serial=" + mSerialNumber + ", vid=" + mVid + ", pid=" + mPid |
| + ", name=" + mDeviceName + ", handler=" + mHandler.toString() + ", aoap=" + mAoap |
| + ", default=" + mDefaultHandler + "}"; |
| } |
| |
| /** |
| * Checks if setting matches {@code UsbDevice}. |
| */ |
| public boolean matchesDevice(UsbDevice device) { |
| String deviceSerial = device.getSerialNumber(); |
| if (AoapInterface.isDeviceInAoapMode(device)) { |
| return mAoap && deviceSerial.equals(mSerialNumber); |
| } else if (deviceSerial == null) { |
| return mVid == device.getVendorId() && mPid == device.getProductId(); |
| } else { |
| return mVid == device.getVendorId() && mPid == device.getProductId() |
| && deviceSerial.equals(mSerialNumber); |
| } |
| } |
| |
| /** |
| * Creates settings from {@code UsbDevice}. |
| */ |
| public static UsbDeviceSettings constructSettings(UsbDevice device) { |
| UsbDeviceSettings settings = new UsbDeviceSettings( |
| device.getSerialNumber(), device.getVendorId(), device.getProductId()); |
| settings.setDeviceName(device.getProductName()); |
| return settings; |
| } |
| |
| /** |
| * Creates settings from other settings. |
| * <p> |
| * Only basic properties are inherited. |
| */ |
| public static UsbDeviceSettings constructSettings(UsbDeviceSettings origSettings) { |
| UsbDeviceSettings settings = new UsbDeviceSettings( |
| origSettings.getSerialNumber(), origSettings.getVid(), origSettings.getPid()); |
| settings.setDeviceName(origSettings.getDeviceName()); |
| return settings; |
| } |
| |
| /** |
| * Creates settings. |
| */ |
| public static UsbDeviceSettings constructSettings(String serialNumber, int vid, int pid, |
| String deviceName, ComponentName handler, boolean aoap) { |
| UsbDeviceSettings settings = new UsbDeviceSettings(serialNumber, vid, pid); |
| settings.setDeviceName(deviceName); |
| settings.setHandler(handler); |
| settings.setAoap(aoap); |
| return settings; |
| } |
| } |