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 17e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood#define LOG_TAG "UsbDeviceJNI" 18e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 19e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood#include "utils/Log.h" 20e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 21e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood#include "jni.h" 22e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood#include "JNIHelp.h" 23e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood#include "android_runtime/AndroidRuntime.h" 24e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 25e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood#include <usbhost/usbhost.h> 26e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 27e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwoodusing namespace android; 28e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 29e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwoodstatic jint 30e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwoodandroid_hardware_UsbDevice_get_device_id(JNIEnv *env, jobject clazz, jstring name) 31e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood{ 32e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood const char *nameStr = env->GetStringUTFChars(name, NULL); 33e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood int id = usb_device_get_unique_id_from_name(nameStr); 34e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood env->ReleaseStringUTFChars(name, nameStr); 35e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood return id; 36e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood} 37e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 38e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwoodstatic jstring 39e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwoodandroid_hardware_UsbDevice_get_device_name(JNIEnv *env, jobject clazz, jint id) 40e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood{ 41e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood char* name = usb_device_get_name_from_unique_id(id); 42e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood jstring result = env->NewStringUTF(name); 43e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood free(name); 44e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood return result; 45e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood} 46e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 47e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwoodstatic JNINativeMethod method_table[] = { 48e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood // static methods 49e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood { "native_get_device_id", "(Ljava/lang/String;)I", 50e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood (void*)android_hardware_UsbDevice_get_device_id }, 51e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood { "native_get_device_name", "(I)Ljava/lang/String;", 52e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood (void*)android_hardware_UsbDevice_get_device_name }, 53e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood}; 54e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood 55e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwoodint register_android_hardware_UsbDevice(JNIEnv *env) 56e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood{ 57c4308f01c965571dc2354107c3574df113e397eeMike Lockwood return AndroidRuntime::registerNativeMethods(env, "android/hardware/usb/UsbDevice", 58e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood method_table, NELEM(method_table)); 59e7d511e148bc901ef41ac44d7b3593e5d803f72fMike Lockwood} 60