Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d07c9d5d authored by Mike Lockwood's avatar Mike Lockwood
Browse files

UsbManager: Add methods to convert between USB device names and IDs



Change-Id: I199a47805b629cc7b1714191d6af2fd70c2bda6d
Signed-off-by: default avatarMike Lockwood <lockwood@android.com>
parent d8b5b083
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -105,6 +105,14 @@ public class UsbManager {
     */
    public static final String USB_FUNCTION_DISABLED = "disabled";

    public static final int getDeviceId(String name) {
        return native_get_device_id(name);
    }

    public static final String getDeviceName(int id) {
        return native_get_device_name(id);
    }

    private static File getFunctionEnableFile(String function) {
        return new File("/sys/class/usb_composite/" + function + "/enable");
    }
@@ -130,4 +138,7 @@ public class UsbManager {
            return false;
        }
    }

    private static native int native_get_device_id(String name);
    private static native String native_get_device_name(int id);
}
+3 −1
Original line number Diff line number Diff line
@@ -123,6 +123,7 @@ LOCAL_SRC_FILES:= \
	android_media_ToneGenerator.cpp \
	android_hardware_Camera.cpp \
	android_hardware_SensorManager.cpp \
	android_hardware_UsbManager.cpp \
	android_debug_JNITest.cpp \
	android_util_FileObserver.cpp \
	android/opengl/poly_clip.cpp.arm \
@@ -200,7 +201,8 @@ LOCAL_SHARED_LIBRARIES := \
	libmedia \
	libwpa_client \
	libjpeg \
	libnfc_ndef
	libnfc_ndef \
	libusbhost

ifeq ($(USE_OPENGL_RENDERER),true)
	LOCAL_SHARED_LIBRARIES += libhwui
+2 −1
Original line number Diff line number Diff line
@@ -77,8 +77,8 @@ extern int register_android_opengl_jni_GLES11Ext(JNIEnv* env);
extern int register_android_opengl_jni_GLES20(JNIEnv* env);

extern int register_android_hardware_Camera(JNIEnv *env);

extern int register_android_hardware_SensorManager(JNIEnv *env);
extern int register_android_hardware_UsbManager(JNIEnv *env);

extern int register_android_media_AudioRecord(JNIEnv *env);
extern int register_android_media_AudioSystem(JNIEnv *env);
@@ -1266,6 +1266,7 @@ static const RegJNIRec gRegJNI[] = {
    REG_JNI(register_com_android_internal_os_ZygoteInit),
    REG_JNI(register_android_hardware_Camera),
    REG_JNI(register_android_hardware_SensorManager),
    REG_JNI(register_android_hardware_UsbManager),
    REG_JNI(register_android_media_AudioRecord),
    REG_JNI(register_android_media_AudioSystem),
    REG_JNI(register_android_media_AudioTrack),
+61 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2010 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.
 */

#include "jni.h"
#include "JNIHelp.h"
#include "android_runtime/AndroidRuntime.h"

#include <usbhost/usbhost.h>

#include <stdio.h>

using namespace android;

static jint android_hardware_UsbManager_get_device_id(JNIEnv *env, jobject clazz, jstring name)
{
    const char *nameStr = env->GetStringUTFChars(name, NULL);
    int id = usb_device_get_unique_id_from_name(nameStr);
    env->ReleaseStringUTFChars(name, nameStr);
    return id;
}

static jstring android_hardware_UsbManager_get_device_name(JNIEnv *env, jobject clazz, jint id)
{
    char* name = usb_device_get_name_from_unique_id(id);
    jstring result = env->NewStringUTF(name);
    free(name);
    return result;
}

static JNINativeMethod method_table[] = {
    { "native_get_device_id", "(Ljava/lang/String;)I",
                                (void*)android_hardware_UsbManager_get_device_id },
    { "native_get_device_name", "(I)Ljava/lang/String;",
                                (void*)android_hardware_UsbManager_get_device_name },
};

int register_android_hardware_UsbManager(JNIEnv *env)
{
    jclass clazz = env->FindClass("android/hardware/UsbManager");
    if (clazz == NULL) {
        LOGE("Can't find android/hardware/UsbManager");
        return -1;
    }

    return AndroidRuntime::registerNativeMethods(env, "android/hardware/UsbManager",
            method_table, NELEM(method_table));
}