squashed Bluetooth commits from codeaurora.org

BT: Fix memory leak when BT on & off done many times

Solves a memory leak in BatteryStatsService when Bluetooth
is turn on/off. Solution adds missing close of proxy then
Bluetooth is turned off.

Change-Id: I65f9db298459c7c15f6a10c752992f1d38469445
CRs-Fixed: 476145

Bluetooth: Disable bluetooth only if BT Sevice is connected

Bluetooth service is imidiately disconnected from the adapter
after SSR OR if any bluetooth services is crashed OR framework
is crashed. As Bluetooth  service is not connected OR Bluetooth
is not enabled, So BT disable should be ignored & bluetooth
persist setting should not be changed.

CRs-Fixed: 499116

Change-Id: I19de939346d014cdf918e11711f2d6066e55d054

MAP: Support MAP Server role on Bluedroid with javax.OBEX lib.

Handle No END OF BODY for MAP 1.0 Server Get request. Only the
last packet need send the 0x49(End of Body). For intermediate
packets, we need to send 0x48 (Body).

Move definitions for MAP or FTP Service Specific UUID and
Request type for CONNECTION_ACCESS_REQUEST intent to
BluetoothExt APK.

Change-Id: I04cfeb8d53b8f8c19160a2de1eb448a7ec1f2c41
CRs-fixed: 504042

Conflicts:

	obex/javax/obex/ClientOperation.java
	obex/javax/obex/ServerOperation.java
(cherry picked from commit 375d8f5e964263eadeeadd312384c1f8ebf9ff21)
(cherry picked from commit 7788ff7b9ff1ff5adbd38d9b7d8584d6a127dad6)
(cherry picked from commit 717672648b06678e3d1f10aa1f5c8791b4add846)

Bluetooth: HID: Add support for Set Idle and Get Idle Commands

This patch provides an interface for application to send Set Idle
and Get Idle commands to remote HID Device. Support for these
two commands was missing from exisitng code, so existing code
design is reused to add support for these two commands.

Change-Id: I548362cc328498920b2dae740f1a76b2cc2d6a67
CRs-Fixed: 522511
(cherry picked from commit e98b0a3118b9c7a72f8e65e7e080259e6f032db8)
(cherry picked from commit 14fd26713fa406174f6d770506708dbbfd8c2a2e)
(cherry picked from commit 3a40bbc088c1c09fba649d40a7670760c17d5a38)

Bluetooth: Add trust device feature.

Add set trust feature where the remote device is marked
as a trusted device for subsequent connection.

CRs-fixed: 523135

Change-Id: I9bde4d7dfe07d9d63b58a661ed2413f45501bd7b
(cherry picked from commit 7ba8616bb2ba13558cdf0f00d7e1ae5b38a6ba53)
(cherry picked from commit 9bda1cf301ea06b0873d28fe1b0fcadaf2b1fb73)
(cherry picked from commit 50f4f58ae97f433b68e79a14cb662a7db9b410c9)

Bluetooth: Changes to support AVRCP 1.5

Provide support for AVRCP1.5 so that remote controller
is able to browse the list of available media players
on DUT and select the media player from the available
list of players, from remote.

Change-Id: Ia1a340d1efaa16091e684f6ff7c738ce0accaee3
(cherry picked from commit 22af77236fccc546c6bec3956b0027fc1642ba1c)
(cherry picked from commit c9bc05d824197921a44d862026b3bc352d0f6a27)
(cherry picked from commit 3fad1502e08b9ccc7ecfd3f35be4b38190d9aa81)

Bluetooth: SAP: Add framework changes to support SAP

Bluetooth SIM access server (SAP) profile APIs added to the
framework APIs. As SAP server supports only disconnection
of SAP profile level connection this API is implemeted
along with other APIs.

It registers bluetooth state changed callback with the
adapter service,once there is a change in the bluetooth
state,it will bind/unbind the SAP service which is
implemented in BluetoothExt.APK.

SAP service, and other SAP Application layer is implemented
in BluetoothExt.APK.

Change-Id: I7215f503244c5ee277e83d60d6960f18559acfb9

Conflicts:
	core/java/android/bluetooth/BluetoothDevice.java
(cherry picked from commit 86d14a60283c2315bea8a34f24dd0c22139a136b)
(cherry picked from commit 718d372656fa7a456247c4909baac6e7104049f8)

Bluetooth: Support  HFP Client role on Bluedroid.

Implementation changes to support HFP Client role
on Bluedroid stack

Change-Id: Ie37e95d3b0e3f785af818fb495c835e420792f4d
(cherry picked from commit 072fad9a9a17c2a31660e7ac6cd6eba82d63fe50)
(cherry picked from commit 559508238c2fe1f8f10049549b8a29053399407c)

Bluetooth: Add Get/Set socket option to the Bluetooth Socket

Introduced Get/Set socket option to the Bluetooth Socket.
For these APIs it will directly call the APIs of Adapter
Service.The corresponding APIs have been implemented in
the Adapter service of native Bluetooth APK.

CRs-Fixed: 557180
Change-Id: Ic49b66599fb3c4c500e52295895d708dbc172cc7
(cherry picked from commit 80a5a8d9f465458c5417e532cc98970951f2c675)
(cherry picked from commit 5b4c228467074d2b71e02cd36c220584dba818fe)

Bluetooth: DUN: Add framework changes to support DUN

Bluetooth DUN profile APIs added to the framework APIs.
As DUN server supports only disconnection of DUN profile
level connection this API is implemeted along with other
APIs.

It registers bluetooth state changed callback with the
adapter service,once there is a change in the bluetooth
state,it will bind/unbind the DUN service which is
implemented in BluetoothExt.APK.

DUN service, and other DUN Application layer are mplemented
in BluetoothExt.APK.

CRs-Fixed: 557180
Change-Id: I6ce1204ac6138e28ad7486f2855f0f7444ad3886
(cherry picked from commit 2e60ff9becce9db20d1714786f74cb29b9ad9c74)
(cherry picked from commit ff766d48a4f6eb1b2efeaefa30f8467deefccfa1)

Bluetooth: Fix RfComm socket cursor exceptions in STRICT MODE.

Perform ParcelFileDescriptor close after detach to avoid bluetooth
socket leaks in strict mode.

CRs-fixed: 572214

Change-Id: Ib0d7d08e17aa147573e9893af9b605fd42420500

Bluetooth: HID: Add support for HID Device Role

This patch adds the HID Device Role support in Bluetooth framework.
Also AIDL and callback related files for HID Device role are added
to provide interface for third party applications to communicate with
HID device Service.

Change-Id: Id03a362b7bcfa2e76056fa0197eaac12ce49b5a2
CRs-Fixed: 573086

Bluetooth: Changes for LPP and extended LE scan

This patch includes implementation of a new Bluetooth
Adapter named QBluetoothAdapter for implementing LE
specific tasks that the default adapter doesnt perform.
This patch also implements Low power proximity and extended
LE scan functionality based on service UUIDs.

CRs-Fixed: 581289
Change-Id: I63e0593f79c8929d4e18cee0472fcb401c8892e7

Rollback Bluetooth changes for now.

 * Lots of issues being reported with various devices and the last batch
   of Bluetooth changes. Roll back until further testing.

Revert "Bluetooth: Changes for LPP and extended LE scan"

This reverts commit cf7b8680781672750e8c2c35752d061a1437b371.

Revert "OBEX: Reduce Obex MTU size for A2DP or SCO concurrency"

This reverts commit 703b0d22363ca97ebb7726b540bacc91de5895b8.

Revert "Bluetooth: HID: Add support for HID Device Role"

This reverts commit 17221101b567561bff903ca9e1e4ade083a44735.

BluetoothManagerService: fix enabling/disabling BT from Quictsettings under second user,

Change-Id: I8173559b2c734968ef4a8d86fddaa3a73d5c2b1e

Bluetooth: HID: Add support for HID Device Role

This patch adds the HID Device Role support in Bluetooth framework.
Also AIDL and callback related files for HID Device role are added
to provide interface for third party applications to communicate with
HID device Service.

Change-Id: Id03a362b7bcfa2e76056fa0197eaac12ce49b5a2
CRs-Fixed: 573086

Bluetooth: Changes for LPP and extended LE scan

This patch includes implementation of a new Bluetooth
Adapter named QBluetoothAdapter for implementing LE
specific tasks that the default adapter doesnt perform.
This patch also implements Low power proximity and extended
LE scan functionality based on service UUIDs.

CRs-Fixed: 581289
Change-Id: I63e0593f79c8929d4e18cee0472fcb401c8892e7

Bluetooth: Cleaning up sap service object to avoid serviceRecord leaks

A case where script is running to do BT ON/OFF 2000 times. Sap service
class object is leaked while turning OFF BT, when it is referenced
(Directly OR Indirectly due to its member variables). So Garbage
Collector doesn't collect class object which is referenced. Setting
NULL for service class object & service connection, while cleaning up
those variable to mark as weak reference. Any objects memory is
immediately claimed by GC, which are marked as weak reference.

Change-Id: I905d1e542c159c8f9addcb8491aee900697c9006
CRs-Fixed: 591180

Bluetooth: Fix to avoid framework reboot during monkey.

A case where monkey is running & sometimes framework is
disconnected due to unhandled java Exception during the
binding of DUN, SAP, HID device & PAN service on unsuccessful
binding. So it never handled. Handing java exception while binding
DUN, SAP, HID device & PAN  services to solve this issue.

Change-Id: Idea710593a3f9496305f636042605303e73e7749
CRs-Fixed: 564709

Bluetooth: HID-C: Add support for error parameter for reportError

This patch adds support for error parameter in reportError providing
better flexibiltiy to application to respond to errors for Set Report
received from HID Host.

Change-Id: Ieada7be8a6a91d310f20849af9e5a9b04766f4a5
CRs-Fixed: 595139

Bluetooth: Validate input parameters of gatt characteristics

If the input parameters of gatt characteristics are not valid
return false

Change-Id: Icf44439992cb068339f7a4c4e50a3f28c25db6ce
CRs-Fixed: 534763

Increases Gatt connection timeout value to be 30 secs

Some LE devices take more time to establish
LE connection. This change increases the
connection timeout value to take care of
this scenario.

Change-Id: Ie4cc79b53301f230553df02afd5d64dec637fe5d
CRs-fixed: 582556

Bluetooth: Fix PXP LPP app link loss reconnection

When BLE link loss reconnection happens,the host is
not able to send Vendor specific commands
to the controller to start monitoring the RSSI
values.

CRs-fixed: 597822

Change-Id: I436889fae7f7d42c4f532690b726271ffc136e94

Bluetooth: Fix to avoid framework reboot during monkey.

A case where monkey is running & sometimes framework is
disconnected due to unhandled java Exception during the
unbinding of HID device service on unsuccessful unbinding.
Handling java Illegal Argument exception while unbinding
HID device service solves this issue.

Change-Id: I61a5620e756119d25f2a235e67d6404b216f4cbf
CRs-Fixed: 601533

Bluetooth: Add SDK apis for Wipower and Peripheral feature

changes needed for Wipower and Periferal features.

CRs-fixed: 587811

Change-Id: Ibe73124daf78c79498fd1a6cbbcd75a88006c688

Bluetooth: Handle exceptions for bluetoot socket read

Handled IO exception in read function of BluetootSocket,
and also introduced a null check for mSocketIS.

CRs-Fixed: 605606
Change-Id: Ic948c72269e0de486a8f49163830528b002198ff

Bluetooth: Add Power apply enable event handling

Add Wipower Power apply enable related event handling
in frameworks

CRs-fixed: 612628

Change-Id: Iceb0cf8297ad0ab7080c0c494c1404127ff0258a

OBEX: Reduce Obex MTU size for A2DP or SCO concurrency

Reduce Obex MTU to 8k from 64k when OPP send is tried with
SCO / A2DP streaming in progress, so that the continue
response for first complete Obex PUT packet is received
from SOC within 50 seconds time frame.

CRs-Fixed: 571865
Change-Id: I1eae114f57f2a92ee4b26c82d8f55fafe02775b8

Bluetooth-OBEX: Reduce the MTU size if default OBEX MTU > 8k

Add a check for default OBEX MTU. If MTU is greater than 8k and
setMTU flag is true then reduce the MTU to 8k.

CRs-Fixed: 613931
Change-Id: I5785fd372241f682427ea3aca0b56ac747820d52

Bluetooth: Fix for FileDescriptor leakage causing ANR

Fix to close the native fds gracefully. detachFD has been removed
in order to close the native fds

Change-Id: I6afca60bcf6adc82ad6a63d8706267d8ed3bd579
CRs-fixed: 623575

Bluetooth: Added new key to store last connected A2dp Sep type

Changes made to add new key and API to store, retrieve the last
connected A2dp Sep type using Content Resolver.

CRs-fixed: 599358
Change-Id: I2648603cc456921ec1896fb498b602416bd79e72

Bluetooth: pause music player on A2dp service disconnect

When A2dp service disconnects as part of SSR, it marks a2dp state
as unavailable in Audio module but does not pause music player, as
a result when bluedroid stack restarts as part of sub system restart,
media player does not pause and music continues to play on device
speaker.
This change helps to pause the media player, in addition to marking
a2dp as unavailable, so that media player pauses when a2dp service
forcibly disconnects as part of sub system restart with A2dp in
connected state.

CRs-Fixed: 590462
Change-Id: I05ee5bcc808eb438156b64181d54e8ccabe1e186

Bluetooth: Add Total track number.

Add support to add total number of tracks in
Meta-data

Change-Id: I5b1287f791615adcd4f920fe5c7cae0c7c7b04ea
CRs-Fixed: 627869

Bluetooth: Adds check to verify Bluetooth adapter state

This checks whether bluetooth is turned ON or not in
BLE stop scan process. BLE scan apis are called from applications
so need to check if BT adapter state is ON to avoid Bluetooth
crash

Change-Id: Ifc472be9b3f8baf978d6cdca2e4743a75b951635
CRs-Fixed: 634617

Bluetooth:Settings:Handled ACTION_STATE_CHANGED intent at boot time

BluetoothAdapter.ACTION_STATE_CHANGED intent is added to foreground
activity to handle BT sync issue with  Power widget at the boot time

Change-Id: Ib26cb4630c711587da789dc920aa66ded97a9a3b
CRs-Fixed: 576879
Add 2 APIs (suspend/resume) in MediaPlayer

- API:suspend() will just pause the player and release all the decoders
  to replace release() which will release the whole player
- API:resume() will just init the decoders again,
  then start() will be called to start to play the streaming

Change-Id: I3e2ffeb50dfe6d156b18416fa8964ff4a3d56a2c
audio: Add overlay to fix analog docks.

Of particular interest to devices using libhardware_legacy and
affected by commit 5a484b753cc72d6a50c1dd3bbf68b3403c741a3a: http://goo.gl/rVR1Z
which restricted the routing of AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET
to docks using FORCE_ANALOG_DOCK cases. The EXTRA_DOCK_STATE_CAR case is
returning FORCE_BT_CAR_DOCK, preventing the dock audio from routing properly.

Add an overlay option for overriding to FORCE_ANALOG_DOCK.

Change-Id: Ib7d70c242aa6f537ea5d65098ceb2c591662d8bb
frameworks/base: media: add support for DIVX files

Change-Id: I6e922c5d6e17ee590606268af97b7894f35d19ae
(cherry picked from commit 47fea00316203aebba194644f95ca58ef4ff4400)
(cherry picked from commit 1f3ab64cf5bb19ec2e8a996750f44389d4d07187)
(cherry picked from commit 066dff510ec44ee06c3a375e32133e21fbedf9fb)
audio: add support for MSM audio formats

- Add support for EVRC, QCELP, and WMA formats
- Add definition for 5.1 channel recording
- Reference change If3676b88fa287b484ef8616c0a6b67177b61a720

Change-Id: I6b6e5ca98921adeadd2a3d76580fe85fb28eeaf0
(cherry picked from commit 10c4f204bb5ac78b9cf3854b536663ccd3d50333)
(cherry picked from commit 3f99cc5f134b0f00a52218ae1c0273cc11ae7702)
(cherry picked from commit 1d35b52c7c9cf1cfd3a3de372391a7a57f593af9)
 Audio: SetForceUse config check in AudioService

 - Audio is routed to headset when BT is turned off while audio is
   played on speaker
 - Mediarouter does not have setForce device information when app forces
   audio to speaker. So while disconnecting BT, MediaRouter is routing
   audio to headset instead of speaker.
 - Added check for setforce config in AudioService.

 CRs-Fixed: 578316

Change-Id: Ie929f407bfa12eacd29cf36031024a4a6a979b63
audio: Set slient persist property according to ringer mode

Update the persist.sys.silent property when setting ringer mode.
This property could be used by the native layer application.
Example:
Bootanimation could check this property to decide whether
background music is needed.

Change-Id: I64311fcac9d4c3729b38fc2b597dc478d6de4d7c
AudioService: add STREAM_DTMF to stream affected by ringer mode

-STREAM_DTMF volume muted when phone in vibration or silence
 mode but will not restore when back to normal mode by setting
 STREAM_RING volume to 1
-Add STREAM_DTMF to the list of stream volume affected by ringer
 mode

Change-Id: Ib91d6b2c09e10b5cd86ae192cf334c69884da294
CRs-Fixed: 549908
Audio: Fix abnormal keytone playback during silent mode changing

Change-Id: Icfc4003c9756b3c33578c137e59dc4a2b4f25647
Author: Chenyang Du <chenyang.du@intel.com>
Signed-off-by: Ertao Zhao <ertaox.zhao@intel.com>
Signed-off-by: Shuo Gao <shuo.gao@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Author-tracking-BZ: 19084 4898
Audio: Fix title of system ringtone contains messy meta

Title in the Meta information of Bootest.ogg contains
junk characters which is displayed in Settings->Sound-
>Phone ringtones.

Correct the binary file to solve this issue.

Change-Id: I91c0519bb55ee5e74f783b0c147acbde641f6502
CRs-Fixed: 569976
Camera: add ISO mode support

Change-Id: Ied2075f950269990d836fc768b2c6c36088d494f
Camera: add additional ISO modes (2/2)

Change-Id: I3460c3de4cbef467430673146a9ddb2fdc8f5032
Camera: Add support for QC camera features.

Added APIs and keys for all QC features. This
will enable application to get/set paramters.

Change-Id: I58a53c7b9133a3acddc34b268dac086c9562d533
Camera: Video HDR Feature Integration.

Added framework support for camera applications to query supported
video HDR modes and set the required mode.

Change-Id: Ie318e586838a2f035e59e30fa51af35b52f7c886
Camera: Adds support for meta data callbacks

- This change adds a new type of callback
  that will be called when there are pending
  meta data notifications.

Change-Id: I84f5cbafe4f023c7b0efa9ec8620756b0eaa428d
Camera: Add support for QC camera features.

Added APIs and keys for all QC features. This
will enable application to get/set paramters.
(cherrypicked from commit d0c5a0ee7e9af41320fed00ff324c6d0f22eb697)
Change-Id: I68c23aaf7267645efeb4d4743b390a048292b7fd
(cherry picked from commit ad2fd19b7ed6a610cab4bd3ae261178bcafa66af)
(cherry picked from commit cfcebdf9c402bb5f1976f07ba5dc1e15f5811fc2)
(cherry picked from commit 4ef4a5e937b2ec7355c5893c80dbc103d163364d)
wlan: Error handling on PNO failure due to active P2P session.

If set PNO fails due to concurrent active p2p sessions,
handle the error condition in framework and issue a
regular scan for every framework background scan interval
until set PNO is either success or disabled.

Change-Id: Ia4e8d9aef9ed24e534cb57cea7c8ba7a7ffc509e
CRs-Fixed: 568458
wlan: Fix for delay in PNO scan trigger after p2p disconnect.

If PNO is disabled due to concurrent active p2p session,
on P2P disconnect PNO scan is not triggered until the next
framework scan is scheduled.
To mitigate this issue trigger the PNO scan on receiving
P2P_CONNECTION_CHANGED intent in disconnect state of the
wifi state machine.

Change-Id: I9de116f4c82ce103a5787f91b7c7129748fee517
CRs-Fixed: 584058
wlan: Do not disable the network on Assoc Reject/Authentication Failure.

A failed network, if disabled, would result in no further connection
attempts for the same.Thus, do not disable the network rather enable
all the disabled networks, as supplicant shall disable the networks
temporarily on subsequent failures and would give fair chance to
select the prioritized networks.

Change-Id: I27bfdfed420e935c1bc21fb968d6a5ba75ca92aa
CRs-fixed: 582883
Wifi: Allow configuration of the P2P ifname

ICS used the same wifi.interface as the regular wifi service.
Let's use wifi.p2pinterface here, since they _can_ be different

Change-Id: Iab68b245b33377271354c849bbe33725a26193f1

Conflicts:
	wifi/java/android/net/wifi/p2p/WifiP2pService.java