107 Commits

Author SHA1 Message Date
Chris Wren
b3c8564314 Merge "remove setLatestEventInfo from USB" into mnc-dev 2015-06-15 12:23:26 +00:00
Nick Kralevich
43965fe5ce UsbDeviceManager: Modify default function handling
When adb is enabled, there's no need to also enable MTP mode.
ADB mode enabled is sufficient to get connect messages from
the kernel driver.

This change modifies getDefaultFunctions() to return adb mode
if adb is enabled, but mtp when it's not enabled. Also stop
using "none" mode as the default. "none" should only be used
when toggling the driver.

Bug: 21429947
Change-Id: I767491417c6c69a120fcf4f3d6ec0c73311a1a60
2015-06-12 17:21:25 -07:00
Chris Wren
6d8e413a63 remove setLatestEventInfo from USB
Bug: 18510449
Change-Id: I6b9ccaa0537c8044c5fa900ae4ea68b2676e1365
2015-06-12 17:10:01 -04:00
Nick Kralevich
674019065b Fix USB access control when adb is disabled.
When adb is disabled, the default usb mode would be "none", which
would turn off the driver and prevent UsbDeviceManager from receiving
any new USB connect / disconnect messages. This prevents the user
from ever enabling MTP and sharing data when adb is turned off.

As discussed in bug 21429947, we work around this problem by keeping
the USB driver in MTP mode most of the time, so that we continue to
receive USB connect / disconnect messages.

To avoid leaking confidential user photos, this change introduces an
unlocked state. Setting the mtp enabled function is now decoupled from
exposing data on the USB connection. Only if MTP is enabled and
USB data has been unlocked is confidential user data allowed to be
shared.

Bug: 21429947
Change-Id: Iefb5c7e22dc4962bf5226f2ed3d0155b5c7b413c
2015-06-10 10:29:48 -07:00
Mike Lockwood
6d5a0f9164 UsbMidiDevice: Only keep ALSA devices open when device is in use
This should fix contention problems for apps using USB APIs to implement MIDI support

Bug: 20949468
Bug: 21630625
Change-Id: I32b44330ca0310a4693fd56a4b01ad399f82c1c9
2015-06-08 16:48:19 -07:00
Nick Kralevich
2d63f0a14a Merge "UsbDeviceManager: Don't unnecessarily touch properties" into mnc-dev 2015-06-03 16:59:49 +00:00
Xiaohui Chen
ffcfe3411f usb debugging: show alert to secondary user
Bug: 12785423
Change-Id: If7f60899cfdaca7bdad560bd59a78f5be74c24be
2015-06-03 09:32:19 -07:00
Nick Kralevich
2f7fa3ed77 UsbDeviceManager: Don't unnecessarily touch properties
Before setting the properties persist.sys.usb.config or sys.usb.config,
check the existing values. If the values are the same as what we'd set it
to, don't perform the set.

Any USB property set, even if setting the property to the value it already
has, triggers one of the "on property" triggers in system/core/rootdir/init.usb.rc .
The script then reconfigures the driver unnecessarily, which causes instability
and dropped connections when trying to use ADB.

Avoid this instability by not performing property sets which would have
no effect.

Bug: 21404762
Bug: 18905620
Change-Id: Id3c2543308df994a0114a0661e20ca799c2dc0e8
2015-06-02 17:04:47 -07:00
Paul McLean
afe55a5ce9 Turning off logging in ALSA device connection routines.
bug: 21298614
Change-Id: Ia88393698072af8f7c101382f180192646bf713e
2015-05-19 10:32:13 -07:00
Wojciech Staszkiewicz
9e9e2e73c6 Pass charset to XmlPullParser.setInput instead of null
Passing null to XmlPullParser.setInput forces it to do additional
work, which can be easily avoided if we know the charset beforehand.

bug: b/20849543

Change-Id: Iaff97be9df2d0f99d7af8f19f65934439c9658e2
2015-05-14 10:24:34 +01:00
Nick Kralevich
fcf10f7c12 Modify how USB connections are handled.
* Introduce a new "charger only" mode. In this mode, MTP is disabled,
and no file transfers can occur.
* Make charger only mode the default.
* Modify "persist.sys.usb.config" so it now only holds the adb status.
* Make the USB settings non-persistent. Unplugging the USB connection will
reset the device back to "charger only" mode.
* Fixup wording per UI guidelines.

TODO: Re-implement MDM restrictions for USB / MTP access controls.

Bug: 18905620
Change-Id: I99a50d9132a81e98187f431166fd9fef4d437e4f
2015-05-13 14:28:13 -07:00
Nick Kralevich
d9c7f24569 UsbManager / UsbService / UsbDeviceManager: delete unused code
These functions are never called.

Change-Id: Ic436e1036bed717d2c64701fddd9a810abb9443e
2015-05-10 21:57:56 -07:00
Mike Lockwood
02868b1625 MidiDeviceInfo: Add version string property
For USB devices, this is populated with the USB device version string.

Change-Id: Ia9286d5f41783e4e960a9c724bf6b85b6599fe12
2015-04-29 13:44:34 -07:00
Mike Lockwood
c9bb40ea95 UsbDevice: Add support for retrieving version string for a USB device
Change-Id: Ia8630f5ffd05f90347b971110a81f4927060cc4b
2015-04-29 13:05:55 -07:00
Mike Lockwood
1f13872a01 UsbAlsaManager: Fix NPE when running in emulator
Bug: 20537358
Change-Id: I46693e45eb6127118cbd54fc3490dc58840b5797
2015-04-24 14:56:32 -07:00
Mike Lockwood
dee5f1bb6e Add user visible name for USB peripheral MIDI device
Change-Id: I075a54dc3890bc5cf3927cecba3750e1d342d290
2015-04-10 08:49:53 -07:00
Mike Lockwood
b6f50d357b Add support for flushing MIDI all scheduled MIDI events on a port
Change-Id: I39d7862540d4d4b9e2df1265f9dd253541adb4c2
2015-04-09 11:49:45 -07:00
Mike Lockwood
2776133be7 Add event scheduling support to USB MIDI Manager code
Change-Id: I9fdaaac35c296acc67ee0cf346b0c7b56bf58393
2015-03-31 08:57:06 -07:00
Mike Lockwood
d1b16fe2fb Move MIDI utilities for internal use to com.android.internal.midi package
Change-Id: I7393ae1d4bca61667fb6ee809a7aa22c5c48de56
2015-03-30 09:06:06 -07:00
Mike Lockwood
5781cd5b21 Make the MIDI Manager optional, enabled by "android.software.midi" feature
Change-Id: I76d442ea28beea4b9e2876bfef501d8f61403702
2015-03-27 13:23:41 -07:00
Nick Kralevich
005e9b8195 Merge "UsbDeviceManager: delete obsolete code" 2015-03-26 00:33:27 +00:00
Nick Kralevich
ad8fc70c6a UsbDeviceManager: delete obsolete code
We stopped using persist.service.adb.enable almost 4 years ago
(commit 02e4569b5f126ca916a7473117ddd17d4f2ccbbb). Delete backwards
compatibility code.

Change-Id: Ic656e834e79361b27ca2afcd3705d0523c23717d
2015-03-25 16:08:21 -07:00
Mike Lockwood
b7ce094c9e MIDI Manager: remove USB peripheral MIDI device when USB is disconnected
Otherwise, the MIDI device would appear available always, rather than
only when USB is connected.

Also fixed file descriptor leak in UsbMidiDevice

Change-Id: I0d38e81c488de4748eef36ca359635fa59e0e636
2015-03-25 11:54:40 -07:00
Alan Viverette
4a357cd2e5 Replace usages of deprecated Resources.getColor() and getColorStateList()
Change-Id: I8f64fe6c4c44a92ff6d07250223ba590a1d691b0
2015-03-18 18:37:18 -07:00
Mike Lockwood
3ae6acda81 Merge "Add MidiManager to public API" 2015-03-14 00:49:00 +00:00
Mike Lockwood
81b9f7d325 Add MidiManager to public API
Also made some small API changes based on feedback from the lint tool.

Change-Id: Ibcf1e9107d86d3a364f811ce47a13aa0da653366
2015-03-13 11:00:57 -07:00
Mike Lockwood
4011e20921 Merge "MidiDeviceInfo meta-data improvements:" 2015-03-13 17:27:37 +00:00
Mike Lockwood
f2cd802402 MidiDeviceInfo meta-data improvements:
Add property for user visible device name
Add names for input and output ports
Rename "model" to "product" to match USB specification.

Change-Id: I8dc50da935f26825ffc73de456d34e7933aa987c
2015-03-12 12:05:47 -07:00
John Spurlock
9087433753 AudioService: Write base stream volume changes to the event log.
- Add a new volume_changed event, reported at the stream level.
 - Only include changes to base streams (no aliases).
 - Include the caller for each change.  A caller is either:
   -  a pkg name (for external calls or known media sessions)
   -  a system server class's log tag (for internal calls,
      disambiguates "android")

Bug: 19599935
Change-Id: Ia61b68ff1e7e2907a24972790ec052bfe099e665
2015-03-12 09:54:10 -04:00
Mike Lockwood
57baee2e12 Merge "MidiManager: Add MIDI device status notifications" 2015-03-11 19:43:49 +00:00
Mike Lockwood
5ff9e2a171 MidiManager: Add MIDI device status notifications
MidiManager clients can be notified of device status changes via a new MidiDeviceStatus object.
MidiDeviceStatus contains the busy status of the device's input ports and number of
connections to the output ports.
MidiDeviceService now has an optional callback for receiving notifications when its ports change as well.

Change-Id: I1600df4464d82724bc026c27b9633ae9c412d3f0
2015-03-11 10:19:45 -07:00
Mike Lockwood
22e78c65be Merge "Add MidiReceiver.send() and MidiReceiver.getMaxMessageSize()" 2015-03-11 10:55:43 +00:00
Mike Lockwood
0c7342f015 Add MidiReceiver.send() and MidiReceiver.getMaxMessageSize()
Change-Id: I10d4f5e2400fcaf41f455e56ca25bbc0c781a042
2015-03-11 03:51:38 -07:00
Paul McLean
394a8e1fa7 Handle simultaneous connect of devices with the same "type" (as in USB)
Change-Id: I163bf8e33ccf5aacc7ba21775916727430327f18
Bug: 19563570
2015-03-10 14:55:30 -07:00
Mike Lockwood
3b7664589b Make MidiSender and MidiReceiver abstract classes, rename MidiReceiver.post() to receive()
Change-Id: I1cef3bd48ca0acf2968c9de223f78445f3434404
2015-03-04 20:38:37 -08:00
Mike Lockwood
20821ecbe8 Eliminate MidiPort base class for MidiInputPort and MidiOutputPort
Change-Id: I628c0468ac980eee909add53a4d6e55e9b358603
2015-03-04 16:15:45 -08:00
Mike Lockwood
c623ec973b Merge "MidiManager: Virtual MIDI devices are now implemented as Services" 2015-03-05 00:01:33 +00:00
Mike Lockwood
11fd96d6ff MidiManager: Virtual MIDI devices are now implemented as Services
To implement a virtual MIDI device, include a subclass of MidiDeviceService in
your application.  This service is identified by an intent filter and meta-data
in the application's manifest to allow the MIDI manager to register the virtual device
without actually running the application. Instead, the application's MidiDeviceService
subclass is started on demand when MIDI manager clients want to open the device.

Here is an example of how the MidiDeviceService might be described in the application manifest:

    <service android:name="VirtualDeviceService">
        <intent-filter>
            <action android:name="android.media.midi.MidiDeviceService" />
        </intent-filter>
        <meta-data android:name="android.media.midi.MidiDeviceService"
            android:resource="@xml/device_info" />
    </service>

and the device_info.xml meta-data:

<devices>
    <device manufacturer="Sample Manufacturer" model="Sample Model" private="false">
        <input-port name="my input port" />
        <output-port name="my output port" />
    </device>
</devices>

(note that the <input-port> and <output-port> names are not currently used, but support for these
will be added in a subsequent change)

Client's of the virtual device will bind directly to the hosting application's MidiDeviceService subclass.
To support this, MidiManager.openDevice() now returns the MidiDevice asynchronously via a callback.

This change also adds a utility class called MidiDispatcher, which is a MidiReceiver
that dispatches all data it receives to a list of other MidiReceivers.
We now use this internally in MidiInputPort and MidiDeviceServer, but developers
may use it for other purposes as well.

Change-Id: Ic3009f06d56f3d5edbd87de3f0c330b51a1c217d
2015-03-04 13:45:38 -08:00
Amith Yamasani
f4a8df4c7e Fix a regression in UsbDebuggingManager
Catch NPE as well if socket object is null.

Bug: 19602060
Change-Id: I7cf9cb16abc3fde626170c1aefeba5fc91c5734f
2015-03-04 10:00:11 -08:00
John Spurlock
7b91c55b3f Merge "Remove unused imports in frameworks/base." 2015-03-02 20:43:50 +00:00
Amith Yamasani
d65ed88144 Merge "Avoid NPE when quickly toggling USB debugging state" 2015-03-02 18:07:58 +00:00
Amith Yamasani
f6197e8fa2 Avoid NPE when quickly toggling USB debugging state
If you try to disable USB debugging before the socket
to listen is opened in the thread, it will end up
with an NPE.

Do some locking around socket creation and closing
to avoid this.

Bug: 18708503
Change-Id: Iac43e4806fff1e411772b1ba1a070d8a7c776fcb
2015-03-02 09:14:23 -08:00
John Spurlock
08c7116ab9 Remove unused imports in frameworks/base.
Change-Id: I031443de83f93eb57a98863001826671b18f3b17
2015-02-28 14:47:49 -05:00
Mike Lockwood
464c655871 Move ALSA utilities to com.android.internal.alsa package
Change-Id: Icbd45ec97a942e44e60f8d4ba0bb58c97f85b55f
2015-02-26 13:50:08 -08:00
Mike Lockwood
b673770f71 Add MIDI Manager API tweaks:
- Change the package name from android.midi to android.media.midi

- Add option for specifying a Handler for DeviceCallback notifications

Change-Id: Ia9e9817a651c06299f4e02ee1da3c9666ff64cb9
2015-02-23 14:32:23 -08:00
Mike Lockwood
c3c2ff70a2 Add support for USB notification when connected as a MIDI peripheral
Change-Id: Ib3efcda6af976c878e63b0d35a8e47a3ea9435a3
2015-02-20 15:10:20 -08:00
Paul McLean
0e4242f9cb Audio Device Enumeration API.
Change-Id: Ic78fda8b2a6f6ac0f37a1f665b29f3359cfc5ecc
2015-02-19 15:03:53 -08:00
Mike Lockwood
5b14d9893a Merge "MidiManager API tweaks:" 2015-02-13 00:01:48 +00:00
Mike Lockwood
90b9a6a4ab MidiManager API tweaks:
Rename MidiReceiver.onPost() to post()

Change MidiManager.DeviceCallback from an interface to a class

Change-Id: I939ba7a7d82e721b90a3d80252a88e7a650c9396
2015-02-12 10:58:52 -08:00
John Spurlock
6156017c22 Move AudioService to services.
...and a few dependencies. Move remaining shared items to AudioSystem.

Change-Id: Ib9623ff867678d34977337856bb0156e8cdaeeb5
2015-02-09 17:13:38 -05:00