Squash 4.3 changes.

fixed rfc resouce leaking and multi-session issue

also added more debug messages
bug 7486080

Change-Id: Ic21e9d2df5f651b51ea2126a3cac25811808dcfb

fix too small buffer

property_get must be called with a buffer of at least
PROPERTY_VALUE_MAX len. The supplied buffer is too small.
Fixed.

Change-Id: I6c6b3050b30f6aa5ece69888263394e572551aff

fix bt_hc_worker_thread() sometimes transmit more than num_hci_cmd_pkts

bt_hc_worker_thread() checks the controller's outstanding HCI
command credits (maintained in num_hci_cmd_pkts) and skips the rest
of the tx queue after it has used up the credits. But the skip
condition is not correct in the loop:

      if ((tx_cmd_pkts_pending == TRUE) || (num_hci_cmd_pkts <= 0))
      {
          tx_cmd_pkts_pending = TRUE;
          // skip the rest of the packets in the tx queue
          ...
      }

Since num_hci_cmd_pkts doesn't change during the loop, this condition
never becomes true. As a result, all the HCI commands in the tx queue
are sent if num_hci_cmd_pkts > 0. That is why sometimes more than
num_hck_cmd_pkts are sent.

To check a correct skip condition, we should count how many HCI
command packets are being sent:

      if ((tx_cmd_pkts_pending == TRUE) ||
          (sending_hci_cmd_pkts_count >= num_hci_cmd_pkts))

sending_hci_cmd_pkts_count is incremented every time a HCI command is
pushed for sending. It should never go beyond num_hci_cmd_pkts.

Change-Id: I58101b2785fc3ab4171cdf22497ca97a3ae3124a
Signed-off-by: Toshi Kikuchi <toshik@google.com>

Resolved partial uipc channel read issue

When partial data is read the previously read size wasn't
compensated for.  Ensure we don't transmit empty a2dp frames in case
of underrun
Bug 8026551

Change-Id: I4195ed798008378b93343bf7cd266c6e2f11b094

Fixed unpair and reconnect issue with certain non-pointing hid devices

Hid info would not be removed from storage if COD is
NON_KEYBOARD_NON_POINTING. Due to this the device will
be added to stack even if it is unpaired and subsequent connections
will fail.
bug 8055549

Change-Id: Ib493fc165120de3c71398f5fe24b17f31fa5fc3e

Cancel device search before starting SDP

Also update bonding state when acl link goes down during bonding
b/8120036
Change-Id: I28e4cb6f35e4c524b7a67281e78a196ba1fce0cb

Initial version of BLE support for Bluedroid

Change-Id: I9825a5cef9be2559c34c2a529b211b7d471147cf

bluedroid: use correct header file.

Change-Id: Ia536e42e24fcc0491a16b160cd5b00189024e0f0

LE fixes

- Null pointer exception check added.

An exception occurs at the memcpy in the bta_dm_gatt_disc_result.
User removed the battery on Ble device(Smart Nudge) during bonding
and connection. This exception occurs sometimes.
I used Broadcom LE Explorer to reproduce it.

- Fixed disconnect and encryption behaviour

Disconnect will now disconnect the physical link immediately when no
other application is interested in the device anymore. Also, the
connection to a remote device is now dropped if encryption fails.

- Deep copy buffers when transfering context

Certain BTA server event types require a deep copy of the request
data buffers when transfering context. Shallow copy of the pointers
involved may cause a crash when overlapping read and write requests
are received.

- 2nd encryption has not started

need to send encryption complete callback
when the encryption fail due to link drop without a complete event.
Otherwise BTA layer would not be able to clean up the status,
and no further encryption can be started.

Change-Id: If93e0a188e8779830c8991e4193b96dc95e23e5d

Initial version of Stack for AVRCP 1.3

BTIF and stack changes for supporting AVRCP 1.3

Change-Id: Id02eb7b6a385683cedc41c62b6f829f5d7620bd4

Parse LMP features to enable LE support

Only send LE commands if the local Bluetooth radio supports LE.
Improved remote feature parsing by reading extended features. Before
this change, only the first page of the features was parsed.
bug 8332905

Change-Id: I0b90771dcfc453efea157f463b9df006e0178609

need send reject response to unsupported Avrcp 1.3 command

Without this change, some carkit will stuch waiting for response and crash.

Change-Id: I710f69077e400830a9cedd540bef5d51dc468272

need free the buffer to avoid memory leakage when send Avrcp packet

Change-Id: I08b66a2dc779fef1e79d74209058223dcc5e4396

Reject element attribute request if count is 0xff

Updates from review. BTRC_MAX_ELEM_ATTR_SIZE set back to 7 and handled
invalid attribute count (oxff) in BTIF

Change-Id: Id2610c7882c4bc8aca04491d81b9b2c35f0682d0

Add support for PLAY_POS_CHANGED

Enable PLAY_POS_CHANGED support in get capabilities

Change-Id: I8f41209fe5be5345826136f14434488524e7b1bb

Fix LE buffer size for 0 length buffers

If the local chip reports 0 LE data buffers and 0 LE ACL data package
length, then the default ACL buffer length as returned byt the
Read_Buffer_Size command is to be used instead.

Change-Id: I953fabe426a98cc1b005d3b46c3e7f227c23a686

LE: Avoid LE connection to a non-LE device

During device inquiry, an LE connection to a non-LE device may be
triggered to discover the remote connection parameters. This fix adds
device type checking to prevent LE connections to non-LE devices.

Change-Id: I9e34642e7503b1c87a8eb06ec854843f7be263b2

Fix LE background connections not adding device to white-list.

Also changed maximum number of client applications to 32.

Change-Id: Id4697924b211330e231b36d7f89ca9d89b54117f

Fix typo around BLE_INCLUDED inclusion
bug 8566685

Change-Id: I173fedb711c16e8adc3d0d7aaebd08bac6de9d02

Proper handling of HCI command status event

Loop through pending command Queue to find a match for
command status evt opcode
Bug:8186156

Change-Id: Ic95ed3834695fb84a8c0617ec601896f044b0f3c

BT: JV rfcomm socket sniff support

Bug:8322094

Change-Id: Ib472f39488b685ac396289e65c1da21fdfd93c4c

Read the extended feature after ACL channel creation

This problem was introduced by Bluetooth stack merge.
bug 8521185

Change-Id: I9191c639e96382a452cf0fe336d5a9ef5b5f0f4a

Add liblog

Bug: 8580410
Change-Id: I3475705985b5db2cd3a640f8bc0ef173378edad2

Make host side of Read Local/Remote Extended Features more reliable

Issue Ext feature request only if the local controller supports
the command. Fall back to read remote feature command,
if the extended feature request fails
Bug:8591628

Change-Id: I744d9845c04b30d2dca1fd491fea49616adbb2d7

Fix for Nyko playpad

Nyko playpad does not cmply with HID Device spec. NYKO gamepad
advertises as supporting virtual unplug but when virtual is sent
by host it responds with ERR_UNSUPPORTED_REQUEST. Modified BTIF
code to start a timer when VUP is issued and fire the timer if peer
does not respond.
Bug:8055549

Change-Id: I90db956fb243f1a518b00424b103ebf9f0a1b7f0

Audio glitches while playing songs over MOTO S305 headset

The MOTO S305 doesn't support read remote extended features command.
The fix is we should always use ReadRemoteSupportedFeaturesCommand at first,
Only send ReadRemoteExtendedFeaturesCommand if extend features are supported
by remote device.

issue 8618753

Change-Id: Id6d9c0e712dc892bcfca20336d1290b9443213ac

Change the log display API called in the BT PAN call-out functions

Replace the ALOGD calls with BTIF_TRACE_DEBUG/API calls to control
log output through TRC_BTIF setting in bt_stack.conf at run-time.

bug 7893834

Change-Id: Ia24e87abc13272d61c0b1785685b71a8aabdb34e

LE (2/3): Add application ID to connection callback

Bug: 8589393
Change-Id: Ib5c34ce1cddb0e32ad08ac3cbdeaa74cd8514f81

Proper management of controller ACL buffers.

Reclaim all the unacknowledged controller ACL buffers associated
with a L2CAP link when L2CAP control block is released.
Bug:8589069

Change-Id: Icef1646041e73280a13dedc7a45564d032c59712

HDP fix for Single SDP record

Modified stack code to support single SDP record
for each register app call.
bug 8656462
Change-Id: I92570243306d5c1ca8339042eba5733e43fdb72c

LE: Fix shared ACL buffer allocation

Allocate a static amount of LE buffers for chipsets that do not provide
separate ACL buffers for LE and BR/EDR.

Bug: 8714387
Change-Id: I74e954c0824ddfd89b50c14f6848db787f9b9bff

LE: Disable L2CAP connection parameter update during pairing

Some peripherals change the connection parameters during the pairing
procedure. Ideally when service discovery is started, connection
parameters are reset to default values. In instances where the
connection update fails, service discovery takes a very long time and
may result in a GATT application not receiving a connection status
update.
Disabling connection paramter update during service discovery ensures
a quick service discovery and improves interoperability.

Bug: 8714594
Change-Id: I2177e57bf250b99e314a1b020cd0fadbd480214e

BT problems in Acura MDX

problem2 unexpected beep from carkit during ringing.
The root cause is
the interval between the ring alert is 10 seconds. it is too long
for the carkit which trigger the beep from the carkit. After I
change the inteval to 5 seconds, no unexpected beep from the carkit.

issue 8720373

Change-Id: I6f1cc1faba27e61c80b31c63b6673436e003b117

Fix for SDP data structure leak during pairing

During pairing, bluedroid initiates a SDP request to search services.
Upon SDP completion, some data structure buffers were not returned to
the pool resulting in leak.

Bug : 8797456
Change-Id: Ic512fd22ca6b8b748c5b92c02e24016fe785c0b1

Fix a bug on jv and stack port handle conversion

bug 8755557

Change-Id: Id639677aa4bc6322fed0eb1a842d1155cdcdd5fc

Remove role adjustment logic from Conn busy/idle handler

Each call into connection busy/idle handler should not result in
Role adjustments except for AV profiles.
Bug:8322094

Change-Id: I1eba2c428e877772614052396315c6f0467d3378

Solve compilation problem when BLE/GATT/SMP features are false

bug 8664724
Change-Id: I582846ccf4b8995f298d8db533488fceb7993ae3

New call-in/-back functions for Controller to do vendor-specific shutdown (1/2)

A pair of asynchronous call-in and call-back API are added into the Host
Controller Vendor Lib interface (bt_vendor_lib.h). The caller calls this new
call-in function to inform the vendor module to perform vendor-specific
shutdown process (e.g. send HCI_RESET to BT Controller) before the caller calls
for interface cleanup() function. The vendor module is responsible for calling
call-back function to notify the caller completion of vendor-specific shutdown
process.
bug 7390787

Change-Id: I29e3c94ff78e17cdd7a06b44ae537e3b0ad1516d

Stability fixes for a2dp hal control path

Ensure av statemachine is preventing a2dp hal to restart the stream
when not ready. This prevents ending up in a scenario where a2dp hal
locks up. Code cleanup.
bug 7002859

Change-Id: I3f3eeaab4ca185733b8b0042ed2cfa701f76a203

Added available size check to fix zero byte data available issue

Bug 8950703
      rfcomm connection failed in case zero byte data available

Preload timeout and retry mechanism (1/3)

If the Preload process was stuck due to unknown hardware init failure,
a 8-second ENABLE_TIMEOUT timeout would be eventually expired in Java layer
at AdapterState and attempted to set BT state back to STATE_OFF.
However BluetoothManagerService did not handle this case accordingly and led
to state mis-matching between Java layer and BTIF at the end.

Add a timeout and retry mechanism to manage Preload process.
Clean up native space resource and explicitly report STATE_OFF back to Java
space when Preload did not go through.

bug  7566317

Change-Id: I99a225e524f2b951249618990a2d0a8a39b43ff3

Media profile drop on ending the outgoing video call and music is heard locally

receive AVDTP_Suspend response rejection which cause the A2DP disocnnected.
There is collision of AVDTP_Suspend request:
We send AVDTP_Suspend request and the headset send AVDTP_Suspend request also at the same time.
then We send AVDTP_Suspend response, but the headset send AVDTP_Suspend response rejection
with error code bad state after it receive the AVDTP_Suspend response from us.
we call bta_av_suspend_cfm twice in this case:
the first time we will call bta_av_suspend_cfm without error after receive AVDTP_Suspend request from headset.
the second time we will call bta_av_suspend_cfm with error bad state after receive AVDTP_Suspend response rejection from headset.
To fix this problem, we should ignore the AVDTP_Suspend response rejection from headset
after receive AVDTP_Suspend request from headset.
After we receive AVDTP_Suspend request from headset, the scb state will be changed to AVDT_SCB_OPEN_ST from AVDT_SCB_STREAM_ST.
but when we receive AVDTP_Suspend response rejection from headset, we should ignore it when we are in AVDT_SCB_OPEN_ST.
and also currently we already ignore AVDTP_Suspend response when we are in AVDT_SCB_OPEN_ST,
I don't know why we didn't do it for AVDTP Suspend rejection.

issue 8735903

Change-Id: I8db3ea6e7e4edfea41f255e7e29b8c7255cf3d96

Fix for AV lockup on local and remote start collision

Bug: 7002859

Change-Id: I6170be864b44011b98e08d7e2599021a3eec70a3

Do not abort bonding if link disconnects during SDP after Auth cmplt

If ACL link gets dropped during service search after bonding,
re-attempt service search instead of setting bond state to BOND_NONE
Bug 8611134

Change-Id: I77672d9f4feab634b3795a41e0d4e58903b5d275

LE: Release transmit buffer credits

When an ACL link goes down, some controllers do not send a "number of
completed packets" update for the last ACL packets sent from the host to
the controller. This could result in incorrect L2CAP transmit window
calculations and no transmit credit to be available to send data to the
controller.
This patch restores transmit buffer creedits regardless of the
controller behaviour.
bug 9474159

Change-Id: I2540131034271a0269fa50698f370bceb7747e2d