1e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood/* 2e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * Copyright (C) 2010 The Android Open Source Project 3e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * 4e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * Licensed under the Apache License, Version 2.0 (the "License"); 5e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * you may not use this file except in compliance with the License. 6e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * You may obtain a copy of the License at 7e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * 8e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * http://www.apache.org/licenses/LICENSE-2.0 9e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * 10e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * Unless required by applicable law or agreed to in writing, software 11e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * distributed under the License is distributed on an "AS IS" BASIS, 12e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * See the License for the specific language governing permissions and 14e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood * limitations under the License. 15e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood */ 16e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 17c4308f01c965571dc2354107c3574df113e397eeMike Lockwoodpackage android.hardware.usb; 18e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 193a68b8338b431eb15d28e92f06452efbbda9493eMike Lockwoodimport android.app.PendingIntent; 20c4308f01c965571dc2354107c3574df113e397eeMike Lockwoodimport android.hardware.usb.UsbAccessory; 21c4308f01c965571dc2354107c3574df113e397eeMike Lockwoodimport android.hardware.usb.UsbDevice; 22e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwoodimport android.os.Bundle; 23e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwoodimport android.os.ParcelFileDescriptor; 24e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 25e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood/** @hide */ 26e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwoodinterface IUsbManager 27e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood{ 28e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood /* Returns a list of all currently attached USB devices */ 29e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood void getDeviceList(out Bundle devices); 3002eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood 3102eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood /* Returns a file descriptor for communicating with the USB device. 3202eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood * The native fd can be passed to usb_device_new() in libusbhost. 3302eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood */ 34e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood ParcelFileDescriptor openDevice(String deviceName); 3502eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood 3602eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood /* Returns the currently attached USB accessory */ 379182d3c4eb1f9065cb33df5a3594969dd0d42accMike Lockwood UsbAccessory getCurrentAccessory(); 3802eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood 3902eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood /* Returns a file descriptor for communicating with the USB accessory. 4002eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood * This file descriptor can be used with standard Java file operations. 4102eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood */ 4202eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood ParcelFileDescriptor openAccessory(in UsbAccessory accessory); 4302eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood 4402eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood /* Sets the default package for a USB device 4502eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood * (or clears it if the package name is null) 4602eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood */ 47fc3f24b4b60c10e0d3f41f70df37e11ea311cc2cJeff Sharkey void setDevicePackage(in UsbDevice device, String packageName, int userId); 4802eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood 4962cfeeb821afb2f3d3b78ad93caa13408cd26eacMike Lockwood /* Sets the default package for a USB accessory 5002eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood * (or clears it if the package name is null) 5102eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood */ 52fc3f24b4b60c10e0d3f41f70df37e11ea311cc2cJeff Sharkey void setAccessoryPackage(in UsbAccessory accessory, String packageName, int userId); 5302eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood 543a68b8338b431eb15d28e92f06452efbbda9493eMike Lockwood /* Returns true if the caller has permission to access the device. */ 553a68b8338b431eb15d28e92f06452efbbda9493eMike Lockwood boolean hasDevicePermission(in UsbDevice device); 563a68b8338b431eb15d28e92f06452efbbda9493eMike Lockwood 573a68b8338b431eb15d28e92f06452efbbda9493eMike Lockwood /* Returns true if the caller has permission to access the accessory. */ 583a68b8338b431eb15d28e92f06452efbbda9493eMike Lockwood boolean hasAccessoryPermission(in UsbAccessory accessory); 593a68b8338b431eb15d28e92f06452efbbda9493eMike Lockwood 603a68b8338b431eb15d28e92f06452efbbda9493eMike Lockwood /* Requests permission for the given package to access the device. 613a68b8338b431eb15d28e92f06452efbbda9493eMike Lockwood * Will display a system dialog to query the user if permission 623a68b8338b431eb15d28e92f06452efbbda9493eMike Lockwood * had not already been given. 633a68b8338b431eb15d28e92f06452efbbda9493eMike Lockwood */ 643a68b8338b431eb15d28e92f06452efbbda9493eMike Lockwood void requestDevicePermission(in UsbDevice device, String packageName, in PendingIntent pi); 653a68b8338b431eb15d28e92f06452efbbda9493eMike Lockwood 663a68b8338b431eb15d28e92f06452efbbda9493eMike Lockwood /* Requests permission for the given package to access the accessory. 673a68b8338b431eb15d28e92f06452efbbda9493eMike Lockwood * Will display a system dialog to query the user if permission 683a68b8338b431eb15d28e92f06452efbbda9493eMike Lockwood * had not already been given. Result is returned via pi. 693a68b8338b431eb15d28e92f06452efbbda9493eMike Lockwood */ 703a68b8338b431eb15d28e92f06452efbbda9493eMike Lockwood void requestAccessoryPermission(in UsbAccessory accessory, String packageName, 713a68b8338b431eb15d28e92f06452efbbda9493eMike Lockwood in PendingIntent pi); 723a68b8338b431eb15d28e92f06452efbbda9493eMike Lockwood 7302eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood /* Grants permission for the given UID to access the device */ 7402eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood void grantDevicePermission(in UsbDevice device, int uid); 7502eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood 7602eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood /* Grants permission for the given UID to access the accessory */ 7702eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood void grantAccessoryPermission(in UsbAccessory accessory, int uid); 7802eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood 7902eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood /* Returns true if the USB manager has default preferences or permissions for the package */ 80fc3f24b4b60c10e0d3f41f70df37e11ea311cc2cJeff Sharkey boolean hasDefaults(String packageName, int userId); 8102eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood 8202eb8746de2d60563ec2751a34d20923192e4293Mike Lockwood /* Clears default preferences and permissions for the package */ 83fc3f24b4b60c10e0d3f41f70df37e11ea311cc2cJeff Sharkey void clearDefaults(String packageName, int userId); 8402e4569b5f126ca916a7473117ddd17d4f2ccbbbMike Lockwood 85f59717ddb5ef324ee3fdb12b83e7d1b709793d28Mike Lockwood /* Sets the current USB function. */ 86f59717ddb5ef324ee3fdb12b83e7d1b709793d28Mike Lockwood void setCurrentFunction(String function, boolean makeDefault); 8702e4569b5f126ca916a7473117ddd17d4f2ccbbbMike Lockwood 8802e4569b5f126ca916a7473117ddd17d4f2ccbbbMike Lockwood /* Sets the file path for USB mass storage backing file. */ 8902e4569b5f126ca916a7473117ddd17d4f2ccbbbMike Lockwood void setMassStorageBackingFile(String path); 904e68bd420b6cfdbeadb5e69aa6448665b2da762bBenoit Goby 914e68bd420b6cfdbeadb5e69aa6448665b2da762bBenoit Goby /* Allow USB debugging from the attached host. If alwaysAllow is true, add the 924e68bd420b6cfdbeadb5e69aa6448665b2da762bBenoit Goby * the public key to list of host keys that the user has approved. 934e68bd420b6cfdbeadb5e69aa6448665b2da762bBenoit Goby */ 944e68bd420b6cfdbeadb5e69aa6448665b2da762bBenoit Goby void allowUsbDebugging(boolean alwaysAllow, String publicKey); 954e68bd420b6cfdbeadb5e69aa6448665b2da762bBenoit Goby 964e68bd420b6cfdbeadb5e69aa6448665b2da762bBenoit Goby /* Deny USB debugging from the attached host */ 974e68bd420b6cfdbeadb5e69aa6448665b2da762bBenoit Goby void denyUsbDebugging(); 98e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood} 99