| OLD | NEW |
| 1 Bluetooth | 1 # Bluetooth |
| 2 ========= | |
| 3 | 2 |
| 4 `device/bluetooth` abstracts | 3 `device/bluetooth` abstracts |
| 5 [Bluetooth Classic](https://en.wikipedia.org/wiki/Bluetooth) and | 4 [Bluetooth Classic](https://en.wikipedia.org/wiki/Bluetooth) and |
| 6 [Low Energy](https://en.wikipedia.org/wiki/Bluetooth_low_energy) features | 5 [Low Energy](https://en.wikipedia.org/wiki/Bluetooth_low_energy) features |
| 7 across multiple platforms. | 6 across multiple platforms. |
| 8 | 7 |
| 9 Classic and Low Energy based profiles differ substantially. Platform | 8 Classic and Low Energy based profiles differ substantially. Platform |
| 10 implementations may support only one or the other, even though several classes | 9 implementations may support only one or the other, even though several classes |
| 11 have interfaces for both, e.g. `BluetoothAdapter` & `BluetoothDevice`. | 10 have interfaces for both, e.g. `BluetoothAdapter` & `BluetoothDevice`. |
| 12 | 11 |
| 13 | | Classic | Low Energy | | 12 | | Classic | Low Energy | |
| 14 |-----------|:-------:|:-----------:| | 13 |-----------|:-------:|:-----------:| |
| 15 | Android | no | yes | | 14 | Android | no | yes | |
| 16 | Chrome OS | yes | yes | | 15 | Chrome OS | yes | yes | |
| 17 | Linux | yes | yes | | 16 | Linux | yes | yes | |
| 18 | Mac | yes | yes | | 17 | Mac | yes | yes | |
| 19 | Windows | some | nearly | | 18 | Windows | some | nearly | |
| 20 | 19 |
| 21 Chrome OS and Linux are supported via BlueZ, see `*_bluez` files. | 20 Chrome OS and Linux are supported via BlueZ, see `*_bluez` files. |
| 22 | 21 |
| 22 [Mojo](https://www.chromium.org/developers/design-documents/mojo) |
| 23 interfaces in [public/interfaces](public/interfaces) have been started |
| 24 but are *not* ready for production use. |
| 23 | 25 |
| 24 Maintainer History | 26 |
| 25 -------------------------------------------------------------------------------- | 27 ## Maintainer History |
| 26 | 28 |
| 27 Initial implementation OWNERS were youngki@chromium.org, keybuk@chromium.org, | 29 Initial implementation OWNERS were youngki@chromium.org, keybuk@chromium.org, |
| 28 armansito@chromium.org, and rpaquay@chromium.org. They no longer contribute to | 30 armansito@chromium.org, and rpaquay@chromium.org. They no longer contribute to |
| 29 chromium fulltime. They were responsible for support for Chrome OS Bluetooth | 31 chromium fulltime. They were responsible for support for Chrome OS Bluetooth |
| 30 features and the Chrome Apps APIs: | 32 features and the Chrome Apps APIs: |
| 31 | 33 |
| 32 * [chrome.bluetooth](https://developer.chrome.com/apps/bluetooth) | 34 * [chrome.bluetooth](https://developer.chrome.com/apps/bluetooth) |
| 33 * [chrome.bluetoothLowEnergy](https://developer.chrome.com/apps/bluetoothLowEner
gy) | 35 * [chrome.bluetoothLowEnergy](https://developer.chrome.com/apps/bluetoothLowEner
gy) |
| 34 * [chrome.bluetoothSocket](https://developer.chrome.com/apps/bluetoothSocket) | 36 * [chrome.bluetoothSocket](https://developer.chrome.com/apps/bluetoothSocket) |
| 35 | 37 |
| 36 Active development in 2015 & 2016 is focused on enabling GATT features for: | 38 Active development in 2015 & 2016 is focused on enabling GATT features for: |
| 37 | 39 |
| 38 * [Web Bluetooth](https://crbug.com/419413) | 40 * [Web Bluetooth](https://crbug.com/419413) |
| 39 * Peripheral mode for Chrome OS. | 41 * Peripheral mode for Chrome OS. |
| 40 | 42 |
| 41 Known future work is tracked in the | 43 Known future work is tracked in the |
| 42 [Refactoring meta issue](https://crbug.com/580406). | 44 [Refactoring meta issue](https://crbug.com/580406). |
| 43 | 45 |
| 44 | 46 |
| 45 Testing | 47 ## Testing |
| 46 -------------------------------------------------------------------------------- | |
| 47 | 48 |
| 48 Implementation of the Bluetooth component is tested via unittests. Client code | 49 Implementation of the Bluetooth component is tested via unittests. Client code |
| 49 uses Mock Bluetooth objects: | 50 uses Mock Bluetooth objects: |
| 50 | 51 |
| 51 | 52 |
| 52 ### Cross Platform Unit Tests | 53 ### Cross Platform Unit Tests |
| 53 | 54 |
| 54 New feature development uses cross platform unit tests. This reduces test code | 55 New feature development uses cross platform unit tests. This reduces test code |
| 55 redundancy and produces consistency across all implementations. | 56 redundancy and produces consistency across all implementations. |
| 56 | 57 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 86 | 87 |
| 87 ### Chrome OS Blueooth Controller Tests | 88 ### Chrome OS Blueooth Controller Tests |
| 88 | 89 |
| 89 Bluetooth controller system tests generating radio signals are run and managed | 90 Bluetooth controller system tests generating radio signals are run and managed |
| 90 by the Chrome OS team. See: | 91 by the Chrome OS team. See: |
| 91 https://chromium.googlesource.com/chromiumos/third_party/autotest/+/master/serve
r/site_tests/ | 92 https://chromium.googlesource.com/chromiumos/third_party/autotest/+/master/serve
r/site_tests/ |
| 92 https://chromium.googlesource.com/chromiumos/third_party/autotest/+/master/serve
r/cros/bluetooth/ | 93 https://chromium.googlesource.com/chromiumos/third_party/autotest/+/master/serve
r/cros/bluetooth/ |
| 93 https://chromium.googlesource.com/chromiumos/third_party/autotest/+/master/clien
t/cros/bluetooth/ | 94 https://chromium.googlesource.com/chromiumos/third_party/autotest/+/master/clien
t/cros/bluetooth/ |
| 94 | 95 |
| 95 | 96 |
| 96 Android | 97 ## Android |
| 97 -------------------------------------------------------------------------------- | |
| 98 | 98 |
| 99 The android implementation requires crossing from C++ to Java using | 99 The android implementation requires crossing from C++ to Java using |
| 100 [__JNI__](https://www.chromium.org/developers/design-documents/android-jni). | 100 [__JNI__](https://www.chromium.org/developers/design-documents/android-jni). |
| 101 | 101 |
| 102 Object ownership is rooted in the C++ classes, starting with the Adapter, which | 102 Object ownership is rooted in the C++ classes, starting with the Adapter, which |
| 103 owns Devices, Services, etc. Java counter parts interface with the Android | 103 owns Devices, Services, etc. Java counter parts interface with the Android |
| 104 Bluetooth objects. E.g. | 104 Bluetooth objects. E.g. |
| 105 | 105 |
| 106 For testing, the Android objects are __wrapped__ in: | 106 For testing, the Android objects are __wrapped__ in: |
| 107 `android/java/src/org/chromium/device/bluetooth/Wrappers.java`. <br> | 107 `android/java/src/org/chromium/device/bluetooth/Wrappers.java`. <br> |
| (...skipping 15 matching lines...) Expand all Loading... |
| 123 * `android/.../Wrappers.java`: `BluetoothServiceWrapper` | 123 * `android/.../Wrappers.java`: `BluetoothServiceWrapper` |
| 124 * Which under test is a `FakeBluetoothService` | 124 * Which under test is a `FakeBluetoothService` |
| 125 * ... and so on for characteristics and descriptors. | 125 * ... and so on for characteristics and descriptors. |
| 126 | 126 |
| 127 Fake objects are controlled by `bluetooth_test_android.cc`. | 127 Fake objects are controlled by `bluetooth_test_android.cc`. |
| 128 | 128 |
| 129 See also: [Class Diagram of Web Bluetooth through Bluetooth Android][Class] | 129 See also: [Class Diagram of Web Bluetooth through Bluetooth Android][Class] |
| 130 | 130 |
| 131 [Class]: https://sites.google.com/a/chromium.org/dev/developers/design-documents
/bluetooth-design-docs/web-bluetooth-through-bluetooth-android-class-diagram | 131 [Class]: https://sites.google.com/a/chromium.org/dev/developers/design-documents
/bluetooth-design-docs/web-bluetooth-through-bluetooth-android-class-diagram |
| 132 | 132 |
| 133 Design Documents | 133 |
| 134 -------------------------------------------------------------------------------- | 134 ## Design Documents |
| 135 | 135 |
| 136 * [Bluetooth Notifications](https://docs.google.com/document/d/1guBtAnQUP8ZoZre4
VQGrjR5uX0ZYxfK-lwKNeqY0-z4/edit?usp=sharing) 2016-08-26 | 136 * [Bluetooth Notifications](https://docs.google.com/document/d/1guBtAnQUP8ZoZre4
VQGrjR5uX0ZYxfK-lwKNeqY0-z4/edit?usp=sharing) 2016-08-26 |
| 137 * Web Bluetooth through Android implementation details, class diagram and | 137 * Web Bluetooth through Android implementation details, class diagram and |
| 138 call flow. | 138 call flow. |
| OLD | NEW |