OSDN Git Service
Sharvil Nanavati [Thu, 12 Mar 2015 18:53:44 +0000 (11:53 -0700)]
Code formatting and language feature additions to the style guide.
Sharvil Nanavati [Thu, 12 Mar 2015 22:55:21 +0000 (15:55 -0700)]
Use fully qualified path for btcore includes.
Sharvil Nanavati [Thu, 12 Mar 2015 22:42:50 +0000 (15:42 -0700)]
Use fully qualified path for OSI includes.
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.
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.
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!
Chris Manton [Fri, 6 Mar 2015 22:41:32 +0000 (14:41 -0800)]
Allocate a2d list properly
Some other minor cosmetic improvements
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!
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.
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.
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
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
Zach Johnson [Mon, 2 Mar 2015 22:42:02 +0000 (14:42 -0800)]
Move list 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
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.
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.
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.
Sharvil Nanavati [Mon, 2 Mar 2015 22:56:24 +0000 (14:56 -0800)]
Remove GKI timers
June R. Tate-Gans [Thu, 9 Oct 2014 21:16:25 +0000 (14:16 -0700)]
Adding some documentation for the power management flow.
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.
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
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.
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.
Chris Manton [Thu, 8 Jan 2015 18:47:59 +0000 (10:47 -0800)]
property api unification, naming and testing
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.
Sharvil Nanavati [Mon, 29 Dec 2014 18:24:15 +0000 (10:24 -0800)]
Collapse more feature flags.
Start reviewing in include/bt_target.h.
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.
Sharvil Nanavati [Mon, 29 Dec 2014 12:51:27 +0000 (04:51 -0800)]
Delete unused Broadcom-specific extensions API.
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.
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
Chris Manton [Thu, 8 Jan 2015 17:19:20 +0000 (09:19 -0800)]
Data type representing the bluetooth iac parameter
June R. Tate-Gans [Wed, 7 Jan 2015 01:38:29 +0000 (17:38 -0800)]
First pass at the bluedroid profile manager.
Chris Manton [Wed, 7 Jan 2015 21:59:14 +0000 (13:59 -0800)]
Rename legacy uuid_copy to not conflict
Chris Manton [Wed, 7 Jan 2015 21:54:24 +0000 (13:54 -0800)]
Add size_t inclusion
Chris Manton [Wed, 7 Jan 2015 21:34:18 +0000 (13:34 -0800)]
bt property object
Chris Manton [Wed, 7 Jan 2015 21:34:06 +0000 (13:34 -0800)]
Add bdcopy method
Zach Johnson [Wed, 7 Jan 2015 17:48:50 +0000 (09:48 -0800)]
Remove some more unused functions in btm_acl
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.
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.
Chris Manton [Wed, 7 Jan 2015 19:07:04 +0000 (11:07 -0800)]
uuid_test
Chris Manton [Thu, 20 Nov 2014 06:15:35 +0000 (22:15 -0800)]
Device class implementation
Chris Manton [Tue, 6 Jan 2015 23:45:41 +0000 (15:45 -0800)]
Add compile time checks
Chris Manton [Tue, 11 Nov 2014 20:14:52 +0000 (12:14 -0800)]
Add more uuid methods
Zach Johnson [Wed, 5 Nov 2014 05:43:33 +0000 (21:43 -0800)]
Add a simple classic peer
Zach Johnson [Wed, 5 Nov 2014 22:29:31 +0000 (14:29 -0800)]
Add a hash function for bluetooth addresses
Also includes simple tests for it + disambiguates
including hash_function.h throughout the stack.
Zach Johnson [Wed, 5 Nov 2014 22:25:49 +0000 (14:25 -0800)]
Add key equality function option for hash_map
This will allow us to do deeper equality on things like
bluetooth addresses where the actual pointers are different
but the values of the bluetooth addresses are the same.
Zach Johnson [Sat, 27 Dec 2014 04:29:27 +0000 (20:29 -0800)]
Clean up unused functions in btm_sec
Zach Johnson [Thu, 25 Dec 2014 03:09:22 +0000 (19:09 -0800)]
Remove unused security abort callback
The callback in BTA was null, so it never was actually
used.
Zach Johnson [Wed, 24 Dec 2014 23:59:14 +0000 (15:59 -0800)]
Remove link key request callback
The core security manager stores whether we have link keys
for each peer. This other call up to the bta device manager
to see if it has link keys is a dead end and does nothing.
Zach Johnson [Sat, 27 Dec 2014 01:51:03 +0000 (17:51 -0800)]
Canonicalize HCI logtags with bt_ prefix
Zach Johnson [Thu, 25 Dec 2014 05:07:38 +0000 (21:07 -0800)]
Add bash script for running unit tests
This script helps simplify pushing and running bluedroid unit tests.
You can run all of the known ones, or provide names of selected unit
test executables you wish to run.
Sharvil Nanavati [Mon, 29 Dec 2014 08:56:46 +0000 (00:56 -0800)]
Rename Bluetooth binaries to use the net_ and net_test_ prefixes.
Steve Gu [Fri, 7 Nov 2014 23:05:06 +0000 (15:05 -0800)]
Sometimes I forget stopping shell before running bdtest.
Make this check automatic and print out a friendly message for reminder.
Sharvil Nanavati [Fri, 26 Dec 2014 06:17:09 +0000 (22:17 -0800)]
Remove unnecessary newlines at the end of log statements.
Sharvil Nanavati [Wed, 24 Dec 2014 07:08:58 +0000 (23:08 -0800)]
Add platform-independent logging macros to OSI.
These macros should replace ALOG* and the various trace macros
used throughout bluedroid. This change eliminates all uses of the
ALOG* macros in favor of the new ones.
Zach Johnson [Mon, 8 Sep 2014 19:10:30 +0000 (12:10 -0700)]
Remove unused ACL packet size getters, remove unused timer entity
Sharvil Nanavati [Fri, 12 Dec 2014 07:19:44 +0000 (23:19 -0800)]
Extend bdtool to accept / initiate SCO connections.
This is a great way to run controlled audio quality experiments for
the Handsfree profile.
Sharvil Nanavati [Fri, 12 Dec 2014 09:52:55 +0000 (01:52 -0800)]
Remove unused shell script, gen-buildcfg.sh.
Sharvil Nanavati [Sun, 7 Dec 2014 22:15:09 +0000 (14:15 -0800)]
Add RFCOMM result code string for an unspecified error.
The code enumerating the list of possible error codes is not
a C enum and the original authors skipped a value. As a result, the
table mapping error codes to strings is off by one after that skipped
value. I'm inserting a string for that error code even though it's not
defined so the strings line up with the actual error.
June R. Tate-Gans [Tue, 2 Dec 2014 20:48:03 +0000 (12:48 -0800)]
Adding some logging for the close states for RFCOMM connections.
Sharvil Nanavati [Sat, 15 Nov 2014 08:17:35 +0000 (00:17 -0800)]
Fix bug in SDP server where it would get into an infinite loop.
If the SDP database is mutated while a client is fetching SDP records,
we can end up in an infinite request/response loop. Specifically, if
an SDP record is deleted after a client has received the first fragment
of a multi-fragment response, the server will not be able to complete
the request. Instead, it will return the same continuation token back
to the client which will request the next fragment and the server,
again, will return the same continuation token. This process repeats
forever, resulting in a large amount of unncessary BT traffic and
power costs on both devices.
Unfortunately, this seems to be a design flaw in the current SDP
server implementation. This change simply detects the above condition
and aborts the transaction entirely by returning an error to the
client. Future changes will eliminate this class of problem entirely.
Sharvil Nanavati [Fri, 14 Nov 2014 01:29:21 +0000 (17:29 -0800)]
Introduce a growing array class.
Arrays are useful for storing a collection of small objects where
linked list node allocations would be a lot of overhead. They are
also useful for random access through the container. Lastly, this
implementation assumes copy semantics which are intentionally
different from list's reference semantics (since objects are assumed
to be smaller).
The current interface is intentionally sparse.
Zach Johnson [Thu, 13 Nov 2014 21:55:32 +0000 (13:55 -0800)]
Increase GKI buffer size
Bug:
18324148
Chris Manton [Tue, 11 Nov 2014 21:15:13 +0000 (13:15 -0800)]
Add counter unit tests
Chris Manton [Thu, 13 Nov 2014 00:31:43 +0000 (16:31 -0800)]
Explicitly add include paths
Allocation test harness included relatively local
header allocation_tracker.h. Change to include
absolute header location from bluedroid root.
Sharvil Nanavati [Thu, 13 Nov 2014 09:04:19 +0000 (01:04 -0800)]
Enable allocation tracking for eng and userdebug builds.
This change will result in a constant increase in memory utilization
per allocation but will help us catch memory errors earlier.
Sharvil Nanavati [Wed, 5 Nov 2014 22:48:58 +0000 (14:48 -0800)]
Add a "setDiscoverable" command to hci.
June R. Tate-Gans [Tue, 11 Nov 2014 00:34:45 +0000 (16:34 -0800)]
Adding in some additional, but critical, logs.
Sharvil Nanavati [Fri, 7 Nov 2014 02:34:06 +0000 (18:34 -0800)]
Update module names to not use C preprocessor and to be at top of headers.
Chris Manton [Fri, 19 Sep 2014 17:49:50 +0000 (10:49 -0700)]
Replace BUFFER_Q with list_t #2
rcv_hold_q -> rcv_pending_q
Chris Manton [Thu, 18 Sep 2014 23:19:26 +0000 (16:19 -0700)]
Replace BUFFER_Q with list_t
soc_queue
Chris Manton [Mon, 22 Sep 2014 21:46:41 +0000 (14:46 -0700)]
General tidy up of L2CAP flow control
- Alphabetize include files
- Add asserts
- Ensure static funtions are marked as such
- Remove unnecessary logging
Chris Manton [Mon, 22 Sep 2014 20:41:51 +0000 (13:41 -0700)]
Properly iterate when removing from list
Ensure we hand off the node iterator before
proceeding to remove from the list.
Chris Manton [Fri, 17 Oct 2014 17:58:53 +0000 (10:58 -0700)]
Add error checking when getting property
Also added PAN API
Chris Manton [Fri, 7 Nov 2014 01:08:20 +0000 (17:08 -0800)]
Expand include pathnames and add bd root path
Hopefully this will squash the sem_t semaphore_t collision
Zach Johnson [Wed, 12 Nov 2014 06:57:38 +0000 (22:57 -0800)]
Back GKI buffers with malloc
It looks like we're somehow getting NULL back from buffer allocation.
Backing GKI buffers with malloc should fix this.
Bug:
18324148
Zach Johnson [Wed, 3 Dec 2014 23:18:49 +0000 (15:18 -0800)]
ungkibufferize the profile queue, use assert
ASSERTC isn't a real assert. It just prints a message and allows the
code to carry on. Switch to asserts so the exception condition is
evident in the crash log.
Make the profile queue use osi_malloc/free instead of gki buffers, so it
can't drain the buffer pool.
Sharvil Nanavati [Sat, 15 Nov 2014 01:04:46 +0000 (17:04 -0800)]
Print out every power management mode switch initiated from the host.
Zach Johnson [Tue, 11 Nov 2014 07:42:36 +0000 (23:42 -0800)]
Fixed HAL layer ignore state handling
If the hci layer ever entered the ignore state,
synchronization death was immenent. This patch fixes that.
Also adds additional info print out when entering the ignored state.
Adds tests for the ignored state.
Doesn't solve the problem of why we were getting NULL back from
the buffer allocator, though. (The trigger for the ignored state.)
Bug:
18156298
Sharvil Nanavati [Wed, 5 Nov 2014 10:09:42 +0000 (02:09 -0800)]
Add a command line flag to skip sanity test suite.
Sharvil Nanavati [Wed, 5 Nov 2014 09:21:58 +0000 (01:21 -0800)]
bdtest: read the paired device's bdaddr from the stack config file.
Zach Johnson [Sat, 1 Nov 2014 23:16:11 +0000 (16:16 -0700)]
Remove ptim and associated GKI timer functions
Zach Johnson [Thu, 26 Feb 2015 23:33:35 +0000 (15:33 -0800)]
Remove some remaining references to message based timers
Some of this gets cleaned up in a later CL during the merge
but removing them now so the ptim removal change compiles.
Zach Johnson [Sat, 1 Nov 2014 22:13:04 +0000 (15:13 -0700)]
Remove unused link key functions from devctl
The security manager looks for the link key notification event,
so it doesn't use these read/write link key functions at all.
Steve Gu [Tue, 4 Nov 2014 01:05:58 +0000 (17:05 -0800)]
Modify bdtest to enable running individual tests by their name.
Zach Johnson [Fri, 31 Oct 2014 04:40:13 +0000 (21:40 -0700)]
Remove the afh functions from btm_devctl
The callers were removed in a previous CL, so these
are no longer necessary.
Zach Johnson [Fri, 31 Oct 2014 04:02:58 +0000 (21:02 -0700)]
Remove BTA_CheckEirData, a direct redefinition of BTM_CheckEirData
Gentle move towards using more of BTM directly.
Zach Johnson [Fri, 31 Oct 2014 02:29:12 +0000 (19:29 -0700)]
Remove some functionredefinitions from bta dm
These weren't used. And were another layer of indirection
for things that already existed. One reason for the initial
implementation is that they would ensure the actual calls
happen in a known thread.
Sharvil Nanavati [Thu, 16 Oct 2014 01:30:49 +0000 (18:30 -0700)]
Use correct service ID for A2DP source to make way for A2DP sink.
Sharvil Nanavati [Wed, 15 Oct 2014 01:46:32 +0000 (18:46 -0700)]
L2CAP: expose a function to return the RCID and ACL handle for a given LCID.
Chris Manton [Fri, 31 Oct 2014 21:54:51 +0000 (14:54 -0700)]
Move controller module to device directory
Chris Manton [Fri, 31 Oct 2014 17:41:37 +0000 (10:41 -0700)]
Unused function
Chris Manton [Wed, 29 Oct 2014 04:30:03 +0000 (21:30 -0700)]
Remove unused inquiry DB functions
These are not used for the inquiry database.
Chris Manton [Fri, 24 Oct 2014 16:12:41 +0000 (09:12 -0700)]
Remove always true definition BTM_EIR_SERVER_INCLUDED
Chris Manton [Thu, 23 Oct 2014 23:28:28 +0000 (16:28 -0700)]
Removing unused function BTA_DmSetScanParam()
Chris Manton [Thu, 23 Oct 2014 19:36:14 +0000 (12:36 -0700)]
Remove always true BTM_USE_INQ_RESULTS_FILTER
Chris Manton [Thu, 23 Oct 2014 19:30:15 +0000 (12:30 -0700)]
Remove always false flag BTM_BYPASS_EVENT_FILTERING
Chris Manton [Tue, 21 Oct 2014 20:55:24 +0000 (13:55 -0700)]
Instrument data flow a bit
Use counters to grab some select data metrics.
Sharvil Nanavati [Mon, 27 Oct 2014 23:56:42 +0000 (16:56 -0700)]
Don't dispatch connections in the connection queue until stack comes up.
Bug:
18139425
Chris Manton [Wed, 13 Aug 2014 23:38:57 +0000 (16:38 -0700)]
counter implementation