BT_BOND: Report repeated_attempts failure to application Change-Id: Id0d5a323daabcd0a50193bb7bc6fde18fde3c5ad

Bluetooth: Added SPP version 1.2 to SDP record.
Change-Id: Ib0ed919d6145078fb9fc4214caae15ab6e7be780

Bluetooth: Fix to decrease power during OPP TX/RX
Change-Id: Ied1173776f9bf2dc89b8e84e68d6217932a01607

Bluetooth: GAP: Don't update short name if the device paired
Change-Id: Ia64e1e90aae8c4e0cc52643ce3bbbb1332fe5b66

Bluetooth: Notify BT APP about alias as the name if present
Change-Id: Id8a093b1503eb3f308f466f30c1a4a6f4c250594

Bluetooth: Reset the pairing_cb for bredr/cross key pairing address
Change-Id: I50ac058acc2703b1ecc1c0cfb604fd67aff63c67

Fix for error reported by Static analysis tool
Change-Id: If6d2c208e12a3e71ecd9d4d375ef6f8b81e17532

Saving Bluetooth name to Max 248 character only.
Change-Id: I856a66e863cec68bee38762903a0b762ab0626d2

Just clear IB_CFG_DONE on receiving Peer config request when channel open
Change-Id: I8deca0c8ff73faafc3da94dcd9ea55e06bd8a31d

BT: Pairing fails when it coincides with role switch with 3rd device
Change-Id: I7b213ac73ba5107f5da7d11305cd349e4d310062

Disconnect link on receiving Pin/Key missing error
Change-Id: I2b0266e3f600fe07d5750a96e73da9594c66ce60

Bluetooth: Dynamic ACL buffer allocation based on ACL Priority
Change-Id: I8f7742ae193998643ff2a12bf87f9874844ee0f7

Bluetooth: Avoid excessive logging for SOC logging Handle
Change-Id: I431b94f05dfb2ee048efab4d7c6e587a2d81769a

BT L2CAP RFCOMM: Increase max no of simultaneous L2CAP clients(1/2)
Change-Id: I957177e26ae33677739244386ae9a181e2185d0a

RFCOMM: HFP connection fails after BT reset with IOT carkit
Change-Id: I735b6534e06dceffe741656f50ed9b19fcef91b2

Bluetooth: Handle auth req in bta_dm_pinname_cback
Change-Id: I5efa73c3f8079b5198ff672bd1d59a6ec52ec4f3

Bluetooth: SDP: Syncronize sdp callback functions
Change-Id: Idb7a3e0a011c8ecd0d127d110e67e6a9a13a8ee9

Bluetooth: Dont initiate rnr from pinreq if rnr in progress
Change-Id: I129044dca030bcf28495c30f4536bda5936e79a2

GAP : Host sends neg link key for headset reconnection
Change-Id: I25ae78d7f5f85043943ed752d54dc2fee40c4fa6

GAP : PIN popup shown for dead legacy remotes
Change-Id: I29bb6ae17dc5a83459cc5cd4c8cfc6ae59bb4504

GAP: Accept incoming connection with slave role
Change-Id: I41bd78f1d25f1fc2985f1cf226a54d6819be968b

GAP: Delete linkkey while stack retrying security
Change-Id: I46ad80fa76c5365fe2f8c9ccf87e1dc9db153756

GAP: Don't fail pairing when soc reject conn with busy
Change-Id: Ic969ab1ebe8baa73bde5ede46d088f6cd377eb1d

GAP: Don't initiate switch role when remote not supporting
Change-Id: I54648551338a1690c6b77c7df6dc4aa535ce999f

GAP: Don't remove remote from paired list when connection timedout
Change-Id: Ia9867a8c417c05a5050ea9814052d68be1cfe6a7

GAP: Host initiates sniff during OPP file transfer
Change-Id: I1a4efd61323c75d7a5f4b0b483e1230b3a160aa7

GAP: Move Pairing retrial mechanism to btif layer
Change-Id: I179f1ac3ac4ee4a0dbfd653ffca26574f576da94

GAP: Not able to unpair dumo device from settings menu
Change-Id: I4fcf1998a059d81da8e2443a9c077ac420d308e5

GAP: Show pairing popup for NO_IO remotes always.
Change-Id: Idff8dabf0926b1310c0637830f5188389b14d332

OPP UI progress bar not in sync with data transfer
Change-Id: I5b827679a6095b54b616aa7e62ce9e3207cbfc21

RFCOMM: Incoming connection from car radio failing
Change-Id: Ia8671d83523c368fbf1441fe42a66067fb99d1fd

SDP: Crash in sdp due to invalid length
Change-Id: I4a2e429484378d23c996caffb6495407793548d2

SDP: Dont start SDP search with invalid BD Addr
Change-Id: I43f47e61a31cf917a4ddc1a9e6c5c13a25f8730d

SDP: Restricted invalid attr len in sdp delete
Change-Id: I15f83b5c1a88d248d29080123ebbf4652f2cb340

SMP: Initiate BR/EDR encryption even in slave role
Change-Id: I0e1d2d6c6b7c06f019df13f265bde962fd4e6e47

Start idle ccb timeout in pairing timeout scenario
Change-Id: Ida4db20518553c4a42baa01fb19bbfcc3a5377d9

Bluetooth: GAP: Reject incoming pairing if already in progress
Change-Id: I19a2a98e4ceb51cabaef279a2e3f8224fbed9ea1

Bluetooth: Removes bond when user clicks on cancel pairing
Change-Id: Ibb004e19f1c768e92475c4ff041431f28061491b

Bluetooth: Avoid crash while releasing CCB
Change-Id: Iac2fa78d3599431308a030861158efa095bbdbf5

Bluetooth: Fix module cleanup.
Change-Id: I0f448eb438881a9df46d07eab44d809bae740ab5

Bluetooth: Kill the BT process immediately on detecting SSR
Change-Id: Id5007914140aa26c08579ca85f7622c79d73a00f

BT: ACL and l2c out if sync after connection collision
Change-Id: Ie2049217e436704262f06d0c0dc51611697cc29a

BT: Checking for stack status before removing sdp
Change-Id: Ib5447402f9c28e010a74700927be54db44f9ca65

BT: Resetting BTA dm state while sending disable event
Change-Id: I866617f1f443c90a0a9ee16a90bafea709e262cd

BT: Get chipset type dynamically during stack initialization
Change-Id: I65602b913c052633ec5627598a97ae85a29756f7

Update SDP CCB's continuation information in case of server DB deletion
Change-Id: I493450eaf8fff6360469a33416cf8bb468eca8eb

SDP: Provide sufficient buffer size to store raw SDP data
Change-Id: Ifa57b9b0e3a2100f9513dee5e18b53bf990c4bff

Removing unnecessary creation of semaphore as part of stack cleanup
Change-Id: Id5945da87f00eb7ab77a5f217c95cc43f0136e06

BT : Clears profile connect_queue in BR/EDR Cleanup path
Change-Id: I2fc7146deb208896be30edbcef208a816856e27b

Bluetooth: Introduced new interface for handling VS implementations
Change-Id: I4c0e8468aa71e1eeee7e81b39e71ad9f711c7a3e

Bluetooth: Do not go for inquiry in BONDING State
Change-Id: I0e1ec0fdb963921629e5c52f495ae2013e679a03

Add debug log to track Negative reply
Change-Id: I7a25a53bf2dd7b69ecd9d0b30d49a163af731ee1

BT: Calling HCI reset when Hardware error event occurs.
Change-Id: I9afb5fec10a23725126e472c84b573dcdeacbfe0

BT: Updating bt_config on local adapter property change.
Change-Id: Ie8b1c060687a7c677dda1ab6b886ff91326d5b89

Bluetooth: GAP: Allow only one pairing from btif layer at one time.
Change-Id: Id17e3f90904d2c53f1466a72253a25a38d753138

Bluetooth: GAP: Serialize the commands during Pairing process.
Change-Id: I4448c291a60ee637dc5927806547e67f26571d86

GAP: corrected unwanted flag setting in ltk derivation
Change-Id: I4571e78998e26426390435b5cf13d04642c90340

Change-Id: Ic8c0192e355cd2fff3148aba0cfb1164699ca912
43 files changed
tree: 1054d5cddd17aeed4a6897caed98e8e9290e2b4a
  1. audio_a2dp_hw/
  2. bta/
  3. btcore/
  4. btif/
  5. build/
  6. conf/
  7. device/
  8. doc/
  9. embdrv/
  10. hci/
  11. include/
  12. main/
  13. osi/
  14. service/
  15. stack/
  16. test/
  17. tools/
  18. udrv/
  19. utils/
  20. vendor_libs/
  21. vnd/
  22. .clang-format
  23. .gitignore
  24. .gitreview
  25. .gn
  26. Android.bp
  27. Android.mk
  28. BUILD.gn
  29. CleanSpec.mk
  30. EventLogTags.logtags
  31. MODULE_LICENSE_APACHE2
  32. NOTICE
  33. OWNERS
  34. PREUPLOAD.cfg
  35. README.md
README.md

Fluoride Bluetooth stack

Building and running on AOSP

Just build AOSP - Fluoride is there by default.

Building and running on Linux

Instructions for Ubuntu, tested on 14.04 with Clang 3.5.0 and 16.10 with Clang 3.8.0

Download source

mkdir ~/fluoride
cd ~/fluoride
git clone https://android.googlesource.com/platform/system/bt

Install dependencies (require sudo access):

cd ~/fluoride/bt
build/install_deps.sh

Then fetch third party dependencies:

cd ~/fluoride/bt
mkdir third_party
cd third_party
git clone https://github.com/google/googletest.git
git clone https://android.googlesource.com/platform/external/aac
git clone https://android.googlesource.com/platform/external/libchrome
git clone https://android.googlesource.com/platform/external/libldac
git clone https://android.googlesource.com/platform/external/modp_b64
git clone https://android.googlesource.com/platform/external/tinyxml2
git clone https://android.googlesource.com/platform/hardware/libhardware

And third party dependencies of third party dependencies:

cd fluoride/bt/third_party/libchrome/base/third_party
mkdir valgrind
cd valgrind
curl https://chromium.googlesource.com/chromium/src/base/+/master/third_party/valgrind/valgrind.h?format=TEXT | base64 -d > valgrind.h
curl https://chromium.googlesource.com/chromium/src/base/+/master/third_party/valgrind/memcheck.h?format=TEXT | base64 -d > memcheck.h

NOTE: If system/bt is checked out under AOSP, then create symbolic links instead of downloading sources

cd system/bt
mkdir third_party
cd third_party
ln -s ../../../external/aac aac
ln -s ../../../external/libchrome libchrome
ln -s ../../../external/libldac libldac
ln -s ../../../external/modp_b64 modp_b64
ln -s ../../../external/tinyxml2 tinyxml2
ln -s ../../../hardware/libhardware libhardware
ln -s ../../../external/googletest googletest

Generate your build files

cd ~/fluoride/bt
gn gen out/Default

Build

cd ~/fluoride/bt
ninja -C out/Default all

This will build all targets (the shared library, executables, tests, etc) and put them in out/Default. To build an individual target, replace "all" with the target of your choice, e.g. ninja -C out/Default net_test_osi.

Run

cd ~/fluoride/bt/out/Default
LD_LIBRARY_PATH=./ ./bluetoothtbd -create-ipc-socket=fluoride

Eclipse IDE Support

  1. Follows the Chromium project Eclipse Setup Instructions until "Optional: Building inside Eclipse" section (don't do that section, we will set it up differently)

  2. Generate Eclipse settings:

cd system/bt
gn gen --ide=eclipse out/Default
  1. In Eclipse, do File->Import->C/C++->C/C++ Project Settings, choose the XML location under system/bt/out/Default

  2. Right click on the project. Go to Preferences->C/C++ Build->Builder Settings. Uncheck "Use default build command", but instead using "ninja -C out/Default"

  3. Goto Behaviour tab, change clean command to "-t clean"