Commit Graph

223 Commits (04a76b3882c60fa0686eb03470b5da5a98f52fa4)

Author SHA1 Message Date
Paul Szczepanek b61fc6b639 Deprecate indications event onConfirmationReceived 2021-04-28 14:02:56 +01:00
Martin Kojtal 9bbc8c914c
Merge pull request #14506 from noonfom/value-handle
Add GattUpdatesEnabledCallbackParams struct
2021-04-08 09:53:04 +02:00
Abbas Bracken Ziad 52483f3e30 Wrap call to value handle getter in MBED_ASSERT 2021-04-07 18:05:01 +01:00
Paul Szczepanek f34d31f350 remember if BLE scan paremeters are set 2021-04-07 16:40:46 +01:00
Abbas Bracken Ziad d42c0a7269 Add value handle field to callback params 2021-04-06 17:39:10 +01:00
Abbas Bracken Ziad 8b07e97e50 Add value handle getter to Gatt Server 2021-04-06 17:24:08 +01:00
Paul Szczepanek d43d4a0e7e fix cordio include path 2021-03-18 11:30:43 +00:00
Paul Szczepanek 1afbbebc96 fix include path for dm_api.h 2021-03-18 11:27:42 +00:00
Paul Szczepanek dc6e9db067 add tracing to scan state (#14225) 2021-03-15 15:35:52 +00:00
Paul Szczepanek a62c1e1228 add missing include 2021-03-15 15:35:52 +00:00
Vincent Coubard cf33ed0668 BLE: Add MemorySecurityDb.cpp and SecurityDb.cpp to CMake. 2021-03-15 15:35:52 +00:00
Vincent Coubard d1672aaa64 BLE: Update level of traces in GattServer 2021-03-15 15:35:52 +00:00
Vincent Coubard 957486e0eb BLE: Move traces out of header file to avoid collisions.
This change required the creation of the implementation files of SecurityDb classes.
2021-03-15 15:35:52 +00:00
Vincent Coubard 6adaefd9f3 BLE: Fix traces parameter warnings 2021-03-15 15:35:52 +00:00
Vincent Coubard 65c61a1ca9 BLE: Remove uses of tr_as_array in favour of to_string. 2021-03-15 15:35:52 +00:00
Vincent Coubard c674990820 BLE: Fix sprintf overflow in trace helpers. 2021-03-15 15:35:52 +00:00
Vincent Coubard 52a3de6657 BLE: Move tracing helpers into implementation file. 2021-03-15 15:35:52 +00:00
Vincent Coubard c13e590723 BLE: Refactor UUID string helper to match mbed-os coding style. 2021-03-15 15:35:52 +00:00
Vincent Coubard e001098699 BLE: Fix out of range memory access in trace helper. 2021-03-15 15:35:52 +00:00
Abbas Bracken Ziad db9428f18f Add tracing to BLE Gatt Server (#14107)
* Add traces to GattServerImpl.cpp

* Update BLGS traces

* Add context to BLGS traces

* Set value of TRACE_WRITE_VALUES to 0

* Add param logs to BLGS traces

* Apply changes from code review

* Add trace helper for UUIDs

* C++ string library is not needed

* Update to_string function for UUIDs

The previous implementation had a memory leak and did not format 128-bit UUIDs

* Possibly faster ternary

* Add more context to adding/inserting of services/characteristic

* Add trace to events and event path

* Refactor to_string helper for UUIDs
2021-03-15 15:35:52 +00:00
Abbas Bracken Ziad f4febdcb9d Add tracing to BLE GAP (#14117)
* Add traces to GapImpl.cpp

* Add helpers and param logs

* Update GapImpl.cpp

* Move helpers to ble_trace_helpers.h

* Add traces to whitelist setter & getter functions

* Prepend parent dir. to ble_trace_helpers.h include line

* Resolve portability issue by using PRI* macro in place of %lu

* Add traces to PalGapImpl.cpp

* Complete PAL GAP traces

* Remove stray include

* Make 'echo' traces in PAL configurable

Some of the tr_info traces at the beginning of PAL functions  are duplicates ('echoes') of those in GAP functions. This commit enables including/excluding of these traces in mbed_app.json by writing 1/0, respectively to the MBED_CONF_CORDIO_TRACE_PAL_ECHOES config macro. The default is to exclude 'echo' traces.

* Add missing spaces in tr_info traces

* Clean-up param log for set_extended_advertising_parameters

* Remove "Failed: " from every tr_error trace

* Apply changes from PalGapImpl.cpp review

* Apply changes from GapImpl.cpp review

* Use binary for channel map trace

B0: ADVERTISING_CHANNEL_37
B1: ADVERTISING_CHANNEL_38
B2: ADVERTISING_CHANNEL_39

We're assuming that the user understands the above. This could be documented somewhere.

* Replace more %lu w/PRIu32

* Add tr_info to terminateSync for user call

* Make trace group for PAL traces BLDM

* Remove [PAL] prefix from every PAL trace

* Add trace to setPeripheralPrivacyConfiguration

* Make set scan params tr_info dependent on selected PHY

* Add trace to GAP events

* Other GAP events required traces
2021-03-15 15:35:52 +00:00
Paul Szczepanek 91d4b48989 BLE: add traces to gatt client (#14165)
* add traces to gatt client

* add files to cmakelists

Co-Authored-By: Vincent Coubard <vincent.coubard@arm.com>

* fixed tracing variable name

Co-Authored-By: Vincent Coubard <vincent.coubard@arm.com>

* add pal tracing

* add more traces for successfull actions

* put write and read as tr_debug in pal

Co-authored-by: Vincent Coubard <vincent.coubard@arm.com>
2021-03-15 15:35:52 +00:00
Paul Szczepanek 7b08388be6 Add traces to HCI, BLE instance, Security DB and WSF cordio traces (#14138)
* ble HCI tracing

* fix typo in SM trace

* add BLE instance tracing

* route wsf traces to mbed tr_debug

* Update connectivity/FEATURE_BLE/source/cordio/source/BLEInstanceBaseImpl.cpp

Co-authored-by: Vincent Coubard <vincent.coubard@arm.com>

* print hci on cordio side

* trace controller supported features

* log reset sequence

* include config for printing enums

* remove duplicate trace

* add tracing to security db

* workaround for macro error on use outside trace

Co-authored-by: Vincent Coubard <vincent.coubard@arm.com>
2021-03-15 15:35:52 +00:00
Vincent Coubard 5aa76e566a BLE: Add privacy trace (#14127)
Add traces to the Bluetooth Security Manager and Privacy controller.
The traces are made to be comprehensive to improve the ux when users submit bugs.
A centralized set of helpers has been created to convert BLE types to string.

* BLE: Add SM traces

* BLE: Add traces to Security Manager PAL

* BLE: Make SM traces consistent.
- Prefix with Connection <id> - when appropriate.
- Display parameters after `:`.
- If multiple parameters should be displayed name then and print the value after =. They are separated by a `,`.

* BLE: Fix SM random number generation.

Only the first 8 bytes were generated from the stack.

* BLE: Regenerate CSRK if it is all zeroes.

* BLE: Add trace into privacy modules

Address resolution is set at the debug level as it is a very common operation and may clutter the output.

* Address trace review for SM:

- Put privacy traces in BLPR
- Add missing traces in PALSecurityManagerImpl.cpp
- Add missing EventHandler null pointer check
- Typo and parameters order fix.
2021-03-15 15:34:34 +00:00
Paul Szczepanek 938aedac91 use the correct id to identify sync 2021-02-10 11:57:30 +00:00
Martin Kojtal 733975220d
Merge pull request #14228 from ARMmbed/rename_greentea_test_macro
CMake: rename greentea test macro
2021-02-03 14:17:20 +00:00
Rajkumar Kanagaraj 6824b14e48 CMake: rename greentea test macro 2021-02-02 07:43:40 -08:00
Paul Szczepanek bd5f437896 return OK when stopping advertising that is not active 2021-01-27 16:32:57 +00:00
Hugues Kamba 51bd84ef7d CMake: Add support for CORDIO Greentea tests
The Cordio Greentea tests can now be built with CMake.
2021-01-11 16:30:29 +00:00
Vincent Coubard 4cfcadd9e9 BLE: Fix SM random number generation.
Ensure the more than 8 random bytes are fetched from the stack.
2021-01-07 12:38:47 +00:00
Vincent Coubard b28e11574a BLE: Regenerate CSRK if it is all zeroes. 2021-01-07 12:35:24 +00:00
Martin Kojtal e1d1753726
Merge pull request #14111 from paul-szczepanek-arm/ble-fix-ext
BLE: fix scanning/advertising when extended features are available but disabled on host
2021-01-05 13:28:13 +00:00
paul.szczepanek@arm.com 6746573b34 add missing guards for extended advertising feature 2021-01-04 18:05:50 +00:00
Paul Szczeanek cdc8845b3c copy authorsation callbacks to gattserver 2021-01-04 17:11:03 +00:00
Andrea Palmieri ae4a53e74a
Support to BlueNRG_2 BLE component (#13246)
Add support to BlueNRG_2 BLE component

Signed-off-by: Andrea Palmieri <andrea.palmieri@st.com>

Co-authored-by: Andrea Palmieri <andrea.palmieri@st.com>
Co-authored-by: Paul Szczeanek <paul.szczepanek@arm.com>
2020-12-17 14:37:21 +00:00
Martin Kojtal dd432a387e
Merge pull request #13942 from paul-szczepanek-arm/securitydb-fix
ble: Fix persistence in SecurityDB
2020-11-26 11:17:28 +00:00
Rajkumar Kanagaraj a964453edf CMake: target_link_library the BLE with CORDIO stack
- Security manager uses some feature from wsf which is part of the mbed-ble-cordio library so added target_link_library to link the BLE library to cordio stack lib.
2020-11-23 16:06:53 +00:00
Paul Szczeanek e71f452e9d fix missing return 2020-11-23 09:06:42 +00:00
Paul Szczeanek 63887d19a8 update the peer address when LTK has been found in old entry 2020-11-23 09:06:30 +00:00
Paul Szczeanek 187ed98d82 update the connected status of db entry 2020-11-23 09:06:05 +00:00
Paul Szczeanek 6f844e1a71 fix indexing in ble security db 2020-11-23 09:02:56 +00:00
Hugues Kamba bf84a5b329 CMake: Rename CMake targets
* mbed-os renamed mbed-core
* mbed-os-<COMPONENT> renamed mbed-<COMPONENT>
2020-11-06 17:25:22 +00:00
Hugues Kamba 0ddc75a8f6 CMake: Fix BLE private address linker error
List newly added files in CMake input source files.
2020-11-06 17:25:22 +00:00
Hugues Kamba fa98689639 CMake: Componentize Mbed OS into multiple CMake targets (#13732)
Aside from the core mbed-os CMake target, a number of targets have been created so they can optionally be included by application executables that require them using `target_link_libraries()`.

Co-authored-by: Martin Kojtal <martin.kojtal@arm.com>
Co-authored-by: Rajkumar Kanagaraj <rajkumar.kanagaraj@arm.com>
2020-11-06 17:25:21 +00:00
Hugues Kamba e22b19d6db CMake: Fix build failure due to BLE dir changes 2020-11-06 17:25:21 +00:00
Martin Kojtal c29a2e2338
Merge pull request #13811 from pan-/ble-conditional-compilation
Ble conditional compilation
2020-11-06 16:11:10 +00:00
Paul Szczeanek 34c75ffb45 fix wrong advertising set handle being passed to handler 2020-10-28 08:42:58 +00:00
Paul Szczeanek 9e509f435b fix incorrect parameter check in periodic advertising 2020-10-27 15:09:30 +00:00
Vincent Coubard 87ea47f211 BLE: Refactor Gap::reset to make it more readable 2020-10-27 14:22:54 +00:00
Vincent Coubard 557eac0617 BLE: Conditional compilation of the security manager
Depends on the role (central or peripheral), signing enabled and secure connection enabled.
2020-10-23 16:19:38 +01:00
Vincent Coubard 2e859cdab4 BLE: Conditionally compile PAL depending on the feature selected.
Previously (most) of the code was not pulled in because the pal interface was not virtual.
2020-10-23 12:17:31 +01:00
Vincent Coubard 26300912d3 BLE: Prevent code generation from GattClient when not used. 2020-10-23 10:37:28 +01:00
Martin Kojtal 1b663a37cf
Merge pull request #13779 from paul-szczepanek-arm/fix-scan-state
BLE: Fix scan state and host resolution of RPAs
2020-10-20 11:09:24 +01:00
Paul Szczeanek 934e111107 fix advertising report not terminating early for unwanted reports 2020-10-19 15:47:40 +01:00
Paul Szczeanek 2c906110fc missing host resolution for rpa when extended advertising is available 2020-10-19 15:47:39 +01:00
Paul Szczeanek 0931709516 replace current bool state combination for keeping track of ble scanning with an enum that covers all states 2020-10-19 15:47:39 +01:00
Martin Kojtal b242be1b08
Merge pull request #13734 from AGlass0fMilk/chainable-event-handler
BLE: Introduce ChainableEventHandler and subclasses
2020-10-19 12:27:56 +01:00
Martin Kojtal 61aa6817f0
Merge pull request #13724 from harmut01/license_refactor
Add license notice to Arm copyrighted source files
2020-10-16 09:09:53 +01:00
Martin Kojtal 75f3b6cb1c
Merge pull request #13717 from ARMmbed/feature-ble-host-privacy
Feature ble host privacy
2020-10-15 15:07:54 +01:00
Harrison Mutai 4fad1112e5 Add SPDX license identifier to Arm files
Add license identifier to files which Arm owns the copyright to,
and contain either BSD-3 or Apache-2.0 licenses. This is to address
license errors raised by scancode analysis.
2020-10-15 10:47:27 +01:00
George Beckstein 9a6d207585 Update GattServer Callback API
Update parameters passed to onDataSent, onUpdatesEnabled/Disabled, and onConfirmationReceived callbacks.

Deprecate single-callback-registering functions for event handling in lieu of the new EventHandler-based API.

Introduce new GattServer::EventHandler callback functions to replace the deprecated versions.
2020-10-14 12:44:12 -04:00
Vincent Coubard 5f1b716bfb
Merge pull request #13760 from paul-szczepanek-arm/privacy-fix-ifdef
Fix conditional compilation for ble
2020-10-14 13:35:16 +01:00
Paul Szczeanek 119d459361 fix removed friend function 2020-10-14 09:58:11 +01:00
Paul Szczeanek 9f09bb4956 rename private address controller to match security manager 2020-10-13 17:40:37 +01:00
Paul Szczeanek 3f9798b52d Fix conditional compilation based on config 2020-10-13 17:32:49 +01:00
Vincent Coubard e1842ccd87 BLE: Workaround for WB55 connection event
The connection event reported by the WB55 is incorrect if controller privacy is not enable and the peer connects with an unknown private resolvable address: The RPA field contains the connection address (it should be empty) and the peer address is all FF while it should be equal to the connection address.
2020-10-13 16:16:17 +01:00
Martin Kojtal 83579b1aa5
Merge pull request #13704 from paul-szczepanek-arm/reset-fix
ble: reset transport last and reset the default chars in gatt server
2020-10-13 11:21:21 +01:00
Martin Kojtal 35f97f4e98
Merge pull request #13729 from AGlass0fMilk/implicit-cccd
BLE: Enable getting an implicitly-created CCCD through `GattCharacteristic::getDescriptor`
2020-10-13 11:18:40 +01:00
Johnny Robeson e27571fb83 This fixes lto type mismatch warnings in 3 functions
```sh
[Warning] pal_rtc.h@76,6: type of 'PalRtcCompareSet' does not match original declaration [-Wlto-type-mismatch]
[Warning] pal_rtc.h@73,6: type of 'PalRtcEnableCompareIrq' does not match original declaration [-Wlto-type-mismatch]
[Warning] pal_rtc.h@74,6: type of 'PalRtcDisableCompareIrq' does not match original declaration [-Wlto-type-mismatch]
```
2020-10-12 07:02:18 -04:00
George Beckstein f9af08c0ad Add error if allocation of cccd attribute fails 2020-10-09 09:47:05 -04:00
George Beckstein eccb3e9bda Make setImplicitCCCD private and add impl::GattServer as a friend class 2020-10-07 13:31:09 -04:00
George Beckstein 5c82533d06 Enabled getting an implicitly-created CCCD through GattCharacteristic::getDescriptor 2020-10-06 19:26:32 -04:00
Vincent Coubard f32141a051 BLE: Notify application when advertising start or stop
Applicable for legacy and extended advertising.
2020-10-05 11:54:05 +01:00
Paul Szczeanek 6ee5740941 use _initiating to block scan manipulation 2020-10-05 11:54:05 +01:00
Paul Szczeanek f0bbc4c7ae use enum for state 2020-10-05 11:54:05 +01:00
Paul Szczeanek b0086919ed scan forever and allow cancellation 2020-10-05 11:54:05 +01:00
Paul Szczeanek 18c218b027 allow host resolved address to be used for connection 2020-10-05 11:54:04 +01:00
Vincent Coubard 4744c87b6c Set privacy mode to device mode in LL.
Do not enable address resolution when a new entry is added.
2020-10-05 11:54:04 +01:00
Vincent Coubard bb35cba134 BLE: Add function to signal privacy initialization. 2020-10-05 11:54:04 +01:00
Paul Szczeanek 5216a9aa8c only apply policy if privacy enabled 2020-10-05 11:54:04 +01:00
Paul Szczeanek d4360383e1 do not reject conn if no bond 2020-10-05 11:54:04 +01:00
Paul Szczeanek b67230cbdb apply peripheral policy on ll privacy 2020-10-05 11:54:04 +01:00
Paul Szczeanek ec2808be31 filter based on resolving list size 2020-10-05 11:54:04 +01:00
Paul Szczeanek 03cc0f9940 host privacy config option to enable it 2020-10-05 11:54:04 +01:00
Vincent Coubard 76f89f6f89 BLE: Factorize peripheral privacy applied when connected 2020-10-05 11:54:04 +01:00
Vincent Coubard e4b317c1b1 BLE: Add workaround for cordio use of global random address
In Cordio, the global random address is used when the local device is connected instead of the advertising set one.
This can cause pairing to fail if the advertising set address and the global random address are different.
This workaround forces the global random address to be set when advertising is started and extended advertising is present.
2020-10-05 11:54:04 +01:00
Vincent Coubard 8fe2d7ebbe BLE: Report connection internally when address resolution has completed. 2020-10-05 11:54:03 +01:00
Vincent Coubard 8716298ea2 BLE: Update DB entry if current entry doesn't match requested EDIV and RAND 2020-10-05 11:54:03 +01:00
Vincent Coubard 4c1afe8e83 BLE: Update identity address when retrieved from the DB 2020-10-05 11:54:03 +01:00
Vincent Coubard 7c8a754667 BLE: Remove set advertising timeout from SM pal 2020-10-05 11:54:03 +01:00
Vincent Coubard 02667389db BLE: Fix insertion to host resolving list. 2020-10-05 11:54:03 +01:00
Vincent Coubard 3a632a3685 BLE: Check if the resolving list item is populated instead of IRK validity 2020-10-05 11:54:03 +01:00
Vincent Coubard 1daee237e9 BLE: Queue address resolution in event queue to avoid synchronous execution
Otherwise when no IRK are available, the process will execute synchronously, calling the callback before the return of the function.
2020-10-05 11:54:03 +01:00
Vincent Coubard dee20fe5a7 BLE: Check if extended advertising is available to clear advertising set upon connection 2020-10-05 11:54:03 +01:00
Paul Szczeanek f126793f20 Add host reolustion for advertising and connections 2020-10-05 11:53:59 +01:00
Paul Szczeanek 593c1776b4 add EventList class for storing pending events 2020-10-05 11:53:23 +01:00
Paul Szczeanek df17942c2c remove unused enhanced conn complete 2020-10-05 11:53:23 +01:00
Paul Szczeanek 0a3cd69fc6 event handler should not affect internal state 2020-10-05 11:53:22 +01:00
Paul Szczeanek 685af00fd5 split resolve addres into cache and not cache 2020-10-05 11:53:22 +01:00
Vincent Coubard 4859dbe426 BLE: Set identity address to random static.
This also ensure the random static address used by gap is the correct one.
2020-10-05 11:53:22 +01:00