From 5edd4930722150bfb795dbc616bc999b61faa74e Mon Sep 17 00:00:00 2001 From: Paul Szczepanek Date: Wed, 16 Jun 2021 08:57:55 +0100 Subject: [PATCH 1/6] replace removed services with the new services repo --- docs.json | 8 +++----- .../api/connectivity/bluetooth/BLE_services.md | 9 +++++++++ .../connectivity/bluetooth/BatteryService.md | 15 --------------- .../bluetooth/EnvironmentalService.md | 11 ----------- .../connectivity/bluetooth/HeartRateService.md | 18 ------------------ .../api/connectivity/bluetooth/ble_tutorial.md | 3 --- 6 files changed, 12 insertions(+), 52 deletions(-) create mode 100644 docs/api/connectivity/bluetooth/BLE_services.md delete mode 100644 docs/api/connectivity/bluetooth/BatteryService.md delete mode 100644 docs/api/connectivity/bluetooth/EnvironmentalService.md delete mode 100644 docs/api/connectivity/bluetooth/HeartRateService.md delete mode 100644 docs/api/connectivity/bluetooth/ble_tutorial.md diff --git a/docs.json b/docs.json index b963e41e3e..1336ef25d1 100644 --- a/docs.json +++ b/docs.json @@ -814,9 +814,7 @@ }, { "title": "Bluetooth APIs", - "sources": [{ - "path": "docs/api/connectivity/bluetooth/BatteryService.md" - }, + "sources": [ { "path": "docs/api/connectivity/bluetooth/BLE.md" }, @@ -830,10 +828,10 @@ "path": "docs/api/connectivity/bluetooth/GattServer.md" }, { - "path": "docs/api/connectivity/bluetooth/HeartRateService.md" + "path": "docs/api/connectivity/bluetooth/SecurityManager.md" }, { - "path": "docs/api/connectivity/bluetooth/SecurityManager.md" + "path": "docs/api/connectivity/bluetooth/BLE_services.md" } ] }, diff --git a/docs/api/connectivity/bluetooth/BLE_services.md b/docs/api/connectivity/bluetooth/BLE_services.md new file mode 100644 index 0000000000..f6863ca15e --- /dev/null +++ b/docs/api/connectivity/bluetooth/BLE_services.md @@ -0,0 +1,9 @@ +# BLE Services + +Mbed OS BLE implementation isn't bundled with any BLE services. Services are in an external repository. Please got to: +- [ble-services](https://github.com/ARMmbed/mbed-os-experimental-ble-services) + +This is a community led effort to provide implementations of services both from the official BLE spec and user defined +ones. It contains libraries which you can import into your project to use the services. Please refer to documentation +inside the repository: +- [README.md](https://github.com/ARMmbed/mbed-os-experimental-ble-services/blob/main/README.md) \ No newline at end of file diff --git a/docs/api/connectivity/bluetooth/BatteryService.md b/docs/api/connectivity/bluetooth/BatteryService.md deleted file mode 100644 index f260385c36..0000000000 --- a/docs/api/connectivity/bluetooth/BatteryService.md +++ /dev/null @@ -1,15 +0,0 @@ -# BatteryService - -It is often a requirement for devices operating on battery to report the battery charge level to the user. - -The [Bluetooth Battery Service](https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=245138) defines how to expose a battery charge level through a BLE link. It allows a client - usually a smartphone application - of a device to read the current battery charge level and follow its evolution. - -The BatteryService class implements the Bluetooth Battery Service as defined by the Bluetooth SIG. Makers of BLE devices operating on battery can use the API to expose interoperably the charge level of their products. - -## BatteryService class reference - -[![View code](https://www.mbed.com/embed/?type=library)](https://os.mbed.com/docs/mbed-os/development/mbed-os-api-doxy/class_battery_service.html) - -## Related content - -- [Bluetooth Battery Service](https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=245138) specification. diff --git a/docs/api/connectivity/bluetooth/EnvironmentalService.md b/docs/api/connectivity/bluetooth/EnvironmentalService.md deleted file mode 100644 index d43556877c..0000000000 --- a/docs/api/connectivity/bluetooth/EnvironmentalService.md +++ /dev/null @@ -1,11 +0,0 @@ -# EnvironmentalService - -[Add description here.] - -## EnvironmentalService class reference - -[![View code](https://os.mbed.com/docs/mbed-os/development/mbed-os-api-doxy/class_environmental_service.html) - -## EnvironmentalService example - -[Add example here.] diff --git a/docs/api/connectivity/bluetooth/HeartRateService.md b/docs/api/connectivity/bluetooth/HeartRateService.md deleted file mode 100644 index bc152328c2..0000000000 --- a/docs/api/connectivity/bluetooth/HeartRateService.md +++ /dev/null @@ -1,18 +0,0 @@ -# HeartRateService - -People practicing physical activities use heart rate monitors to track their pulse in real time and improve their physical performances. - -The [Bluetooth Heart Rate Service](https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=239866) defines how data from a heart rate sensor should be exposed through a BLE link. The standard nature of the service allows seamless operations between collectors - usually smartphone applications - and heart rate monitors conforming to the service. - -The HeartRateService class implements the Bluetooth Heart Rate service as defined by the Bluetooth body. Makers of BLE enabled fitness devices can use it to expose interoperably heart rate sensor data. - - **Note:** The Bluetooth Heart Rate Service is part of the [Bluetooth Heart Rate Profile](https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=239865), which defines behaviors that a Bluetooth heart rate sensor expects. You must ensure that your application conforms to the heart rate profile to guarantee interoperability of your heart rate sensors. - -## HeartRateService class reference - -[![View code](https://www.mbed.com/embed/?type=library)](https://os.mbed.com/docs/mbed-os/development/mbed-os-api-doxy/class_heart_rate_service.html) - -## Related content - -- [Bluetooth Heart Rate Service](https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=239866) specification. -- [Bluetooth Heart Rate Profile](https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=239865) specification. diff --git a/docs/api/connectivity/bluetooth/ble_tutorial.md b/docs/api/connectivity/bluetooth/ble_tutorial.md deleted file mode 100644 index 5870124f89..0000000000 --- a/docs/api/connectivity/bluetooth/ble_tutorial.md +++ /dev/null @@ -1,3 +0,0 @@ -# BLE tutorials - -We have placed all of our BLE examples in a single GitHub repository, so although they are also available in the API pages, the [GitHub repository](https://github.com/ARMmbed/mbed-os-example-ble) is the best place to see all of them. From 56e6c4fb1c40ea566edb1f0bae9efa7107aabc5b Mon Sep 17 00:00:00 2001 From: Paul Szczepanek Date: Wed, 16 Jun 2021 09:10:04 +0100 Subject: [PATCH 2/6] make BLE docs more relevant --- docs/api/connectivity/bluetooth/BLE.md | 105 +++++++++++------- docs/api/connectivity/bluetooth/Gap.md | 2 - docs/api/connectivity/bluetooth/GattClient.md | 2 - docs/api/connectivity/bluetooth/GattServer.md | 6 +- 4 files changed, 66 insertions(+), 49 deletions(-) diff --git a/docs/api/connectivity/bluetooth/BLE.md b/docs/api/connectivity/bluetooth/BLE.md index a7bfdbbeb6..392ed26571 100644 --- a/docs/api/connectivity/bluetooth/BLE.md +++ b/docs/api/connectivity/bluetooth/BLE.md @@ -1,76 +1,92 @@ -# BLE +# BLE -**Note:** Some functions, variables or types have been deprecated. Please see the class reference linked below for details. +Bluetooth low energy (BLE) is a low power wireless technology standard for building personal area networks. Typical +applications of BLE are health care, fitness trackers, beacons, smart home, security, entertainment, proximity sensors, +industrial and automotive. -Bluetooth low energy (BLE) is a low power wireless technology standard for building personal area networks. Typical applications of BLE are health care, fitness trackers, beacons, smart home, security, entertainment, proximity sensors, industrial and automotive. +Arm Mbed BLE is the Bluetooth Low Energy software solution for Mbed. Many Mbed +[targets and components](https://os.mbed.com/platforms/?mbed-enabled=15&connectivity=3) support Mbed BLE. Developers can +use it to create new BLE enabled applications. -Arm Mbed BLE, also called `BLE_API`, is the Bluetooth Low Energy software solution for Mbed. Many Mbed [targets and components](https://os.mbed.com/platforms/?mbed-enabled=15&connectivity=3) support Mbed BLE. Developers can use it to create new BLE enabled applications. +## BLE API -Mbed’s `BLE_API` interfaces with the BLE controller on the board. It hides the BLE stack’s complexity behind C++ abstractions and is compatible with all BLE-enabled Mbed board. The Mbed OS `BLE_API` automatically configuring the clocks, timers and other hardware peripherals to work at their lowest power consumption. +Mbed's BLE API is available through C++ classes. It hides the BLE stack’s complexity and is compatible with all +BLE-enabled Mbed board. It automatically configures the clocks, timers and other hardware peripherals to work at their +lowest power consumption. -## `BLE_API`, bridges and stacks +### BLE API headers -![](../../../images/BLEDiagram.png) +BLE API is accessible through several header files: -You can build a BLE application using Mbed OS, `BLE_API` and a controller-specific Bluetooth stack together with some bridge software to adapt it to `BLE_API`: +- [BLE.h](https://github.com/ARMmbed/mbed-os/blob/master/connectivity/FEATURE_BLE/include/ble/BLE.h) - acquire the BLE + instance, perform initialisation +- [Gap.h](https://github.com/ARMmbed/mbed-os/blob/master/connectivity/FEATURE_BLE/include/ble/Gap.h) - advertising, + scanning, connecting +- [GattClient.h](https://github.com/ARMmbed/mbed-os/blob/master/connectivity/FEATURE_BLE/include/ble/GattClient.h) - + GATT operations as client +- [GattServer.h](https://github.com/ARMmbed/mbed-os/blob/master/connectivity/FEATURE_BLE/include/ble/GattServer.h) - + GATT operations as server +- [SecurityManager.h](https://github.com/ARMmbed/mbed-os/blob/master/connectivity/FEATURE_BLE/include/ble/SecurityManager.h) - + authentication, keys, encryption -- `BLE_API` as described above. -- The bridge software is specific to each vendor’s board. It provides the instantiations for the interfaces `BLE_API` offers and helps drive the underlying controller and Bluetooth stack. -- The Bluetooth stack implements the Bluetooth protocol and is specific to the controller, so a vendor using different controllers may provide different stacks. +Specific documentation for each component is available inside each of these headers. -## Inside `BLE_API` +### BLE stacks -![](../../../images/Inside_API.png) +To build and application using BLE you will be using the Mbed OS BLE API and an implementation of the BLE stack +appropriate for your board. The implementation is split into Host and Controller part. They can both run on the same +chip or two separate ones. They will be both communicating through HCI (Host Controller Interface, a well defined +protocol that is part of the Bluetooth specification). Read more about the HCI interface in Mbed OS +[here](https://github.com/ARMmbed/mbed-os/blob/master/connectivity/FEATURE_BLE/include/ble/driver/doc/HCIAbstraction.md). -`BLE_API` offers building blocks to help construct applications. These fall into two broad categories: +Currently, all implementation use the Cordio stack for the Host part. The Controller implementation may be either also +Cordio or any other vendor supplier one. Each board will have a driver that implements the communication channel +between the Host and its implementation of the controller. To add support for a new board please refer to the +[BLE porting guide](https://github.com/ARMmbed/mbed-os/blob/master/connectivity/FEATURE_BLE/include/ble/driver/doc/PortingGuide.md). -1. Interfaces under **`ble/`** to express BLE constructs, such as GAP, GATT, services and characteristics. +### Thread safety -1. Classes under `ble/services` to offer reference implementations for many of the commonly used GATT profiles. The code under 'services/' isn't essential, but it’s a useful starting point for prototyping. We continue to implement the standard GATT profiles. +BLE implementation does not provide thread safety and assumes single thread execution. Event processing and API calls +must be dispatched from the same thread. -## The BLEDevice class and header +### Asynchronous calls -The entry point of Mbed's `BLE_API` is the BLE class accessible using the header `ble/BLE.h`. This class allows you to obtain a BLE object that includes the basic attributes of a spec-compatible BLE device and can work with any BLE radio: +Many API calls are asynchronous and provide results through callbacks. These are implemented as events. To receive these +events register an EventHandler that is specific to that component. For example to receive events from Gap, use +`Gap::setEventHandler()` passing in your implementation that inherits from `Gap::EventHandler`. Your class will override +the events (methods) you are interested in, the others will inherit the do-nothing implementations provided by the parent. -```c TODO +### Instancing a BLE device + +All BLE operations are executed on an instance of BLE accessible through a function in the header `ble/BLE.h`. + +```c #include "ble/BLE.h" BLE& mydevicename = BLE::Instance(); ``` -The class's member functions can be divided by purpose: - -1. Basic BLE operations, such as initializing the controller. - -1. Accessor to Bluetooth Modules that manage GAP, GATT or the security. - -## Usage - -1. Set up advertising and connection modes. -1. Assign UUIDs to the service and its characteristic. -1. Create an input characteristic. -1. Construct a service class and add it to the BLE stack. -1. Push notifications when the characteristic's value changes. - ## Tracing To debug issues (or to understand what the stack is doing) it may be helpful to enable tracing. -Traces can be turned on by overriding configuration options in you mbed_app.json: +To enable traces override configuration options in you mbed_app.json: ``` "target_overrides": { "*": { "mbed-trace.enable": true, "mbed-trace.max-level": "TRACE_LEVEL_DEBUG", - "cordio.trace-hci-packets": true, - "cordio.trace-cordio-wsf-traces": true, + "cordio.trace-hci-packets": false, + "cordio.trace-cordio-wsf-traces": false, "ble.trace-human-readable-enums": true } } ``` -and compiling your application with `--profile debug`. Please note that with all options enabled your application may become too big - disable some options or lower the `mbed-trace.max-level`. Detailed documentation is available in the tracing [README.md](https://github.com/ARMmbed/mbed-os/blob/master/platform/mbed-trace/README.md). +Compile your application with `--profile debug`. Please note that with all options enabled your application may become +too big - disable some options or lower the `mbed-trace.max-level`. Detailed documentation is available in the tracing +[README.md](https://github.com/ARMmbed/mbed-os/blob/master/platform/mbed-trace/README.md). All BLE modules contain tracing, each of the modules prefixed with a unique tag: - `BLE ` - general BLE traces @@ -86,11 +102,16 @@ All BLE modules contain tracing, each of the modules prefixed with a unique tag: Any contributions to BLE should include appropriate tracing code. -## BLE class reference +## BLE examples -[![View code](https://www.mbed.com/embed/?type=library)](https://os.mbed.com/docs/mbed-os/development/mbed-os-api-doxy/classble_1_1_b_l_e.html) +We have placed all of our BLE examples in a single GitHub repository: +- [GitHub repository](https://github.com/ARMmbed/mbed-os-example-ble) + +Use the release version matching the mbed-os version you plan to use. -## Related content +Development happens on the `development` branch. If you report an issue or open a PR, please check the version on the +`development` branch and target it for any proposed changes. -- Mbed Enabled [targets and components](https://os.mbed.com/platforms/?mbed-enabled=15&connectivity=3) that support BLE. -- [BLE example on GitHub](https://github.com/ARMmbed/mbed-os-example-ble/). +## BLE class reference + +[![View code](https://www.mbed.com/embed/?type=library)](https://os.mbed.com/docs/mbed-os/development/mbed-os-api-doxy/classble_1_1_b_l_e.html) diff --git a/docs/api/connectivity/bluetooth/Gap.md b/docs/api/connectivity/bluetooth/Gap.md index 9e7f866aa0..a605610bb6 100644 --- a/docs/api/connectivity/bluetooth/Gap.md +++ b/docs/api/connectivity/bluetooth/Gap.md @@ -1,7 +1,5 @@ # GAP -**Note:** Some functions, variables or types have been deprecated. Please see the class reference linked below for details. - The Generic Access Profile is the layer of the stack that handles connectivity tasks. This includes link establishment and termination, advertising and scanning. Devices with data to publish can use GAP to advertise. They can include the data in the advertisement itself, inside the scan response, or leave a peer device to query it after the connection has been established. diff --git a/docs/api/connectivity/bluetooth/GattClient.md b/docs/api/connectivity/bluetooth/GattClient.md index 34d9ebbdd1..7f2205e7c2 100644 --- a/docs/api/connectivity/bluetooth/GattClient.md +++ b/docs/api/connectivity/bluetooth/GattClient.md @@ -1,7 +1,5 @@ # GattClient -**Note:** Some functions, variables or types have been deprecated. Please see the class reference linked below for details. - You can use Generic Attribute Profile (GATT) to discover services, characteristics and descriptors and to perform operations on them. The interaction happens between two peers, one of which is the client (which initiates interactions) and the other is the server (which responds). You can use Attribute Protocol (ATT) to implement this interaction. `GattClient` defines procedures required for interacting with a remote `GattServer`. ## Discovery procedures diff --git a/docs/api/connectivity/bluetooth/GattServer.md b/docs/api/connectivity/bluetooth/GattServer.md index c83d86421a..d95ca4098a 100644 --- a/docs/api/connectivity/bluetooth/GattServer.md +++ b/docs/api/connectivity/bluetooth/GattServer.md @@ -1,7 +1,5 @@ # GattServer -**Note:** Some functions, variables or types have been deprecated. Please see the class reference linked below for details. - You can use Generic Attribute Profile (GATT) to discover services, characteristics and descriptors and to perform operations on them. The interaction happens between two peers, one of which is the client (which initiates interactions) and the other is the server (which responds). You can use Attribute Protocol (ATT) to implement this interaction. `GattServer` is a collection of GattServices. These services contain characteristics that a `GattClient` on the peer connected to the device may read or write. These characteristics may also emit updates to subscribed clients when their values change. @@ -24,7 +22,9 @@ The Attribute Protocol Maximum Transmission Unit (`ATT_MTU`) is the maximum size ## Events -You can register several event handlers with the GattServer that it will call to notify you of client (remote application connected to the server) and server activities: +You can register your implementation of `GattServer::EventHandler` with the GattServer using +`GattServer::setEventHandler()`. It will call your event handler methods to notify you of client (remote application +connected to the server) and server activity: - `onDataSent`: Register an event handler with the GattServer that it will call to notify you when it sends a characteristic value update to a client. - `onDataWriten`: Register an event handler with the GattServer that it will call to notify you when a client has written an attribute of the server. From 8346cf62c8a07e987a8be3925bd3e62f8a09bd5f Mon Sep 17 00:00:00 2001 From: Paul Szczepanek Date: Fri, 18 Jun 2021 12:13:04 +0100 Subject: [PATCH 3/6] reorder ble articles --- docs.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs.json b/docs.json index 1336ef25d1..86b392774b 100644 --- a/docs.json +++ b/docs.json @@ -821,9 +821,6 @@ { "path": "docs/api/connectivity/bluetooth/Gap.md" }, - { - "path": "docs/api/connectivity/bluetooth/GattClient.md" - }, { "path": "docs/api/connectivity/bluetooth/GattServer.md" }, @@ -832,6 +829,9 @@ }, { "path": "docs/api/connectivity/bluetooth/BLE_services.md" + }, + { + "path": "docs/api/connectivity/bluetooth/GattClient.md" } ] }, From cce83e597eed2e66036df569f3d8c4158614e0f2 Mon Sep 17 00:00:00 2001 From: Paul Szczepanek Date: Fri, 18 Jun 2021 12:13:19 +0100 Subject: [PATCH 4/6] move ble stacks section to the bottom --- docs/api/connectivity/bluetooth/BLE.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/api/connectivity/bluetooth/BLE.md b/docs/api/connectivity/bluetooth/BLE.md index 392ed26571..dc63264142 100644 --- a/docs/api/connectivity/bluetooth/BLE.md +++ b/docs/api/connectivity/bluetooth/BLE.md @@ -31,19 +31,6 @@ BLE API is accessible through several header files: Specific documentation for each component is available inside each of these headers. -### BLE stacks - -To build and application using BLE you will be using the Mbed OS BLE API and an implementation of the BLE stack -appropriate for your board. The implementation is split into Host and Controller part. They can both run on the same -chip or two separate ones. They will be both communicating through HCI (Host Controller Interface, a well defined -protocol that is part of the Bluetooth specification). Read more about the HCI interface in Mbed OS -[here](https://github.com/ARMmbed/mbed-os/blob/master/connectivity/FEATURE_BLE/include/ble/driver/doc/HCIAbstraction.md). - -Currently, all implementation use the Cordio stack for the Host part. The Controller implementation may be either also -Cordio or any other vendor supplier one. Each board will have a driver that implements the communication channel -between the Host and its implementation of the controller. To add support for a new board please refer to the -[BLE porting guide](https://github.com/ARMmbed/mbed-os/blob/master/connectivity/FEATURE_BLE/include/ble/driver/doc/PortingGuide.md). - ### Thread safety BLE implementation does not provide thread safety and assumes single thread execution. Event processing and API calls @@ -66,6 +53,19 @@ All BLE operations are executed on an instance of BLE accessible through a funct BLE& mydevicename = BLE::Instance(); ``` +### BLE stacks + +To build and application using BLE you will be using the Mbed OS BLE API and an implementation of the BLE stack +appropriate for your board. The implementation is split into Host and Controller part. They can both run on the same +chip or two separate ones. They will be both communicating through HCI (Host Controller Interface, a well defined +protocol that is part of the Bluetooth specification). Read more about the HCI interface in Mbed OS +[here](https://github.com/ARMmbed/mbed-os/blob/master/connectivity/FEATURE_BLE/include/ble/driver/doc/HCIAbstraction.md). + +Currently, all implementation use the Cordio stack for the Host part. The Controller implementation may be either also +Cordio or any other vendor supplier one. Each board will have a driver that implements the communication channel +between the Host and its implementation of the controller. To add support for a new board please refer to the +[BLE porting guide](https://github.com/ARMmbed/mbed-os/blob/master/connectivity/FEATURE_BLE/include/ble/driver/doc/PortingGuide.md). + ## Tracing To debug issues (or to understand what the stack is doing) it may be helpful to enable tracing. From f2121c3a1088e64eb2d978ef3509d314f591a3ee Mon Sep 17 00:00:00 2001 From: Paul Szczepanek Date: Fri, 18 Jun 2021 12:13:49 +0100 Subject: [PATCH 5/6] typo --- docs/api/connectivity/bluetooth/BLE_services.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api/connectivity/bluetooth/BLE_services.md b/docs/api/connectivity/bluetooth/BLE_services.md index f6863ca15e..0080e97474 100644 --- a/docs/api/connectivity/bluetooth/BLE_services.md +++ b/docs/api/connectivity/bluetooth/BLE_services.md @@ -1,6 +1,6 @@ # BLE Services -Mbed OS BLE implementation isn't bundled with any BLE services. Services are in an external repository. Please got to: +Mbed OS BLE implementation isn't bundled with any BLE services. Services are in an external repository. Please go to: - [ble-services](https://github.com/ARMmbed/mbed-os-experimental-ble-services) This is a community led effort to provide implementations of services both from the official BLE spec and user defined From 83dd8370b681d7862148b392ec27efc93256bce8 Mon Sep 17 00:00:00 2001 From: Paul Szczepanek Date: Fri, 18 Jun 2021 12:24:53 +0100 Subject: [PATCH 6/6] add link and note about debugging ble --- docs/api/connectivity/bluetooth/BLE.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/api/connectivity/bluetooth/BLE.md b/docs/api/connectivity/bluetooth/BLE.md index dc63264142..3d9bfd8a05 100644 --- a/docs/api/connectivity/bluetooth/BLE.md +++ b/docs/api/connectivity/bluetooth/BLE.md @@ -66,6 +66,16 @@ Cordio or any other vendor supplier one. Each board will have a driver that impl between the Host and its implementation of the controller. To add support for a new board please refer to the [BLE porting guide](https://github.com/ARMmbed/mbed-os/blob/master/connectivity/FEATURE_BLE/include/ble/driver/doc/PortingGuide.md). +## Debugging + +To learn about debugging with mbed go to: + +[Debugging Mbed OS](../debug-test/index.html) + +However, keep in mind when trying to debug connectivity issues that if more than one device is involved it might +not be possible to stop your target without the communication breaking down. A less invasive way to help you understand +what is happening might be to use tracing. + ## Tracing To debug issues (or to understand what the stack is doing) it may be helpful to enable tracing.