Loading core/java/android/hardware/usb/IUsbManager.aidl +6 −0 Original line number Diff line number Diff line Loading @@ -105,6 +105,12 @@ interface IUsbManager /* Gets the current screen unlocked functions. */ long getScreenUnlockedFunctions(); /* Get the functionfs control handle for the given function. Usb * descriptors will already be written, and the handle will be * ready to use. */ ParcelFileDescriptor getControlFd(long function); /* Allow USB debugging from the attached host. If alwaysAllow is true, add the * the public key to list of host keys that the user has approved. */ Loading core/java/android/hardware/usb/UsbManager.java +19 −8 Original line number Diff line number Diff line Loading @@ -191,14 +191,6 @@ public class UsbManager { */ public static final String USB_DATA_UNLOCKED = "unlocked"; /** * Boolean extra indicating whether the intent represents a change in the usb * configuration (as opposed to a state update). * * {@hide} */ public static final String USB_CONFIG_CHANGED = "config_changed"; /** * A placeholder indicating that no USB function is being specified. * Used for compatibility with old init scripts to indicate no functions vs. charging function. Loading Loading @@ -470,6 +462,25 @@ public class UsbManager { } } /** * Gets the functionfs control file descriptor for the given function, with * the usb descriptors and strings already written. The file descriptor is used * by the function implementation to handle events and control requests. * * @param function to get control fd for. Currently {@link #FUNCTION_MTP} and * {@link #FUNCTION_PTP} are supported. * @return A ParcelFileDescriptor holding the valid fd, or null if the fd was not found. * * {@hide} */ public ParcelFileDescriptor getControlFd(long function) { try { return mService.getControlFd(function); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } /** * Returns true if the caller has permission to access the device. * Permission might have been granted temporarily via Loading core/java/com/android/internal/os/ZygoteInit.java +1 −1 Original line number Diff line number Diff line Loading @@ -652,7 +652,7 @@ public class ZygoteInit { String args[] = { "--setuid=1000", "--setgid=1000", "--setgroups=1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1018,1021,1023,1032,1065,3001,3002,3003,3006,3007,3009,3010", "--setgroups=1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1018,1021,1023,1024,1032,1065,3001,3002,3003,3006,3007,3009,3010", "--capabilities=" + capabilities + "," + capabilities, "--nice-name=system_server", "--runtime-args", Loading media/java/android/mtp/MtpServer.java +5 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package android.mtp; import com.android.internal.util.Preconditions; import java.io.FileDescriptor; /** * Java wrapper for MTP/PTP support as USB responder. * {@hide} Loading @@ -34,6 +36,7 @@ public class MtpServer implements Runnable { public MtpServer( MtpDatabase database, FileDescriptor controlFd, boolean usePtp, Runnable onTerminate, String deviceInfoManufacturer, Loading @@ -44,6 +47,7 @@ public class MtpServer implements Runnable { mOnTerminate = Preconditions.checkNotNull(onTerminate); native_setup( database, controlFd, usePtp, deviceInfoManufacturer, deviceInfoModel, Loading Loading @@ -92,6 +96,7 @@ public class MtpServer implements Runnable { public static native final void native_configure(boolean usePtp); private native final void native_setup( MtpDatabase database, FileDescriptor controlFd, boolean usePtp, String deviceInfoManufacturer, String deviceInfoModel, Loading media/jni/android_mtp_MtpServer.cpp +6 −12 Original line number Diff line number Diff line Loading @@ -55,22 +55,17 @@ static inline MtpServer* getMtpServer(JNIEnv *env, jobject thiz) { return (MtpServer*)env->GetLongField(thiz, field_MtpServer_nativeContext); } static void android_mtp_configure(JNIEnv *, jobject, jboolean usePtp) { MtpServer::configure(usePtp); } static void android_mtp_MtpServer_setup(JNIEnv *env, jobject thiz, jobject javaDatabase, jboolean usePtp, jstring deviceInfoManufacturer, jstring deviceInfoModel, jstring deviceInfoDeviceVersion, jstring deviceInfoSerialNumber) android_mtp_MtpServer_setup(JNIEnv *env, jobject thiz, jobject javaDatabase, jobject jControlFd, jboolean usePtp, jstring deviceInfoManufacturer, jstring deviceInfoModel, jstring deviceInfoDeviceVersion, jstring deviceInfoSerialNumber) { const char *deviceInfoManufacturerStr = env->GetStringUTFChars(deviceInfoManufacturer, NULL); const char *deviceInfoModelStr = env->GetStringUTFChars(deviceInfoModel, NULL); const char *deviceInfoDeviceVersionStr = env->GetStringUTFChars(deviceInfoDeviceVersion, NULL); const char *deviceInfoSerialNumberStr = env->GetStringUTFChars(deviceInfoSerialNumber, NULL); MtpServer* server = new MtpServer(getMtpDatabase(env, javaDatabase), int controlFd = dup(jniGetFDFromFileDescriptor(env, jControlFd)); MtpServer* server = new MtpServer(getMtpDatabase(env, javaDatabase), controlFd, usePtp, MtpString((deviceInfoManufacturerStr != NULL) ? deviceInfoManufacturerStr : ""), MtpString((deviceInfoModelStr != NULL) ? deviceInfoModelStr : ""), Loading Loading @@ -201,8 +196,7 @@ android_mtp_MtpServer_remove_storage(JNIEnv *env, jobject thiz, jint storageId) // ---------------------------------------------------------------------------- static const JNINativeMethod gMethods[] = { {"native_configure", "(Z)V", (void *)android_mtp_configure}, {"native_setup", "(Landroid/mtp/MtpDatabase;ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V", {"native_setup", "(Landroid/mtp/MtpDatabase;Ljava/io/FileDescriptor;ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V", (void *)android_mtp_MtpServer_setup}, {"native_run", "()V", (void *)android_mtp_MtpServer_run}, {"native_cleanup", "()V", (void *)android_mtp_MtpServer_cleanup}, Loading Loading
core/java/android/hardware/usb/IUsbManager.aidl +6 −0 Original line number Diff line number Diff line Loading @@ -105,6 +105,12 @@ interface IUsbManager /* Gets the current screen unlocked functions. */ long getScreenUnlockedFunctions(); /* Get the functionfs control handle for the given function. Usb * descriptors will already be written, and the handle will be * ready to use. */ ParcelFileDescriptor getControlFd(long function); /* Allow USB debugging from the attached host. If alwaysAllow is true, add the * the public key to list of host keys that the user has approved. */ Loading
core/java/android/hardware/usb/UsbManager.java +19 −8 Original line number Diff line number Diff line Loading @@ -191,14 +191,6 @@ public class UsbManager { */ public static final String USB_DATA_UNLOCKED = "unlocked"; /** * Boolean extra indicating whether the intent represents a change in the usb * configuration (as opposed to a state update). * * {@hide} */ public static final String USB_CONFIG_CHANGED = "config_changed"; /** * A placeholder indicating that no USB function is being specified. * Used for compatibility with old init scripts to indicate no functions vs. charging function. Loading Loading @@ -470,6 +462,25 @@ public class UsbManager { } } /** * Gets the functionfs control file descriptor for the given function, with * the usb descriptors and strings already written. The file descriptor is used * by the function implementation to handle events and control requests. * * @param function to get control fd for. Currently {@link #FUNCTION_MTP} and * {@link #FUNCTION_PTP} are supported. * @return A ParcelFileDescriptor holding the valid fd, or null if the fd was not found. * * {@hide} */ public ParcelFileDescriptor getControlFd(long function) { try { return mService.getControlFd(function); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } /** * Returns true if the caller has permission to access the device. * Permission might have been granted temporarily via Loading
core/java/com/android/internal/os/ZygoteInit.java +1 −1 Original line number Diff line number Diff line Loading @@ -652,7 +652,7 @@ public class ZygoteInit { String args[] = { "--setuid=1000", "--setgid=1000", "--setgroups=1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1018,1021,1023,1032,1065,3001,3002,3003,3006,3007,3009,3010", "--setgroups=1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1018,1021,1023,1024,1032,1065,3001,3002,3003,3006,3007,3009,3010", "--capabilities=" + capabilities + "," + capabilities, "--nice-name=system_server", "--runtime-args", Loading
media/java/android/mtp/MtpServer.java +5 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package android.mtp; import com.android.internal.util.Preconditions; import java.io.FileDescriptor; /** * Java wrapper for MTP/PTP support as USB responder. * {@hide} Loading @@ -34,6 +36,7 @@ public class MtpServer implements Runnable { public MtpServer( MtpDatabase database, FileDescriptor controlFd, boolean usePtp, Runnable onTerminate, String deviceInfoManufacturer, Loading @@ -44,6 +47,7 @@ public class MtpServer implements Runnable { mOnTerminate = Preconditions.checkNotNull(onTerminate); native_setup( database, controlFd, usePtp, deviceInfoManufacturer, deviceInfoModel, Loading Loading @@ -92,6 +96,7 @@ public class MtpServer implements Runnable { public static native final void native_configure(boolean usePtp); private native final void native_setup( MtpDatabase database, FileDescriptor controlFd, boolean usePtp, String deviceInfoManufacturer, String deviceInfoModel, Loading
media/jni/android_mtp_MtpServer.cpp +6 −12 Original line number Diff line number Diff line Loading @@ -55,22 +55,17 @@ static inline MtpServer* getMtpServer(JNIEnv *env, jobject thiz) { return (MtpServer*)env->GetLongField(thiz, field_MtpServer_nativeContext); } static void android_mtp_configure(JNIEnv *, jobject, jboolean usePtp) { MtpServer::configure(usePtp); } static void android_mtp_MtpServer_setup(JNIEnv *env, jobject thiz, jobject javaDatabase, jboolean usePtp, jstring deviceInfoManufacturer, jstring deviceInfoModel, jstring deviceInfoDeviceVersion, jstring deviceInfoSerialNumber) android_mtp_MtpServer_setup(JNIEnv *env, jobject thiz, jobject javaDatabase, jobject jControlFd, jboolean usePtp, jstring deviceInfoManufacturer, jstring deviceInfoModel, jstring deviceInfoDeviceVersion, jstring deviceInfoSerialNumber) { const char *deviceInfoManufacturerStr = env->GetStringUTFChars(deviceInfoManufacturer, NULL); const char *deviceInfoModelStr = env->GetStringUTFChars(deviceInfoModel, NULL); const char *deviceInfoDeviceVersionStr = env->GetStringUTFChars(deviceInfoDeviceVersion, NULL); const char *deviceInfoSerialNumberStr = env->GetStringUTFChars(deviceInfoSerialNumber, NULL); MtpServer* server = new MtpServer(getMtpDatabase(env, javaDatabase), int controlFd = dup(jniGetFDFromFileDescriptor(env, jControlFd)); MtpServer* server = new MtpServer(getMtpDatabase(env, javaDatabase), controlFd, usePtp, MtpString((deviceInfoManufacturerStr != NULL) ? deviceInfoManufacturerStr : ""), MtpString((deviceInfoModelStr != NULL) ? deviceInfoModelStr : ""), Loading Loading @@ -201,8 +196,7 @@ android_mtp_MtpServer_remove_storage(JNIEnv *env, jobject thiz, jint storageId) // ---------------------------------------------------------------------------- static const JNINativeMethod gMethods[] = { {"native_configure", "(Z)V", (void *)android_mtp_configure}, {"native_setup", "(Landroid/mtp/MtpDatabase;ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V", {"native_setup", "(Landroid/mtp/MtpDatabase;Ljava/io/FileDescriptor;ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V", (void *)android_mtp_MtpServer_setup}, {"native_run", "()V", (void *)android_mtp_MtpServer_run}, {"native_cleanup", "()V", (void *)android_mtp_MtpServer_cleanup}, Loading