Vincent Coubard
542b725545
BLE: Fix incorrect index used to access attsCb.prepWriteQueue in Cordio
...
The connection id starts at the value 1. The entry accessed in the array should be connId - 1
2020-10-19 17:21:49 +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
George Beckstein
cda2c8bb8d
Introduce ChainableGapEventHandler subclass of ChainableEventHandler
...
The ChainableGapEventHandler enables chaining together Gap::EventHandlers so separate parts of an application can be notified of Gap events as needed. The application can register multiple Gap::EventHandler objects to one ChainableGapEventHandler and then set the global Gap::EventHandler to the ChainableGapEventHandler. All registered EventHandlers will then be called when a Gap Event occurs.
2020-10-14 12:44:09 -04:00
George Beckstein
751674b962
Introduce ChainableEventHandler and ChainableGattServerEventHandler classes.
...
Common functionality has been split off into a generic ChainableEventHandler for use by other EventHandler implementations. The ChainableEventHandler is essentially singly-linked list that propagates callbacks to all objects in the list.
The ChainableGattServerEventHandler enables chaining together GattServer::EventHandlers. An application can register separate event handlers (eg: for different services that need to handle GattServer events) and then set the global GattServer::setEventHandler to the instance of ChainableGattServerEventHandler with all registered GattServer::EventHandlers.
2020-10-14 12:42:25 -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
2a4a097a93
BLE: Take advantage of controller based address resolution on WB55
2020-10-13 16:16:48 +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
George Beckstein
46bc1577eb
Ignore unneeded Nordic BSP files
2020-10-12 23:28:15 -04: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
fa2c3633dd
Add doxygen guard to private function
2020-10-07 13:32:17 -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
ca9b70582c
Remove nullptr check when deleting _implicit_cccd
2020-10-07 13:12:08 -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
457268825d
add nrf override for host resolution
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
44b2e73ef1
Add setters to 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
Vincent Coubard
0b98682109
BLE: Add function to set the identity address used by the controller/platform.
...
The function to get it has been removed as this operation is driven by the security manager.
2020-10-05 11:53:22 +01:00
Vincent Coubard
5cb05958a9
BLE: Add function to get the device random static address.
2020-10-05 11:53:22 +01:00
Vincent Coubard
f897729d5c
Cordio: Add API to set the local identity address.
2020-10-05 11:53:22 +01:00
Vincent Coubard
9eac36879a
BLE: improve scan state bookkeeping
2020-10-05 11:53:22 +01:00
Vincent Coubard
9df7fc9b7e
BLE: Fix state update when event handler not present
2020-10-05 11:53:22 +01:00
Vincent Coubard
48f4cfbe04
BLE: return stack busy instead of invalid state when applicable
...
enabling/disabling scanning and advertising operations can be prevented if the previous operations hasn't completed.
Return that the stack is busy and cannot fulfill the request at the moment rather than the state is invalid.
2020-10-05 11:53:22 +01:00
Vincent Coubard
3c22f8ae1d
BLE: privacy tracing cleanup
2020-10-05 11:53:22 +01:00
Vincent Coubard
19d89366d7
BLE: Private address when initiating connection
2020-10-05 11:53:22 +01:00
Vincent Coubard
c39d03a531
BLE: Implement private address rotation for initiating.
2020-10-05 11:53:22 +01:00
Vincent Coubard
4685322f4e
BLE: Add routine that computes the random address to use depending on the procedure.
2020-10-05 11:53:21 +01:00
Vincent Coubard
559640cbd5
BLE: check LL resolution availability before enabling it.
2020-10-05 11:53:21 +01:00
Vincent Coubard
e5128689aa
BLE: Fix random static address storage
2020-10-05 11:53:21 +01:00
Vincent Coubard
924f8b1dc9
BLE: Update state when scan started/stopped callback received.
2020-10-05 11:53:21 +01:00
Vincent Coubard
d8c6820cbd
BLE: Add callback for scan started and stoped.
2020-10-05 11:53:21 +01:00
Vincent Coubard
b8549ec91d
BLE: rename address resolution handler.
2020-10-05 11:53:21 +01:00
Vincent Coubard
4b853956d9
BLE: Add resolvable and non resolvable private address rotation with advertising
2020-10-05 11:53:15 +01:00
Vincent Coubard
f810ec4c2a
BLE: Add initiating flag into gap to track if the local device tries to connect to a peer.
2020-10-05 11:50:34 +01:00
Vincent Coubard
13771b8172
BLE: Remove address resolution from GAP pal
2020-10-05 11:50:34 +01:00
Vincent Coubard
7e16ee448e
BLE: Bind address controller with Gap
2020-10-05 11:50:33 +01:00
Vincent Coubard
313676a089
BLE: Add gap handlers to be informed when advertising as started or been stopped
2020-10-05 11:50:33 +01:00
Vincent Coubard
23f7a187fb
BLE: Pal event queue pop before execution.
...
A race condition was present if a single event was present in the event queue and the event was generating a new event.
2020-10-05 11:50:33 +01:00
Vincent Coubard
237278be24
BLE: Update security manager to use the PrivateAddressController
...
Resolution list has been removed from the pal as this is handled by the PrivateAddressController.
2020-10-05 11:50:33 +01:00
Vincent Coubard
44681ee982
BLE: Add PrivateAddressController module.
...
It controls private address generation and host or controller address resolution.
2020-10-05 11:50:33 +01:00
Vincent Coubard
7dacae73b2
BLE: Add cordio implementation of PalPrivateAddressController
2020-10-05 11:50:33 +01:00
Vincent Coubard
f1dbc893f3
BLE: Introduce PalPrivateAddressController
...
This PAL interface is responsible for generating, resolving private address and maintaining the controller or host resolving list.
It also indicates to upper level if LL resolution is supported or not and allows them to enable it.
2020-10-05 11:50:33 +01:00
Vincent Coubard
742356158f
BLE: Add resolvable_address_timeout_t datatype.
2020-10-05 11:50:33 +01:00
Vincent Coubard
bc860db7c5
ble: Add privacy mode to the pal
2020-10-05 11:50:32 +01:00
Vincent Coubard
f7dfc5c9f2
BLE: Update ble::Duration to support default values
2020-10-05 11:50:32 +01:00
Paul Szczeanek
e9ac83a92c
reset transport last and reset the default chars in gatt server
2020-10-02 16:14:20 +01:00
Johnny Robeson
fac3ebb33b
Use impl namespace in GattServer att_cb registration, not ble
...
If this is the correct fix, then this shouldn't have passed CI, should
it?
2020-09-21 17:54:16 -04:00
phst
c0021e2147
Add missing defines to activate/deactivate BLE features
2020-09-17 11:02:25 +02:00
Paul Szczeanek
77ba844ef9
double negation fixed and ifs normalised
2020-09-09 17:08:32 +01:00
Vincent Coubard
904b7f5163
BLE: reintroduce default implementation GattClient::discoverServices.
2020-09-07 14:32:18 +01:00
Vincent Coubard
4bd7f8cfc4
BLE: fix code indentation
2020-09-04 16:39:23 +01:00
Vincent Coubard
f116604024
BLE: correctness improvments
...
Remove unused variable, improve header inclusion, fix initialization list order,
2020-09-04 13:26:29 +01:00
Vincent Coubard
702c1b9756
BLE: Fixed used of parent pointer in implementation classes.
2020-09-04 13:25:32 +01:00
Vincent Coubard
5943a7360c
BLE: Fix uses of mbed.h
2020-08-25 12:28:40 +01:00
Vincent Coubard
cf91053f93
BLE: Move cordio implementation include into source folder
2020-08-25 11:34:00 +01:00
Vincent Coubard
029ed3a0c5
BLE: Cleanup BLEInstanceBas implementation
2020-08-25 11:33:59 +01:00
Vincent Coubard
2af0f88fa6
BLE: Cleanup AttServerMessage implementation
2020-08-25 11:33:59 +01:00
Vincent Coubard
6df7846bbb
BLE: Remove cordio namespace
2020-08-25 11:33:59 +01:00
Vincent Coubard
d914cb1fb2
BLE: Cleanup PalSigningEventMonitor.
2020-08-25 11:33:59 +01:00
Vincent Coubard
f6b40e0e66
BLE: Cleanup pal generic access service
2020-08-25 11:33:59 +01:00
Vincent Coubard
b42abd0e25
BLE: cleanup PalEvent queue and implementation
2020-08-25 11:33:59 +01:00
Vincent Coubard
52b132e042
BLE: Cleanup pal security manager
2020-08-25 11:33:59 +01:00
Vincent Coubard
2952a5b327
BLE: Cleanup pal Gap
2020-08-25 11:33:59 +01:00
Vincent Coubard
3f3c11b113
BLE: Move GattServer implementation from generic to cordio
2020-08-25 11:32:38 +01:00
Vincent Coubard
e59e1b5ef6
BLE: Cleanup of pal AttClient and GattClient
...
Fix interface namespace being not used.
Move generic AttClient to GattClient adapter back into the pal
2020-08-25 11:32:38 +01:00
Vincent Coubard
bc259c561d
BLE: cleanup generic sources
2020-08-25 11:32:37 +01:00
Vincent Coubard
57b5f711e5
BLE: Move source/DiscoveredCharacteristic into source/gatt/DiscoveredCharacteristic
2020-08-25 11:26:28 +01:00
Vincent Coubard
12388d77d4
BLE: move source/impl into source/cordio
2020-08-25 11:26:28 +01:00
Vincent Coubard
241c69f50d
BLE: Cleanup public headers
2020-08-25 11:26:28 +01:00
Vincent Coubard
7cbc0e38a4
BLE: Clang tidy on public headers.
2020-08-25 11:26:28 +01:00
Vincent Coubard
0baa92d70c
BLE: Expose HCI driver in public API.
2020-08-25 11:26:28 +01:00
Vincent Coubard
dd54baecf6
BLE: Move Cordio implementation in source/impl
2020-08-25 11:26:27 +01:00
Vincent Coubard
cc78150afd
BLE: Move generic lib file into source/generic .
2020-08-25 11:26:27 +01:00
Vincent Coubard
134cb885f5
BLE: Move cordio_stack out of TARGET_CORDIO
2020-08-25 11:26:27 +01:00
Vincent Coubard
63ac8fac3c
BLE: Add compatibility path for headers.
2020-08-25 11:26:26 +01:00
Vincent Coubard
13c358717f
BLE: Move GATT public header into ble/gatt
...
Move private headers GattServerEvents.h, GapEvents,h and GapType.h in relevant part of the source tree.
2020-08-25 11:26:26 +01:00
Vincent Coubard
27cb03824e
BLE: Move common publi headers into ble/common
2020-08-25 11:26:26 +01:00
Vincent Coubard
d3427ca495
BLE: Move gap public header at the root.
2020-08-25 11:26:26 +01:00
Vincent Coubard
e11bfb6514
BLE: move PAL headers into source/pal
2020-08-25 11:26:26 +01:00
Vincent Coubard
a45325995b
BLE: Move BleInstanceBase.h into source.
2020-08-25 11:26:26 +01:00
Vincent Coubard
c2a09abee8
BLE: Move SecurityDB related files into generic sources
2020-08-25 11:26:26 +01:00
Vincent Coubard
381700a250
BLE: Move generic implementation and headers into source/generic
2020-08-25 11:26:26 +01:00
Vincent Coubard
41c8c22a96
BLE: Warning cleanup
...
- Missing default assignment operator
- Field order in construction list
- Typo
- Unused header
2020-08-25 11:26:26 +01:00
Vincent Coubard
c773870d56
BLE: Bind interface to private implementation.
2020-08-25 11:26:26 +01:00
Vincent Coubard
0929478b7f
BLE: Move constructor from transport to private section
2020-08-25 11:26:25 +01:00
Vincent Coubard
cf3ede0191
BLE: GattServer PIMPL
2020-08-25 11:26:25 +01:00
Vincent Coubard
2b48d4826e
BLE: SecurityManager PIMPL
2020-08-25 11:25:07 +01:00
Vincent Coubard
e3cf59e6cd
ble: GattClient PIMPL
2020-08-25 11:25:07 +01:00
Vincent Coubard
909676d159
PIMPL for ble::Gap
2020-08-25 11:11:58 +01:00
Martin Kojtal
d6e93b182c
Merge pull request #13462 from paul-szczepanek-arm/cancel-connect-no-address
...
BLE remove address from API to cancel connect
2020-08-25 08:46:14 +01:00
Paul Szczeanek
6aa89aefcc
calculate chunk size when needed and use reported packet length
2020-08-19 12:22:27 +01:00
Paul Szczeanek
8c5bbe05fe
check authorisation before writing
2020-08-19 10:41:21 +01:00
Paul Szczeanek
019a32c75b
no need to check again
2020-08-19 10:41:05 +01:00
Paul Szczeanek
c78afe249c
remove address from api to cancel connect
2020-08-18 18:07:16 +01:00
Paul Szczeanek
f876179484
remove tabs
2020-08-18 10:04:11 +01:00
Paul Szczeanek
b93733e4aa
offset is missing from prepare write response in cordio
2020-08-18 10:02:43 +01:00
Paul Szczeanek
894886d1fe
fix prepare writes to write in chunks
2020-08-18 09:07:13 +01:00
Paul Szczeanek
bf20286026
perform attribute writes directly, including offset
2020-08-18 09:00:36 +01:00
Paul Szczeanek
cde0e6b183
allow writes at an offset
2020-08-18 08:59:00 +01:00
Paul Szczeanek
1b78b46a73
must allow writes smaller than max attribute length
2020-08-18 08:58:11 +01:00
Paul Szczeanek
e877eb7552
fix cancel connect to accept peer address
2020-08-10 13:07:11 +01:00
Paul Szczeanek
6aac3acefb
braces on newlines
2020-08-07 16:27:26 +01:00
Paul Szczeanek
8bdd6bca93
braces always on newline
2020-08-07 16:21:09 +01:00
Paul Szczeanek
f6a8610b0e
move non-api heders into common
2020-08-07 14:54:23 +01:00
Paul Szczeanek
ec4cbb7c23
make include path backwards compatible
2020-08-07 14:20:44 +01:00
Paul Szczeanek
72b7d97fba
pull define out into json config
2020-08-07 11:59:14 +01:00
Paul Szczeanek
98bb0f7e55
fix backwards compatibility
2020-08-07 11:59:14 +01:00
Paul Szczeanek
1d4d3e1127
move implementations to libraries directory
2020-08-07 11:59:14 +01:00
Paul Szczeanek
9603708fc5
import ble modules into global namespace
2020-08-07 11:59:14 +01:00
Paul Szczeanek
7e64019074
move pal to cordio, remove cordio mentions from API
2020-08-07 11:59:14 +01:00
Paul Szczeanek
55efdb3cf0
Cordio Singleton support only one instance
...
Additional instances must be managed by user.
2020-08-07 11:59:14 +01:00
Paul Szczeanek
365cb3c5d0
remove generic, TPPs, nested namespaces
2020-08-07 11:59:14 +01:00