OSDN Git Service

android-x86/system-bt.git
9 years agoInclude log library to make bdtool
Nitin Arora [Mon, 30 Mar 2015 19:22:30 +0000 (12:22 -0700)]
Include log library to make bdtool

This change adds the liblog library in the
make file for bdtool to provide for separate
compilation of the tool without causing link
errors while importing libosi

Change-Id: I87752ef7e1026080bd56fb377c73b457775f12a3

9 years agoRemove BLE_PERIPHERAL_ADV_NAME flag.
Wei Wang [Fri, 27 Mar 2015 18:28:54 +0000 (11:28 -0700)]
Remove BLE_PERIPHERAL_ADV_NAME flag.

BLE_PERIPHERAL_ADV_NAME forces inclusion of device name
in advertise data. Since setIncludeDeviceName is already
available in advertise API to control the presence of
device name the flag should be removed.

Change-Id: I8637529b2d809bb9829783f60bd7e9889784c8b7

9 years agoUsing generic format specifier for logging pointers
Nitin Arora [Wed, 25 Mar 2015 00:15:50 +0000 (17:15 -0700)]
Using generic format specifier for logging pointers

This change uses generic format specifier for logging the
pointers which can be 64 bit or 32 bit depending upon the
system used for compilation.
Also address of operator is used before casting a int variable
to void pointer.

Change-Id: Ie9dec408f3a5f674079f77c047d8192f65a004ca

9 years agoFix compile error on Fugu
Andre Eisenbach [Thu, 2 Apr 2015 08:01:34 +0000 (01:01 -0700)]
Fix compile error on Fugu

Change-Id: I389acc5c5034e1b232da0307f77577b939af68ac

9 years agoFix compile error on sprout
Andre Eisenbach [Thu, 2 Apr 2015 07:40:38 +0000 (00:40 -0700)]
Fix compile error on sprout

Change-Id: I65e03f18921ab0f2938797fd68429eae7b3a1c73

9 years agoFix dlsym change/failure by hard-coding internal module references.
Etan Cohen [Wed, 1 Apr 2015 22:00:27 +0000 (15:00 -0700)]
Fix dlsym change/failure by hard-coding internal module references.

Should be reverted once permanent solution for dlsym change merged.

Change-Id: I2c0843875f88c8c56899b60246907af12d29fb0c

9 years agoFix build issues in bluedroid on master
Etan Cohen [Wed, 1 Apr 2015 00:15:53 +0000 (17:15 -0700)]
Fix build issues in bluedroid on master

Change-Id: I0d3e93ea61dd03505fe9db902ed90bdd4141cab2

9 years agoMerge commit 'f7f839985b3931682363d2ef3b7c5cae55a842ee' into merge
Etan Cohen [Tue, 31 Mar 2015 17:41:53 +0000 (10:41 -0700)]
Merge commit 'f7f839985b3931682363d2ef3b7c5cae55a842ee' into merge

Change-Id: Iaaec1ea0bf3009b7e32a9a60f697631a3f56e889

9 years agomerge in m-wireless-internal-release history after reset to a5371c238b4e874d8313ac56a...
The Android Automerger [Mon, 30 Mar 2015 13:45:23 +0000 (06:45 -0700)]
merge in m-wireless-internal-release history after reset to a5371c238b4e874d8313ac56a23451e7345ff541

9 years agoMake A2DP audio HAL a shared library again
Andre Eisenbach [Sat, 28 Mar 2015 00:12:19 +0000 (17:12 -0700)]
Make A2DP audio HAL a shared library again

The audio HAL is loaded separately from the Bluetooth stack and thus
needs to stay separate.

Change-Id: I8d8601a6e753099f4f058dc0192b93c53be2ffb1

9 years agoMake A2DP audio HAL a shared library again
Andre Eisenbach [Sat, 28 Mar 2015 00:12:19 +0000 (17:12 -0700)]
Make A2DP audio HAL a shared library again

The audio HAL is loaded separately from the Bluetooth stack and thus
needs to stay separate.

Change-Id: I8d8601a6e753099f4f058dc0192b93c53be2ffb1

9 years agoMove unused include file out of hci_audio.h
Andre Eisenbach [Thu, 26 Mar 2015 21:14:40 +0000 (14:14 -0700)]
Move unused include file out of hci_audio.h

This fixes include path issues for libbt.

Change-Id: I416f563c0056216e86898d8e9cc111b600c73ce0

9 years agoAdd option for schedule_next_instance to force rescheduling
Zach Johnson [Thu, 26 Mar 2015 22:07:43 +0000 (15:07 -0700)]
Add option for schedule_next_instance to force rescheduling

If we're rescheduling a periodic timer in the context of an alarm
expiration we want to force rescheduling to happen.

The alarm at the front of the list after scheduling the next
instance may be a different alarm. The old code would assume it was
already scheduled correctly, meaning nothing would ever get scheduled
after that.

Change-Id: I8accf5d004e69dfd6477ab7ec529eea42b3a88f8

9 years agoEnsure alarms are called back when they expire in the past
Zach Johnson [Thu, 26 Mar 2015 06:32:11 +0000 (23:32 -0700)]
Ensure alarms are called back when they expire in the past

Turns out the posix timers we're dealing with aren't well behaved.

If the timer is TIMER_ABSTIME the following is supposed to be true:
"If the specified time has already passed, the function shall succeed
and the expiration notification shall be made."

But alas, this is not the case. If the expiration time happens to be
in the past (e.g. very short timer which gets hit with a context switch
before the timer can be set) the timer decides to disarm itself. This
means no more callbacks happen, and no more alarms are processed ever.

sadness.

But thankfully, we can use timer_gettime to check the state of the timer
after timer_settime. If timer_gettime tells us the timer is disarmed
right after we armed it, we want to perform the alarm callback
ourselves.

Put all timer callbacks on the same thread (as would be the case in the
underlying timer implementation already) and used a sempahore to signal
when an alarm expires in the normal posix timer callback and also in the
timer didn't set case.

Change-Id: I39854b241369b2da52afbaaba0c01d3167a47e32

9 years agoRewrite alarms to use a single posix timer instance
Zach Johnson [Tue, 24 Mar 2015 01:07:46 +0000 (18:07 -0700)]
Rewrite alarms to use a single posix timer instance

This means we lose the ability to send the intended alarm
as context with the posix timer, but this can be handled
gracefully enough by making sure we actually have an
expired alarm at the front of the list when the timer
callback occurs.

Change-Id: I909195b5c3155075096328c529655eeb5b7d80d0

9 years agoResolved hardware error observed during SCO Connection setup
Mudumba Ananth [Wed, 25 Mar 2015 12:20:02 +0000 (05:20 -0700)]
Resolved hardware error observed during SCO Connection setup

Hardware error was caused due to a faulty HCI command formed in the
process of vendor specific pre-SCO setup in the stack(set_audio_state)

Fixed the above problem and also added back the vendor (interface)
mapping for the set_audio_state functionality to facilitate the
sending of the pre-SCO vendor specific commands.

Made common vendor library audio setting by moving to hci subsystem.

General cleanup around this functionality.

Bug: 19923226
Change-Id: I4a743f6725459f360bd2a90e0a46f08fcca2292d

9 years agoMerge "Fix macro for maximum allowed HOGP devices" into m-wireless-dev
Andre Eisenbach [Fri, 27 Mar 2015 01:01:34 +0000 (01:01 +0000)]
Merge "Fix macro for maximum allowed HOGP devices" into m-wireless-dev

9 years agoFix macro for maximum allowed HOGP devices
Nitin Arora [Mon, 10 Mar 2014 20:25:27 +0000 (13:25 -0700)]
Fix macro for maximum allowed HOGP devices

This checks HOGP dev handle count less than or equal to maximum
allowed HOGP devices.

Change-Id: I63e6c3bc64a8c305b739b5eade0e846315e1ad1d

9 years agoAdd option for schedule_next_instance to force rescheduling
Zach Johnson [Thu, 26 Mar 2015 22:07:43 +0000 (15:07 -0700)]
Add option for schedule_next_instance to force rescheduling

If we're rescheduling a periodic timer in the context of an alarm
expiration we want to force rescheduling to happen.

The alarm at the front of the list after scheduling the next
instance may be a different alarm. The old code would assume it was
already scheduled correctly, meaning nothing would ever get scheduled
after that.

Change-Id: I8accf5d004e69dfd6477ab7ec529eea42b3a88f8

9 years agoDemote bta_av_link_role_ok error level to info
Chris Manton [Thu, 26 Mar 2015 21:49:25 +0000 (14:49 -0700)]
Demote bta_av_link_role_ok error level to info

Change-Id: I4399432c9071614fc610d9de084028e48aeaf8fd

9 years agoRemove unused file hci/include/bt_hci_lib.h
Chris Manton [Thu, 26 Mar 2015 21:08:38 +0000 (14:08 -0700)]
Remove unused file hci/include/bt_hci_lib.h

Change-Id: I60d87da42fa28dd57d50384396e30504103d1ae5

9 years agoEnsure alarms are called back when they expire in the past
Zach Johnson [Thu, 26 Mar 2015 06:32:11 +0000 (23:32 -0700)]
Ensure alarms are called back when they expire in the past

Turns out the posix timers we're dealing with aren't well behaved.

If the timer is TIMER_ABSTIME the following is supposed to be true:
"If the specified time has already passed, the function shall succeed
and the expiration notification shall be made."

But alas, this is not the case. If the expiration time happens to be
in the past (e.g. very short timer which gets hit with a context switch
before the timer can be set) the timer decides to disarm itself. This
means no more callbacks happen, and no more alarms are processed ever.

sadness.

But thankfully, we can use timer_gettime to check the state of the timer
after timer_settime. If timer_gettime tells us the timer is disarmed
right after we armed it, we want to perform the alarm callback
ourselves.

Put all timer callbacks on the same thread (as would be the case in the
underlying timer implementation already) and used a sempahore to signal
when an alarm expires in the normal posix timer callback and also in the
timer didn't set case.

Change-Id: I39854b241369b2da52afbaaba0c01d3167a47e32

9 years agoRewrite alarms to use a single posix timer instance
Zach Johnson [Tue, 24 Mar 2015 01:07:46 +0000 (18:07 -0700)]
Rewrite alarms to use a single posix timer instance

This means we lose the ability to send the intended alarm
as context with the posix timer, but this can be handled
gracefully enough by making sure we actually have an
expired alarm at the front of the list when the timer
callback occurs.

Change-Id: I909195b5c3155075096328c529655eeb5b7d80d0

9 years agoChange logtag to conform to rest of module
Chris Manton [Thu, 26 Mar 2015 20:28:51 +0000 (13:28 -0700)]
Change logtag to conform to rest of module

Change-Id: I9b99111f50dc4f1c581ef96e78b36d14b51a6866

9 years agoMove unused include file out of hci_audio.h
Andre Eisenbach [Thu, 26 Mar 2015 21:14:40 +0000 (14:14 -0700)]
Move unused include file out of hci_audio.h

This fixes include path issues for libbt.

Change-Id: I416f563c0056216e86898d8e9cc111b600c73ce0

9 years agoResolved hardware error observed during SCO Connection setup
Mudumba Ananth [Wed, 25 Mar 2015 12:20:02 +0000 (05:20 -0700)]
Resolved hardware error observed during SCO Connection setup

Hardware error was caused due to a faulty HCI command formed in the
process of vendor specific pre-SCO setup in the stack(set_audio_state)

Fixed the above problem and also added back the vendor (interface)
mapping for the set_audio_state functionality to facilitate the
sending of the pre-SCO vendor specific commands.

Made common vendor library audio setting by moving to hci subsystem.

General cleanup around this functionality.

Bug: 19923226
Change-Id: I4a743f6725459f360bd2a90e0a46f08fcca2292d

9 years agoRandom address does not get written properly
Satya Calloji [Tue, 3 Feb 2015 22:41:49 +0000 (14:41 -0800)]
Random address does not get written properly

The random address not getting written with correct
instance ID, as per Google spec.

Bug: 19370739
Change-Id: I7e5fc8d274bad5f127bd791469a46e2f257eaddd

9 years agoBuilds server with service, characteristic, and descriptor UUIDs. Then starts and...
Steve Gu [Thu, 6 Nov 2014 19:16:41 +0000 (11:16 -0800)]
Builds server with service, characteristic, and descriptor UUIDs. Then starts and stops the server.

Change-Id: I22e269010c5e4d96d9562155e03903c3ea957c97

9 years agoAdds tests for BLE advertising and BLE server register. Also fixes random seed.
Steve Gu [Wed, 29 Oct 2014 01:38:30 +0000 (18:38 -0700)]
Adds tests for BLE advertising and BLE server register. Also fixes random seed.

Change-Id: Ic15360baefb133b761ff077d27946c0ea7fa3edb

9 years agoAdds BLE tests to bdtest.
Steve Gu [Mon, 27 Oct 2014 19:59:02 +0000 (12:59 -0700)]
Adds BLE tests to bdtest.

Change-Id: Idcdc01339f0e8a14b6fedf27545566e7efdf53c2

9 years agoMerge "Add section on booleans and bitfields to the style guide" into m-wireless-dev
Andre Eisenbach [Thu, 26 Mar 2015 00:04:14 +0000 (00:04 +0000)]
Merge "Add section on booleans and bitfields to the style guide" into m-wireless-dev

9 years agoAdd section on booleans and bitfields to the style guide
Zach Johnson [Tue, 24 Mar 2015 17:05:15 +0000 (10:05 -0700)]
Add section on booleans and bitfields to the style guide

Change-Id: I75df8b638d71bfe2ba1dc98d3eb148d8a61f5b9c

9 years agoRectify allocation of GATT control block
Nitin Arora [Fri, 20 Mar 2015 00:00:35 +0000 (17:00 -0700)]
Rectify allocation of GATT control block

This change ensures that a valid value is returned while
requesting available control block or allocating memory
for a new control block for saving GATT discovery handles.
The bug if not fixed causes memory corruption and thus
modifying some callback handles.

Change-Id: I148ee82d2ea9fe77bebd34fd345b4fb6a6eee3cd

9 years agoRevert "Resolved hardware error observed during SCO Connection setup"
Chris Manton [Wed, 25 Mar 2015 18:01:11 +0000 (18:01 +0000)]
Revert "Resolved hardware error observed during SCO Connection setup"

This reverts commit 4d8ac4ff015ff87c4e985ac0d9a5f3c2a6b0d9fa.

Change-Id: Ie1433c82014b6ddce78c5363100ab109ae0fecde

9 years agoResolved hardware error observed during SCO Connection setup
Mudumba Ananth [Wed, 25 Mar 2015 12:20:02 +0000 (05:20 -0700)]
Resolved hardware error observed during SCO Connection setup

Hardware error was caused due to a faulty HCI command formed in the
process of vendor specific pre-SCO setup in the stack(set_audio_state)

Fixed the above problem and also added back the vendor (interface)
mapping for the set_audio_state functionality to facilitate the
sending of the pre-SCO vendor specific commands.

Bug: 19923226
Change-Id: I03c6a1c048c21549b7326a783b70588686283eb3

9 years agoam 80349eb4: am 0d65d4cd: AVRCP: Proper handling of Fragmented AVCTP packet
Mallikarjuna GB [Wed, 25 Mar 2015 00:14:37 +0000 (00:14 +0000)]
am 80349eb4: am 0d65d4cd: AVRCP: Proper handling of Fragmented AVCTP packet

* commit '80349eb4a14e74b6e28dac7829dcf2a199bd1de5':
  AVRCP: Proper handling of Fragmented AVCTP packet

9 years agoAllow dual-mode devices to be processed by BR/EDR scan
Nitin Arora [Wed, 22 Jan 2014 18:33:26 +0000 (10:33 -0800)]
Allow dual-mode devices to be processed by BR/EDR scan

This change lets a Dual mode device which is already processed
as LE device for the current inquiry, to be also processed as
a BR/EDR device in case an extended inquiry result is recvd.
This helps setting the cod correctly.

Change-Id: I0a0c598ebdafe2b6153015c3cda5dde8f7a15873

9 years agoam 0d65d4cd: AVRCP: Proper handling of Fragmented AVCTP packet
Mallikarjuna GB [Tue, 24 Mar 2015 22:39:10 +0000 (22:39 +0000)]
am 0d65d4cd: AVRCP: Proper handling of Fragmented AVCTP packet

* commit '0d65d4cdafc165484dfc8d1c5af4ac1cb7453fd7':
  AVRCP: Proper handling of Fragmented AVCTP packet

9 years agoAVRCP: Proper handling of Fragmented AVCTP packet
Mallikarjuna GB [Sun, 10 Nov 2013 08:00:25 +0000 (13:30 +0530)]
AVRCP: Proper handling of Fragmented AVCTP packet

- AVCTP : Allocate bigger buffer for reassembly
- AVRCP : Handle getelimentattr to eliminate duplicates
          and invalid attributes, this also fixes BOF.

Change-Id: I99f6e0fc4dc0cc0fac8854a8ee8671249d67f745
CRs-Fixed: 576831

9 years agoam 8b64bc93: (-s ours) am d30c100b: Merge "DO NOT MERGE Change AVCTP revision to...
Justin Koh [Tue, 24 Mar 2015 19:05:44 +0000 (19:05 +0000)]
am 8b64bc93: (-s ours) am d30c100b: Merge "DO NOT MERGE Change AVCTP revision to 1.4" into lmp-mr1-modular-dev

* commit '8b64bc93aea5a80d407fe78869f90edf0496fd7b':
  DO NOT MERGE Change AVCTP revision to 1.4

9 years agoam d30c100b: Merge "DO NOT MERGE Change AVCTP revision to 1.4" into lmp-mr1-modular-dev
Justin Koh [Tue, 24 Mar 2015 18:52:32 +0000 (18:52 +0000)]
am d30c100b: Merge "DO NOT MERGE Change AVCTP revision to 1.4" into lmp-mr1-modular-dev

* commit 'd30c100bf8789b96cb282fdee9a66822d4725a07':
  DO NOT MERGE Change AVCTP revision to 1.4

9 years agoMerge "DO NOT MERGE Change AVCTP revision to 1.4" into lmp-mr1-modular-dev
Justin Koh [Tue, 24 Mar 2015 18:48:11 +0000 (18:48 +0000)]
Merge "DO NOT MERGE Change AVCTP revision to 1.4" into lmp-mr1-modular-dev

9 years agoRewrite alarm to avoid drift in the periodic version
Zach Johnson [Mon, 23 Mar 2015 20:59:10 +0000 (13:59 -0700)]
Rewrite alarm to avoid drift in the periodic version

Also improve names of some functions.

Change-Id: Ia5aeebc8226ce5c36abdd372ea4de5195314e273

9 years agoMerge "Remove unused remote_name_* variables" into m-wireless-dev
Andre Eisenbach [Tue, 24 Mar 2015 01:11:01 +0000 (01:11 +0000)]
Merge "Remove unused remote_name_* variables" into m-wireless-dev

9 years agoRemove unused remote_name_* variables
Andre Eisenbach [Tue, 24 Mar 2015 01:07:54 +0000 (18:07 -0700)]
Remove unused remote_name_* variables

Change-Id: Ib0db95646564439a9458542db9b1891ea818c5d7

9 years agoMerge "Style guide: Use C99 style flexible arrays" into m-wireless-dev
Andre Eisenbach [Tue, 24 Mar 2015 00:44:36 +0000 (00:44 +0000)]
Merge "Style guide: Use C99 style flexible arrays" into m-wireless-dev

9 years agoStyle guide: Use C99 style flexible arrays
Andre Eisenbach [Thu, 19 Mar 2015 22:38:34 +0000 (15:38 -0700)]
Style guide: Use C99 style flexible arrays

Change-Id: I012d9f4195833e2c6c9a5c953e71b7a7b5847673

9 years agoDelete 0 index LE scan filter at inquiry cancel
Nitin Arora [Fri, 26 Sep 2014 21:05:24 +0000 (14:05 -0700)]
Delete 0 index LE scan filter at inquiry cancel

This patch ensures that the 0 index filter is deleted when the
inquiry is cancelled due to initiation of a direct connection
from inquiry or due to return from the Settings menu screen

Change-Id: I281c6ace15b17fb7e413c42d36e016b8f82d2ace

9 years agoIgnore LE security request if BR/EDR pairing is ongoing
Nitin Arora [Sat, 22 Mar 2014 01:28:04 +0000 (18:28 -0700)]
Ignore LE security request if BR/EDR pairing is ongoing

This change checks the btm state to see if a BR/EDR pairing
is ongoing when a security request is received from a remote
device.

Change-Id: Ia3f9c9db6c1aed944857174528c14ed66f184152

9 years agoMerge "Extend Bluetooth startup timeout from 3s to 8s" into m-wireless-dev
Andre Eisenbach [Mon, 23 Mar 2015 20:26:23 +0000 (20:26 +0000)]
Merge "Extend Bluetooth startup timeout from 3s to 8s" into m-wireless-dev

9 years agoMerge "Reset LE connecting flag on disconnect only if BDA matches" into m-wireless-dev
Andre Eisenbach [Mon, 23 Mar 2015 20:21:42 +0000 (20:21 +0000)]
Merge "Reset LE connecting flag on disconnect only if BDA matches" into m-wireless-dev

9 years agoMerge "Remove ACL connection reference counting" into m-wireless-dev
Andre Eisenbach [Mon, 23 Mar 2015 20:12:53 +0000 (20:12 +0000)]
Merge "Remove ACL connection reference counting" into m-wireless-dev

9 years agoReset LE connecting flag on disconnect only if BDA matches
Nitin Arora [Fri, 6 Jun 2014 22:21:25 +0000 (15:21 -0700)]
Reset LE connecting flag on disconnect only if BDA matches

This change will make sure that the flag representing that BLE device
is connecting is made false only if a disconnection of the same
LE device is received, whose connection is in progress. This is ensured
by matching the bda of the disconnecting device and the LE device which
is in connecting state. This is to prevent a BR/EDR disconnection from
cancelling the connection timeout of an LE device

Change-Id: Ia5b47681479dc0be217cdfc3e15af9ca5323575c

9 years agoSend GATT discovery complete only if discovery is active
Nitin Arora [Tue, 18 Feb 2014 23:28:59 +0000 (15:28 -0800)]
Send GATT discovery complete only if discovery is active

This change forces a discovery complete event at gatt close
event only if service discovery is in progress and not when
inquiry is on going. Otherwise, a false discovery complete
is sent to the host, which cause a never ending inquiry.

Change-Id: I7ca207382b04ed233c149ca50040dab993067870

9 years agoExtend Bluetooth startup timeout from 3s to 8s
Andre Eisenbach [Mon, 23 Mar 2015 16:46:08 +0000 (09:46 -0700)]
Extend Bluetooth startup timeout from 3s to 8s

Change-Id: I0e8af541bf9c5837d92b5ccc047b3dd9d3765767

9 years agoDO NOT MERGE Change AVCTP revision to 1.4
Andre Eisenbach [Fri, 20 Mar 2015 19:48:40 +0000 (12:48 -0700)]
DO NOT MERGE Change AVCTP revision to 1.4

Change-Id: I0ab393e9cb9e75a056aeaf1014861a012001781f

9 years agoam 20f21b85: (-s ours) am 02c53050: DO NOT MERGE - Remove ACL connection reference...
Andre Eisenbach [Fri, 20 Mar 2015 17:05:19 +0000 (17:05 +0000)]
am 20f21b85: (-s ours) am 02c53050: DO NOT MERGE - Remove ACL connection reference counting

* commit '20f21b85bd0a5737aa7971aa4575334626eaeff5':
  DO NOT MERGE - Remove ACL connection reference counting

9 years agoam 02c53050: DO NOT MERGE - Remove ACL connection reference counting
Andre Eisenbach [Fri, 20 Mar 2015 16:15:12 +0000 (16:15 +0000)]
am 02c53050: DO NOT MERGE - Remove ACL connection reference counting

* commit '02c530503feb46150d013bf87b0570a781fb10ec':
  DO NOT MERGE - Remove ACL connection reference counting

9 years agoRemove ACL connection reference counting
Andre Eisenbach [Thu, 19 Mar 2015 22:15:05 +0000 (15:15 -0700)]
Remove ACL connection reference counting

In addition to maintaining ACL link control blocks, which carry a
"in_use" flag, ACL links are reference counted in the num_acl links
variable.

The reference counting is thrown off when a SM connection initiated for
pairing is followed up by a GATT connection after pairing completes. The
2nd connection is counted against num_acl, even so other parts of the
code recognize the connection as a duplicate ACL connection to the same
BDA.

This patch removes the unecessary reference counting and relies on the
control block status instead, which is correctly maintained.

Bug: 19019189
Change-Id: I0a5f4d279fc634689d0e8c0ef4ad639d0ce5d687

9 years agoDO NOT MERGE - Remove ACL connection reference counting
Andre Eisenbach [Thu, 12 Mar 2015 17:09:14 +0000 (10:09 -0700)]
DO NOT MERGE - Remove ACL connection reference counting

In addition to maintaining ACL link control blocks, which carry a
"in_use" flag, ACL links are reference counted in the num_acl links
variable.

The reference counting is thrown off when a SM connection initiated for
pairing is followed up by a GATT connection after pairing completes. The
2nd connection is counted against num_acl, even so other parts of the
code recognize the connection as a duplicate ACL connection to the same
BDA.

This patch removes the unecessary reference counting and relies on the
control block status instead, which is correctly maintained.

The BTM_BUSY_LEVEL_CHANGE_INCLUDED flag encapsulating the num_acl
tracking should be removed in the future.

Bug: 19019189
Change-Id: I4cc88c24f1c4d1273361d879bc62e9fade3f3ee9

9 years agoDemote, cleanup and extend observed logging
Chris Manton [Thu, 12 Mar 2015 16:22:48 +0000 (09:22 -0700)]
Demote, cleanup and extend observed logging

9 years agoCode formatting and language feature additions to the style guide.
Sharvil Nanavati [Thu, 12 Mar 2015 18:53:44 +0000 (11:53 -0700)]
Code formatting and language feature additions to the style guide.

9 years agoUse fully qualified path for btcore includes.
Sharvil Nanavati [Thu, 12 Mar 2015 22:55:21 +0000 (15:55 -0700)]
Use fully qualified path for btcore includes.

9 years agoUse fully qualified path for OSI includes.
Sharvil Nanavati [Thu, 12 Mar 2015 22:42:50 +0000 (15:42 -0700)]
Use fully qualified path for OSI includes.

9 years agoStart putting together a style guide for bluedroid.
Sharvil Nanavati [Wed, 11 Mar 2015 04:14:40 +0000 (21:14 -0700)]
Start putting together a style guide for bluedroid.

It's far from complete but provides a starting point for codifying
best practices and guidelines for developing in this codebase.

9 years agoAtomically update config files.
Sharvil Nanavati [Thu, 12 Mar 2015 06:50:42 +0000 (23:50 -0700)]
Atomically update config files.

There's a race condition on shutdown between Java and native code.
A stack shutdown is issued from Java and in the meantime the
calling thread calls System.exit(0). If that line is reached before
the native code has had a chance to shut down cleanly, the system
could be stuck in a bad state.

This change uses rename(2) to replace an existing config file
atomically instead of truncating, writing, and then flushing. In
case of a crash or the race condition above, the config file will
still be valid.

There's an implementation gotcha. The config saving code uses ".new"
as a suffix on the original filename to write to a temporary file.
If a file by that name already exists, it will be overwritten.

9 years agoAdd ability to set periodic alarms
Zach Johnson [Wed, 11 Mar 2015 08:55:27 +0000 (01:55 -0700)]
Add ability to set periodic alarms

Adds alarm_set_periodic so the alarm code can have more
contextual information when rescheduling alarms.

Problem: A2DP would stream for a few seconds and then
stop working.

Cause: The Java garbage collector. Bluedroid reaches out
to javaland to acquire and release the wake lock. Alarm was
always reaching out to get the wake lock when it scheduled a
short timeout. If GC kicked in during that call out to make
sure we have the wake lock, it could take more than 100ms to
get back us. That would screw over the alarm implementation
particularly for small 20ms timers.

So now if the wake lock was already acquired, we don't try to
reacquire it.

Cool. But we still have thrashing. Why? Because the alarm code
doesn't know the alarm is actually being used in a periodic way.

Here's what used to happen:

alarm expires
alarm is removed
reschedule
alarm callback is called
alarm callback sets the alarm again
alarm is added
reschedule

The problem is the first reschedule will get rid of the wake lock
if the next alarm is too far out or doesn't exist, meaning the next
reschedule needs to get the wake lock again.

With the extra periodicity information we can eliminate the
unnecessary intermediate reschedule, meaning no thrashing on the
wake lock. yay!

9 years agoAllocate a2d list properly
Chris Manton [Fri, 6 Mar 2015 22:41:32 +0000 (14:41 -0800)]
Allocate a2d list properly

Some other minor cosmetic improvements

9 years agoRemove dead code checks for BLE support
Zach Johnson [Thu, 5 Mar 2015 23:24:40 +0000 (15:24 -0800)]
Remove dead code checks for BLE support

On some build configurations (looking at you, hammerhead) the controller
hasn't come up before BTU init stuff happens.

These BLE support checks were triggering the assert that ensures the
controller module has loaded when you try to access it.

However, these BLE support checks were dead code because the outcome was
the same regardless in either case (returning from the function). Removed.

It's a good thing these asserts were in place, because if these checks
were actually important to the correctness of the code we'd be reading
bad state (BLE supported would always be false during this stage) and
we would have no idea. Yay asserts!

9 years agoRejig hci upwards dispatch
Zach Johnson [Wed, 4 Mar 2015 22:47:00 +0000 (14:47 -0800)]
Rejig hci upwards dispatch

Split events and acl data in hci dispatch, and dispatch events by event code

Future code will now be able to dynamically tie into hci events, instead
of relying on a hard coded routing.

9 years agoReinstate btsnoop last log saving
Zach Johnson [Wed, 4 Mar 2015 22:06:13 +0000 (14:06 -0800)]
Reinstate btsnoop last log saving

Waited for the merge to complete before reworking
the feature into the stack.

9 years agoPrevent Memory overbound and initialize variables
VenkatRaghavan VijayaRaghavan [Fri, 6 Feb 2015 06:20:39 +0000 (22:20 -0800)]
Prevent Memory overbound and initialize variables

1. Fix for initializing all the un-initialized variables
2. Potential strncpy overbound

Bug: 19417758

9 years agoResolved trace level issue for AVDTP
VenkatRaghavan VijayaRaghavan [Tue, 10 Feb 2015 15:35:10 +0000 (07:35 -0800)]
Resolved trace level issue for AVDTP

Root Cause: Trace messages are getting logged

When setting TRC_AVDT=5 the trace level doesn't take effect. Due to
multiple initialization points the bt_stack.conf value was overwritten

Bug: 19417758

9 years agoMove list function comments to the header file
Zach Johnson [Mon, 2 Mar 2015 22:42:02 +0000 (14:42 -0800)]
Move list function comments to the header file

9 years agoMove hashmap function comments to the header file
Zach Johnson [Mon, 2 Mar 2015 22:28:54 +0000 (14:28 -0800)]
Move hashmap function comments to the header file

9 years agoRemove more GKI code.
Sharvil Nanavati [Sun, 28 Dec 2014 10:25:02 +0000 (02:25 -0800)]
Remove more GKI code.

This change removes all remaining GKI task remnants as well as
a few timer and buffer bits.

9 years agoRemove dependency on GKI tasks from BTIF media task.
Sharvil Nanavati [Mon, 2 Mar 2015 23:34:21 +0000 (15:34 -0800)]
Remove dependency on GKI tasks from BTIF media task.

The previous code started a thread and posted a long-running function
to the thread's event loop. In essence, it created a thread and ran
a custom thread main that did its own event handling using GKI_wait.

The new code doesn't use GKI_wait or GKI_send_event at all. Instead,
it uses thread_post and the thread's reactor to enqueue and dispatch
events.

9 years agoDon't call GKI_send_event on BTU task since it's not a GKI task anymore.
Sharvil Nanavati [Mon, 2 Mar 2015 23:02:39 +0000 (15:02 -0800)]
Don't call GKI_send_event on BTU task since it's not a GKI task anymore.

9 years agoRemove GKI timers
Sharvil Nanavati [Mon, 2 Mar 2015 22:56:24 +0000 (14:56 -0800)]
Remove GKI timers

9 years agoAdding some documentation for the power management flow.
June R. Tate-Gans [Thu, 9 Oct 2014 21:16:25 +0000 (14:16 -0700)]
Adding some documentation for the power management flow.

9 years agoAdd sniff changed log statement on the mode changed event
Zach Johnson [Wed, 28 Jan 2015 19:16:15 +0000 (11:16 -0800)]
Add sniff changed log statement on the mode changed event

This will ensure we log accordingly when the other end
decides to put the connection into sniff mode.

9 years agoCollapse BNEP #defines that don't need to be configurable.
Sharvil Nanavati [Wed, 21 Jan 2015 07:12:31 +0000 (23:12 -0800)]
Collapse BNEP #defines that don't need to be configurable.

In some instances, defining these macros to FALSE would result in
broken runtime behavior (e.g. UUID fields containing uninitialized
values). This change collapses the following defines:

BNEP_SUPPORTS_PROT_FILTERS
BNEP_SUPPORTS_MULTI_FILTERS
BNEP_SUPPORTS_DEBUG_DUMP
BNEP_SUPPORTS_ALL_UUID_LENGTHS

9 years agoAdd a new l2cap_client class.
Sharvil Nanavati [Mon, 19 Jan 2015 18:03:08 +0000 (10:03 -0800)]
Add a new l2cap_client class.

The code to negotiate an L2CAP connection is currently scattered
and duplicated throughout the codebase. Each profile that uses
L2CAP has its own explicit or implicit state machine to go establish
a connection and go through the handshake. This class is intended
to consolidate that duplicated code and provide a usable API for
L2CAP client connections.

9 years agoAdd connection-specific function L2CA_SetConnectionCallbacks.
Sharvil Nanavati [Sun, 18 Jan 2015 06:12:38 +0000 (22:12 -0800)]
Add connection-specific function L2CA_SetConnectionCallbacks.

This function allows a client to specify callback routines per-
connection instead of per-PSM.

9 years agoproperty api unification, naming and testing
Chris Manton [Thu, 8 Jan 2015 18:47:59 +0000 (10:47 -0800)]
property api unification, naming and testing

9 years agoAdd a reference counted buffer implementation.
Sharvil Nanavati [Mon, 15 Dec 2014 09:37:59 +0000 (01:37 -0800)]
Add a reference counted buffer implementation.

This implementation introduces the notion of a 'slice'. A slice is
simply a sub-buffer of the original buffer. Slices refer to their
parent buffer so no memory is copied and slice creation becomes an
O(1) operation. Although I'm introducing a new concept, in practice,
a slice is indistinguishable from a buffer (they share a type and
all operations).

I expect slices to be used heavily during packet construction. For
example, an RFCOMM implementation would request a buffer from the
L2CAP layer (which may in turn request a buffer from the HCI layer).
The L2CAP layer would reserve some space in the buffer for its header
and return a slice to the RFCOMM layer.

9 years agoCollapse more feature flags.
Sharvil Nanavati [Mon, 29 Dec 2014 18:24:15 +0000 (10:24 -0800)]
Collapse more feature flags.

Start reviewing in include/bt_target.h.

9 years agoCollapse RFCOMM_INCLUDED and GAP_INCLUDED guards.
Sharvil Nanavati [Mon, 29 Dec 2014 06:29:42 +0000 (22:29 -0800)]
Collapse RFCOMM_INCLUDED and GAP_INCLUDED guards.

Both of these features are always available in bluedroid.

9 years agoDelete unused Broadcom-specific extensions API.
Sharvil Nanavati [Mon, 29 Dec 2014 12:51:27 +0000 (04:51 -0800)]
Delete unused Broadcom-specific extensions API.

9 years agoEliminate unusable wcassert code in favor of plain old C asssert.
Sharvil Nanavati [Mon, 29 Dec 2014 12:23:30 +0000 (04:23 -0800)]
Eliminate unusable wcassert code in favor of plain old C asssert.

The WC_* macros only expand to something meaningful when _DEBUG is
also defined. However, on enabling _DEBUG, bluedroid fails to build
because the wc_assert function is not defined anywhere. We can get
what I imagine is the equivalent behavior by switching over to the
standard C assert macro.

9 years agoDrop duplicate profile connection requests
Zach Johnson [Mon, 12 Jan 2015 21:56:46 +0000 (13:56 -0800)]
Drop duplicate profile connection requests

If profile connection requests come in too quickly
for us to handle, clients can effectively DoS the bluetooth
stack.

We used to see out of buffer errors because the requests
were batched up and sitting on buffers the rest of the stack
needed. With the switch to pure allocation we didn't see that
specific problem anymore, but we were still running into the
sanity assert.

Bug: 18323666

9 years agoData type representing the bluetooth iac parameter
Chris Manton [Thu, 8 Jan 2015 17:19:20 +0000 (09:19 -0800)]
Data type representing the bluetooth iac parameter

9 years agoFirst pass at the bluedroid profile manager.
June R. Tate-Gans [Wed, 7 Jan 2015 01:38:29 +0000 (17:38 -0800)]
First pass at the bluedroid profile manager.

9 years agoRename legacy uuid_copy to not conflict
Chris Manton [Wed, 7 Jan 2015 21:59:14 +0000 (13:59 -0800)]
Rename legacy uuid_copy to not conflict

9 years agoAdd size_t inclusion
Chris Manton [Wed, 7 Jan 2015 21:54:24 +0000 (13:54 -0800)]
Add size_t inclusion

9 years agobt property object
Chris Manton [Wed, 7 Jan 2015 21:34:18 +0000 (13:34 -0800)]
bt property object

9 years agoAdd bdcopy method
Chris Manton [Wed, 7 Jan 2015 21:34:06 +0000 (13:34 -0800)]
Add bdcopy method

9 years agoRemove some more unused functions in btm_acl
Zach Johnson [Wed, 7 Jan 2015 17:48:50 +0000 (09:48 -0800)]
Remove some more unused functions in btm_acl

9 years agoRemove unused read link policy + friends
Zach Johnson [Wed, 7 Jan 2015 17:37:20 +0000 (09:37 -0800)]
Remove unused read link policy + friends

Was never called, and the removal of which obviated
a lot of other code.

9 years agoRemove unused link supervision timeout code
Zach Johnson [Wed, 7 Jan 2015 17:18:28 +0000 (09:18 -0800)]
Remove unused link supervision timeout code

The btm callback was never set, so this code
did nothing useful.