diff options
-rw-r--r-- | core/proto/android/service/usb.proto | 5 | ||||
-rw-r--r-- | services/art-profile | 8 | ||||
-rw-r--r-- | services/core/jni/Android.bp | 2 | ||||
-rw-r--r-- | services/core/jni/com_android_server_UsbAlsaMidiDevice.cpp (renamed from services/core/jni/com_android_server_UsbMidiDevice.cpp) | 52 | ||||
-rw-r--r-- | services/core/jni/onload.cpp | 4 | ||||
-rw-r--r-- | services/proguard.flags | 2 | ||||
-rw-r--r-- | services/usb/java/com/android/server/usb/UsbAlsaManager.java | 28 | ||||
-rw-r--r-- | services/usb/java/com/android/server/usb/UsbAlsaMidiDevice.java (renamed from services/usb/java/com/android/server/usb/UsbMidiDevice.java) | 36 |
8 files changed, 69 insertions, 68 deletions
diff --git a/core/proto/android/service/usb.proto b/core/proto/android/service/usb.proto index 607fd108c999..c98e346d50ec 100644 --- a/core/proto/android/service/usb.proto +++ b/core/proto/android/service/usb.proto @@ -284,7 +284,8 @@ message UsbAlsaManagerProto { optional int32 cards_parser = 1; repeated UsbAlsaDeviceProto alsa_devices = 2; - repeated UsbMidiDeviceProto midi_devices = 3; + reserved 3; // previously midi_devices, now unused + repeated UsbAlsaMidiDeviceProto alsa_midi_devices = 4; } message UsbAlsaDeviceProto { @@ -299,7 +300,7 @@ message UsbAlsaDeviceProto { optional string address = 6; } -message UsbMidiDeviceProto { +message UsbAlsaMidiDeviceProto { option (android.msg_privacy).dest = DEST_AUTOMATIC; optional int32 card = 1; diff --git a/services/art-profile b/services/art-profile index 2bb85a46cfe8..132b9ab8080f 100644 --- a/services/art-profile +++ b/services/art-profile @@ -20484,12 +20484,12 @@ Lcom/android/server/usage/UsageStatsService; Lcom/android/server/usage/UsageStatsShellCommand; Lcom/android/server/usage/UserUsageStatsService$StatsUpdatedListener; Lcom/android/server/usb/UsbAlsaJackDetector; +Lcom/android/server/usb/UsbAlsaMidiDevice$2; +Lcom/android/server/usb/UsbAlsaMidiDevice$3; +Lcom/android/server/usb/UsbAlsaMidiDevice$InputReceiverProxy; +Lcom/android/server/usb/UsbAlsaMidiDevice; Lcom/android/server/usb/UsbDeviceManager; Lcom/android/server/usb/UsbHostManager; -Lcom/android/server/usb/UsbMidiDevice$2; -Lcom/android/server/usb/UsbMidiDevice$3; -Lcom/android/server/usb/UsbMidiDevice$InputReceiverProxy; -Lcom/android/server/usb/UsbMidiDevice; Lcom/android/server/usb/descriptors/UsbDescriptor; Lcom/android/server/usb/descriptors/UsbInterfaceDescriptor; Lcom/android/server/utils/AlarmQueue$1; diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp index e66168815cd0..e2bdcdd518d5 100644 --- a/services/core/jni/Android.bp +++ b/services/core/jni/Android.bp @@ -62,9 +62,9 @@ cc_library_static { "com_android_server_tv_TvInputHal.cpp", "com_android_server_vr_VrManagerService.cpp", "com_android_server_UsbAlsaJackDetector.cpp", + "com_android_server_UsbAlsaMidiDevice.cpp", "com_android_server_UsbDeviceManager.cpp", "com_android_server_UsbDescriptorParser.cpp", - "com_android_server_UsbMidiDevice.cpp", "com_android_server_UsbHostManager.cpp", "com_android_server_vibrator_VibratorController.cpp", "com_android_server_vibrator_VibratorManagerService.cpp", diff --git a/services/core/jni/com_android_server_UsbMidiDevice.cpp b/services/core/jni/com_android_server_UsbAlsaMidiDevice.cpp index c8e769878b8c..93938b1ff1bc 100644 --- a/services/core/jni/com_android_server_UsbMidiDevice.cpp +++ b/services/core/jni/com_android_server_UsbAlsaMidiDevice.cpp @@ -14,27 +14,25 @@ * limitations under the License. */ -#define LOG_TAG "UsbMidiDeviceJNI" +#define LOG_TAG "UsbAlsaMidiDeviceJNI" #define LOG_NDEBUG 0 -#include "utils/Log.h" - -#include "jni.h" -#include <nativehelper/JNIPlatformHelp.h> -#include <nativehelper/ScopedLocalRef.h> -#include "android_runtime/AndroidRuntime.h" -#include "android_runtime/Log.h" - #include <asm/byteorder.h> #include <errno.h> #include <fcntl.h> +#include <nativehelper/JNIPlatformHelp.h> +#include <nativehelper/ScopedLocalRef.h> #include <sound/asound.h> #include <stdio.h> #include <sys/ioctl.h> #include <sys/stat.h> #include <sys/types.h> -namespace android -{ +#include "android_runtime/AndroidRuntime.h" +#include "android_runtime/Log.h" +#include "jni.h" +#include "utils/Log.h" + +namespace android { static jclass sFileDescriptorClass; static jfieldID sPipeFDField; @@ -46,10 +44,10 @@ static jfieldID sPipeFDField; // 1. Input O_RDONLY file descriptor // 2. Special input file descriptor to block the input thread // 3. Output O_WRONLY file descriptor -static jobjectArray android_server_UsbMidiDevice_open(JNIEnv *env, jobject thiz, jint card, - jint device, jint numInputs, - jint numOutputs) { - char path[100]; +static jobjectArray android_server_UsbAlsaMidiDevice_open(JNIEnv *env, jobject thiz, jint card, + jint device, jint numInputs, + jint numOutputs) { + char path[100]; int fd; snprintf(path, sizeof(path), "/dev/snd/midiC%dD%d", card, device); @@ -126,9 +124,7 @@ release_fds: return NULL; } -static void -android_server_UsbMidiDevice_close(JNIEnv *env, jobject thiz, jobjectArray fds) -{ +static void android_server_UsbAlsaMidiDevice_close(JNIEnv *env, jobject thiz, jobjectArray fds) { // write to mPipeFD to unblock input thread jint pipeFD = env->GetIntField(thiz, sPipeFDField); write(pipeFD, &pipeFD, sizeof(pipeFD)); @@ -144,12 +140,12 @@ android_server_UsbMidiDevice_close(JNIEnv *env, jobject thiz, jobjectArray fds) static JNINativeMethod method_table[] = { {"nativeOpen", "(IIII)[Ljava/io/FileDescriptor;", - (void *)android_server_UsbMidiDevice_open}, - {"nativeClose", "([Ljava/io/FileDescriptor;)V", (void *)android_server_UsbMidiDevice_close}, + (void *)android_server_UsbAlsaMidiDevice_open}, + {"nativeClose", "([Ljava/io/FileDescriptor;)V", + (void *)android_server_UsbAlsaMidiDevice_close}, }; -int register_android_server_UsbMidiDevice(JNIEnv *env) -{ +int register_android_server_UsbAlsaMidiDevice(JNIEnv *env) { jclass clazz = env->FindClass("java/io/FileDescriptor"); if (clazz == NULL) { ALOGE("Can't find java/io/FileDescriptor"); @@ -157,19 +153,19 @@ int register_android_server_UsbMidiDevice(JNIEnv *env) } sFileDescriptorClass = (jclass)env->NewGlobalRef(clazz); - clazz = env->FindClass("com/android/server/usb/UsbMidiDevice"); + clazz = env->FindClass("com/android/server/usb/UsbAlsaMidiDevice"); if (clazz == NULL) { - ALOGE("Can't find com/android/server/usb/UsbMidiDevice"); + ALOGE("Can't find com/android/server/usb/UsbAlsaMidiDevice"); return -1; } sPipeFDField = env->GetFieldID(clazz, "mPipeFD", "I"); if (sPipeFDField == NULL) { - ALOGE("Can't find UsbMidiDevice.mPipeFD"); + ALOGE("Can't find UsbAlsaMidiDevice.mPipeFD"); return -1; } - return jniRegisterNativeMethods(env, "com/android/server/usb/UsbMidiDevice", - method_table, NELEM(method_table)); + return jniRegisterNativeMethods(env, "com/android/server/usb/UsbAlsaMidiDevice", method_table, + NELEM(method_table)); } -}; +}; // namespace android diff --git a/services/core/jni/onload.cpp b/services/core/jni/onload.cpp index 00f851f9f4ff..290ad8de9547 100644 --- a/services/core/jni/onload.cpp +++ b/services/core/jni/onload.cpp @@ -35,8 +35,8 @@ int register_android_server_storage_AppFuse(JNIEnv* env); int register_android_server_SerialService(JNIEnv* env); int register_android_server_SystemServer(JNIEnv* env); int register_android_server_UsbAlsaJackDetector(JNIEnv* env); +int register_android_server_UsbAlsaMidiDevice(JNIEnv* env); int register_android_server_UsbDeviceManager(JNIEnv* env); -int register_android_server_UsbMidiDevice(JNIEnv* env); int register_android_server_UsbHostManager(JNIEnv* env); int register_android_server_vr_VrManagerService(JNIEnv* env); int register_android_server_vibrator_VibratorController(JavaVM* vm, JNIEnv* env); @@ -90,8 +90,8 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */) register_android_server_InputManager(env); register_android_server_LightsService(env); register_android_server_UsbDeviceManager(env); - register_android_server_UsbMidiDevice(env); register_android_server_UsbAlsaJackDetector(env); + register_android_server_UsbAlsaMidiDevice(env); register_android_server_UsbHostManager(env); register_android_server_vr_VrManagerService(env); register_android_server_vibrator_VibratorController(vm, env); diff --git a/services/proguard.flags b/services/proguard.flags index ba4560f1e8dc..c13304430d98 100644 --- a/services/proguard.flags +++ b/services/proguard.flags @@ -103,7 +103,7 @@ -keep,allowoptimization,allowaccessmodification class com.android.server.storage.AppFuseBridge { *; } -keep,allowoptimization,allowaccessmodification class com.android.server.tv.TvInputHal { *; } -keep,allowoptimization,allowaccessmodification class com.android.server.usb.UsbAlsaJackDetector { *; } --keep,allowoptimization,allowaccessmodification class com.android.server.usb.UsbMidiDevice { *; } +-keep,allowoptimization,allowaccessmodification class com.android.server.usb.UsbAlsaMidiDevice { *; } -keep,allowoptimization,allowaccessmodification class com.android.server.vibrator.VibratorController$OnVibrationCompleteListener { *; } -keep,allowoptimization,allowaccessmodification class com.android.server.vibrator.VibratorManagerService$OnSyncedVibrationCompleteListener { *; } -keepclasseswithmembers,allowoptimization,allowaccessmodification class com.android.server.** { diff --git a/services/usb/java/com/android/server/usb/UsbAlsaManager.java b/services/usb/java/com/android/server/usb/UsbAlsaManager.java index 17c354a8a80e..a9449f502c45 100644 --- a/services/usb/java/com/android/server/usb/UsbAlsaManager.java +++ b/services/usb/java/com/android/server/usb/UsbAlsaManager.java @@ -110,11 +110,11 @@ public final class UsbAlsaManager { /** * List of connected MIDI devices */ - private final HashMap<String, UsbMidiDevice> - mMidiDevices = new HashMap<String, UsbMidiDevice>(); + private final HashMap<String, UsbAlsaMidiDevice> + mMidiDevices = new HashMap<String, UsbAlsaMidiDevice>(); - // UsbMidiDevice for USB peripheral mode (gadget) device - private UsbMidiDevice mPeripheralMidiDevice = null; + // UsbAlsaMidiDevice for USB peripheral mode (gadget) device + private UsbAlsaMidiDevice mPeripheralMidiDevice = null; /* package */ UsbAlsaManager(Context context) { mContext = context; @@ -304,11 +304,11 @@ public final class UsbAlsaManager { Slog.d(TAG, "numLegacyMidiOutputs:" + numLegacyMidiOutputs); } - UsbMidiDevice usbMidiDevice = UsbMidiDevice.create(mContext, properties, + UsbAlsaMidiDevice midiDevice = UsbAlsaMidiDevice.create(mContext, properties, cardRec.getCardNum(), 0 /*device*/, numLegacyMidiInputs, numLegacyMidiOutputs); - if (usbMidiDevice != null) { - mMidiDevices.put(deviceAddress, usbMidiDevice); + if (midiDevice != null) { + mMidiDevices.put(deviceAddress, midiDevice); } } } @@ -327,10 +327,10 @@ public final class UsbAlsaManager { } // MIDI - UsbMidiDevice usbMidiDevice = mMidiDevices.remove(deviceAddress); - if (usbMidiDevice != null) { + UsbAlsaMidiDevice midiDevice = mMidiDevices.remove(deviceAddress); + if (midiDevice != null) { Slog.i(TAG, "USB MIDI Device Removed: " + deviceAddress); - IoUtils.closeQuietly(usbMidiDevice); + IoUtils.closeQuietly(midiDevice); } logDevices("usbDeviceRemoved()"); @@ -353,7 +353,7 @@ public final class UsbAlsaManager { com.android.internal.R.string.usb_midi_peripheral_product_name)); properties.putInt(MidiDeviceInfo.PROPERTY_ALSA_CARD, card); properties.putInt(MidiDeviceInfo.PROPERTY_ALSA_DEVICE, device); - mPeripheralMidiDevice = UsbMidiDevice.create(mContext, properties, card, device, + mPeripheralMidiDevice = UsbAlsaMidiDevice.create(mContext, properties, card, device, 1 /* numInputs */, 1 /* numOutputs */); } else if (!enabled && mPeripheralMidiDevice != null) { IoUtils.closeQuietly(mPeripheralMidiDevice); @@ -389,9 +389,9 @@ public final class UsbAlsaManager { } for (String deviceAddr : mMidiDevices.keySet()) { - // A UsbMidiDevice does not have a handle to the UsbDevice anymore - mMidiDevices.get(deviceAddr).dump(deviceAddr, dump, "midi_devices", - UsbAlsaManagerProto.MIDI_DEVICES); + // A UsbAlsaMidiDevice does not have a handle to the UsbDevice anymore + mMidiDevices.get(deviceAddr).dump(deviceAddr, dump, "alsa_midi_devices", + UsbAlsaManagerProto.ALSA_MIDI_DEVICES); } dump.end(token); diff --git a/services/usb/java/com/android/server/usb/UsbMidiDevice.java b/services/usb/java/com/android/server/usb/UsbAlsaMidiDevice.java index d9ad703b8223..e92c0346ce74 100644 --- a/services/usb/java/com/android/server/usb/UsbMidiDevice.java +++ b/services/usb/java/com/android/server/usb/UsbAlsaMidiDevice.java @@ -10,7 +10,7 @@ * 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 an + * See the License for the specific language governing permissions and * limitations under the License. */ @@ -24,7 +24,7 @@ import android.media.midi.MidiDeviceStatus; import android.media.midi.MidiManager; import android.media.midi.MidiReceiver; import android.os.Bundle; -import android.service.usb.UsbMidiDeviceProto; +import android.service.usb.UsbAlsaMidiDeviceProto; import android.system.ErrnoException; import android.system.Os; import android.system.OsConstants; @@ -43,8 +43,12 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; -public final class UsbMidiDevice implements Closeable { - private static final String TAG = "UsbMidiDevice"; +/** + * Opens device connections to MIDI 1.0 endpoints. + * These endpoints will use ALSA. + */ +public final class UsbAlsaMidiDevice implements Closeable { + private static final String TAG = "UsbAlsaMidiDevice"; private final int mAlsaCard; private final int mAlsaDevice; @@ -142,13 +146,13 @@ public final class UsbMidiDevice implements Closeable { } /** - * Creates an UsbMidiDevice based on the input parameters. Read/Write streams + * Creates an UsbAlsaMidiDevice based on the input parameters. Read/Write streams * will be created individually as some devices don't have the same number of * inputs and outputs. */ - public static UsbMidiDevice create(Context context, Bundle properties, int card, + public static UsbAlsaMidiDevice create(Context context, Bundle properties, int card, int device, int numInputs, int numOutputs) { - UsbMidiDevice midiDevice = new UsbMidiDevice(card, device, numInputs, numOutputs); + UsbAlsaMidiDevice midiDevice = new UsbAlsaMidiDevice(card, device, numInputs, numOutputs); if (!midiDevice.register(context, properties)) { IoUtils.closeQuietly(midiDevice); Log.e(TAG, "createDeviceServer failed"); @@ -157,7 +161,7 @@ public final class UsbMidiDevice implements Closeable { return midiDevice; } - private UsbMidiDevice(int card, int device, int numInputs, int numOutputs) { + private UsbAlsaMidiDevice(int card, int device, int numInputs, int numOutputs) { mAlsaCard = card; mAlsaDevice = device; mNumInputs = numInputs; @@ -217,7 +221,7 @@ public final class UsbMidiDevice implements Closeable { if (inputStreamCount > 0) { // Create input thread which will read from all output ports of the physical device - new Thread("UsbMidiDevice input thread") { + new Thread("UsbAlsaMidiDevice input thread") { @Override public void run() { byte[] buffer = new byte[BUFFER_SIZE]; @@ -272,13 +276,13 @@ public final class UsbMidiDevice implements Closeable { final FileOutputStream outputStreamF = mOutputStreams[port]; final int portF = port; - new Thread("UsbMidiDevice output thread " + port) { + new Thread("UsbAlsaMidiDevice output thread " + port) { @Override public void run() { while (true) { MidiEvent event; try { - event = (MidiEvent)eventSchedulerF.waitNextEvent(); + event = (MidiEvent) eventSchedulerF.waitNextEvent(); } catch (InterruptedException e) { // try again continue; @@ -303,9 +307,9 @@ public final class UsbMidiDevice implements Closeable { } private boolean register(Context context, Bundle properties) { - MidiManager midiManager = (MidiManager)context.getSystemService(Context.MIDI_SERVICE); + MidiManager midiManager = context.getSystemService(MidiManager.class); if (midiManager == null) { - Log.e(TAG, "No MidiManager in UsbMidiDevice.register()"); + Log.e(TAG, "No MidiManager in UsbAlsaMidiDevice.register()"); return false; } @@ -365,9 +369,9 @@ public final class UsbMidiDevice implements Closeable { long id) { long token = dump.start(idName, id); - dump.write("device_address", UsbMidiDeviceProto.DEVICE_ADDRESS, deviceAddr); - dump.write("card", UsbMidiDeviceProto.CARD, mAlsaCard); - dump.write("device", UsbMidiDeviceProto.DEVICE, mAlsaDevice); + dump.write("device_address", UsbAlsaMidiDeviceProto.DEVICE_ADDRESS, deviceAddr); + dump.write("card", UsbAlsaMidiDeviceProto.CARD, mAlsaCard); + dump.write("device", UsbAlsaMidiDeviceProto.DEVICE, mAlsaDevice); dump.end(token); } |