Commit Graph

603 Commits (920133e8edab4e77be2dacf414bd193fdba758c7)

Author SHA1 Message Date
Cruz Monrreal 7cdc5b057c
Merge pull request #9919 from pan-/workaround-extended-report
BLE - Report extended advertising in legacy handler
2019-03-16 22:54:21 -05:00
Jan Jongboom eed2b390d9
Dead pointer usage in GenericSecurityManager
`pscrk` is set to the address of `csrk`, but `csrk` is out of scope when using the resulting value. There's no guarantee that the memory is still valid.
2019-03-07 16:21:52 +01:00
Vincent Coubard 25438875c9 BLE - Report extended advertising in legacy handler if legacy API in use.
Workaround for the Cordio stack as extended advertising can be reported for a legacy advertising command.
2019-03-03 19:30:42 +00:00
Vincent Coubard 2f98901050 BLE - Avoid calling v2 API in GenericGap::reset_ if not required. 2019-03-01 18:31:06 +00:00
paul-szczepanek-arm 54a866c159 add broadcaster ifdef and pull headers into ifdef 2019-02-28 17:18:30 +00:00
Vincent Coubard 72e5d3f603 BLE - Filter user facing implementation based on configuration 2019-02-28 16:31:59 +00:00
Vincent Coubard eeca03f952 BLE - Fix exclusion of getMaxAdvertisingSetNumber and getMaxAdvertisingDataLength 2019-02-28 16:29:21 +00:00
Vincent Coubard 3142f26def BLE - Exclude services if GattServer is not available. 2019-02-28 16:28:15 +00:00
Vincent Coubard 5ae59fc534 BLE - Improve FEATURE_PRIVACY conditions. 2019-02-28 14:47:07 +00:00
Vincent Coubard 24f7f36f01 BLE - Return supported feature based on compile time features. 2019-02-28 14:23:19 +00:00
Vincent Coubard 020c5b4262 BLE - Disabling SecurityManager connection handling when security disabled. 2019-02-28 13:34:05 +00:00
Vincent Coubard af09f7b8ab BLE - Disable peer csrk retrieval if signing disabled. 2019-02-28 13:30:36 +00:00
Vincent Coubard ca44ce3cd8 BLE - Conditionally expose SecurityManager::enableSigning 2019-02-28 13:27:16 +00:00
Vincent Coubard eeb14c5ce6 BLE - Conditionally include address rotation at compile time 2019-02-28 13:26:51 +00:00
Vincent Coubard 632851e5ae BLE - Small reordering to reduce diff. 2019-02-28 12:02:23 +00:00
Vincent Coubard 831241df12 BLE - Cleanup GenericSecurityManager conditional directives
- Inheritance lisr
- Within constructor
- Within member declaration
- Private function declaration and definition.
2019-02-28 11:33:49 +00:00
Vincent Coubard 07f3ca2723 BLE - Cleanup GenericGap conditional directive
- Within constructor
- Within member declaration
- Private function declaration and definition.
2019-02-28 11:31:48 +00:00
Vincent Coubard 593cf2bd7c BLE - Remove conditional compilation of FileSecurityDb 2019-02-28 11:30:07 +00:00
Vincent Coubard c9d719a8ca BLE - Cleanup conditional directives in Gap.
- Remove conditional directives for member variables.
- Remove conditional directive for processXXX functions that are exclusively used by implementation.
-  Remove conditional directives on types exported by the class.
2019-02-28 11:28:55 +00:00
Vincent Coubard 126a7a966e BLE - Cleanup conditional directives in gap/Gap/
- Remove directives from event handler type
- Expose privacy default configuration  unconditionally
- Fix conditional test for connect and cancelConnect.
2019-02-28 11:27:02 +00:00
Vincent Coubard 3c9e778433 BLE - Remove conditionnal directive within services 2019-02-28 11:23:05 +00:00
Vincent Coubard 06b26d4e8a BLE - remove conditional directive from value types 2019-02-28 11:22:37 +00:00
Vincent Coubard ba9aa6b641 Fix rebase mistakes. 2019-02-27 22:15:06 +00:00
paul-szczepanek-arm a034bf875e gatt server pass
mostly phy and security issues
2019-02-27 21:52:07 +00:00
paul-szczepanek-arm f8c28fcbe7 privacy pass 2019-02-27 21:51:16 +00:00
paul-szczepanek-arm aa6342b265 cordio security pass 2019-02-27 21:47:22 +00:00
paul-szczepanek-arm bc3ff56504 partial security pass 2019-02-27 21:46:08 +00:00
paul-szczepanek-arm c3a72073be cordio extended peripheral pass 2019-02-27 21:39:07 +00:00
paul-szczepanek-arm ec6783ed77 cordio peripheral role pass 2019-02-27 21:39:06 +00:00
paul-szczepanek-arm 45eca7c373 cordio observer role pass 2019-02-27 21:36:26 +00:00
paul-szczepanek-arm eb16fb6053 broadcaster role cordio pass 2019-02-27 21:34:00 +00:00
paul-szczepanek-arm 909b78fc14 complete gap feature ifdef 2019-02-27 21:15:54 +00:00
paul-szczepanek-arm 630b2fe792 more gap ifdefs 2019-02-27 21:08:15 +00:00
paul-szczepanek-arm 1d5b7d4056 ifdef source files based on features 2019-02-27 21:00:11 +00:00
paul-szczepanek-arm 9e710d4309 git review changes 2019-02-27 20:59:35 +00:00
paul-szczepanek-arm 208eb200f1 gatt client signing 2019-02-27 20:57:09 +00:00
paul-szczepanek-arm 3e03c11832 guard class fields with ifs 2019-02-27 20:55:58 +00:00
paul-szczepanek-arm 5a97706aab added #if guards to cordio ble 2019-02-27 19:46:12 +00:00
paul-szczepanek-arm aefab05e5a add all the features and rename existing non-roles to features 2019-02-27 19:31:46 +00:00
Steve Cartmell 72d28d920a feat(ble): Guard out Observer code when role is disabled 2019-02-27 19:29:51 +00:00
Steve Cartmell 5d73a03a64 feat(ble): Guard out SecurityManager code when role is disabled 2019-02-27 19:24:40 +00:00
Steve Cartmell 73f7ffb124 feat(ble): Guard out GattServer code when role is disabled 2019-02-27 19:24:39 +00:00
Steve Cartmell 6e301ce148 feat(ble): Guard out GattClient code when role is disabled 2019-02-27 19:23:31 +00:00
Vincent Coubard 04d26f7ab5 BLE - Devirtualize ::ble::generic::GenericSecurityManager
Two parameters are expected by the template:
- TPalSecurityManager a template class of the security manager of the form TPalSecurityManager<EventHandler>. The GenericSecurityManager is the event handler.
- SigningMonitor a template in the form SigningMonitor<Handler>.
2019-02-26 13:18:17 +00:00
Vincent Coubard b135074821 BLE - Devirtualize ble::generic::GattClient
GenericGattClient is parametized by two types:
- The template of the PalGattClient
- The SigningMonitorEventHandler

Note that the PalGattClient template must be of the form PalGattClient<EventHandler>. The event handler being the GenericGattClient.
2019-02-26 13:18:17 +00:00
Vincent Coubard 39e938bf8e BLE - Devirtualize ble::generic::GenericGap
Expected types are similar to the type expected by the constructor:
- PalGap
- PalSecurityManager
- ConnectionEventMonitorEventHandler

Note that for the PalGap we expect a **template** of the form PalGap<EventHandler>
2019-02-26 13:18:17 +00:00
Vincent Coubard fb39848481 BLE - Cleanup deprecation implementation bits in BLE.cpp 2019-02-26 13:18:17 +00:00
Vincent Coubard 7796e733ad BLE - Devirtualize ::SecurityManager
The interface now lives in ::ble::interface::SecurityManager. The implementation type is expectected to exported as ble ::ble::impl::SecurityManager by the implementation.
2019-02-26 13:18:17 +00:00
Vincent Coubard 6d2592a137 BLE - Devirtualize ::GattServer.
The interface is defined in ::ble::interface::GattServer and an implementation must export the implementation type ::ble::impl::GattServer.
2019-02-26 13:18:17 +00:00
Vincent Coubard e56fd682a1 BLE - Devirtualize ::GattClient
Interface definition now lives in ble::interface::GattClient. An implementation must export the implementation type in ::ble::impl::GattClient.
2019-02-26 13:18:17 +00:00
Vincent Coubard 43e87fb04d BLE - Devirtualize ::ble::Gap
The interface definition now lives in ::ble::interface::Gap.
The implementation must export the implementation types as ::ble::impl::Gap.
2019-02-26 13:18:17 +00:00
Vincent Coubard 1ad726322f BLE - Devirtualization of ::Gap
The interface definition now lives in ::ble::interface::LegacyGap. Implementation must export the implementation type as ble::impl::LegacyGap.
2019-02-26 13:18:17 +00:00
Vincent Coubard 7e78433cec BLE - replace some usages of Gap::Handle_t by ble::connection_handle_t 2019-02-26 13:18:17 +00:00
paul-szczepanek-arm b628285254 route mtu changed events to server and client instead of gap 2019-02-14 12:34:33 +00:00
paul-szczepanek-arm c10fc2eb8e add API to trigger MTU negotiation 2019-02-14 12:34:33 +00:00
paul-szczepanek-arm b6df6d54a1 change event names 2019-02-14 12:34:32 +00:00
paul-szczepanek-arm 06a2a403e9 fix typos 2019-02-14 12:34:31 +00:00
paul-szczepanek-arm 108d6908be route ble events to gap 2019-02-14 12:34:31 +00:00
paul-szczepanek-arm c452d8ff0e add mtu events 2019-02-14 12:34:31 +00:00
Senthil Ramakrishnan 2030d03590 Modified fixes with review comments 2019-02-01 17:49:49 -06:00
Senthil Ramakrishnan ea30ed7a36 Fix for ARMc6 compiler errors 2019-02-01 17:46:50 -06:00
paul-szczepanek-arm d9c919b7e1 review fixes 2019-01-30 12:19:04 +00:00
paul-szczepanek-arm e1a8fb5a7a check scanning status first 2019-01-30 11:45:26 +00:00
paul-szczepanek-arm 7f888f86bf scan timeout for 4.2 controllers using new API 2019-01-30 11:37:17 +00:00
Cruz Monrreal b49d949b50
Merge pull request #9393 from pan-/fix-safe-enum-type-safety
BLE: Fix SafeEnum type safety
2019-01-28 10:31:52 -06:00
Martin Kojtal 4019efb21d
Merge pull request #9399 from paul-szczepanek-arm/fix-null-check
BLE: fix missing null checks on Gap event handler
2019-01-21 13:43:16 +01:00
paul-szczepanek-arm 42e4290160 error when there is no handler 2019-01-18 14:55:38 +00:00
Cruz Monrreal fd2a96e7ad
Merge pull request #9339 from costanic/fix_oob
Fix Out-Of-Band (OOB) data generation for BLE OOB pairing
2019-01-17 21:51:54 -06:00
Martin Kojtal 284781a565
Merge pull request #9096 from pan-/fix-enforce-size-limits
BLE: Enforce advertising data payload limits
2019-01-17 12:41:57 +01:00
Vincent Coubard f8ef143ed7 BLE: Fix comparison expression between an integer and a SafeEnum 2019-01-16 16:06:21 +00:00
paul-szczepanek-arm fa36ed02ee add missing null checks 2019-01-16 14:56:54 +00:00
Nic Costa 55507eaf75 Fix race condition when generating OOB data
The GenericSecurityManager tracks the most recent OOB data generated
by the PAL and the PAL function to generate OOB data is expected to
be asynchronous such that the OOB data is returned via a callback.

There was a race condition on the security manager's oob data variable
because it was cleared (set to all zeros) after calling PAL generate.
The expectation was that the clear operation would occur before the
callback executed, but this is proving to not be the case.  Instead,
the callback is being executed as if it were syncronous with PAL
generate, then PAL generate returns and the oob data is cleared,
thereby losing the generated oob data that was set in the callback.

To fix the issue, clear the oob data variables before calling into
the PAL.
2019-01-11 08:54:30 -06:00
Martin Kojtal 0f7381d436
Merge pull request #9058 from pan-/fix-scan-timeout
BLE: suppress scan timeout if we disabled scanning
2019-01-04 08:41:36 +00:00
paul-szczepanek-arm 3be792a3b3 simplify for statement 2019-01-03 12:24:33 +00:00
paul-szczepanek-arm dd1d473375 future proof return size 2019-01-02 15:42:14 +00:00
paul-szczepanek-arm 8b39071cd8 make function name longer 2019-01-02 14:29:30 +00:00
paul-szczepanek-arm 67db321500 check illegal adv params combimnation 2018-12-13 17:52:18 +00:00
paul-szczepanek-arm ff0a2a907e check connectible sizes 2018-12-13 17:52:00 +00:00
paul-szczepanek-arm 7dd90e1810 Docuement active set length and add informative call for querying the limit 2018-12-13 17:51:10 +00:00
paul-szczepanek-arm e1cf516100 fix max payload and hci length values 2018-12-13 17:50:53 +00:00
paul-szczepanek-arm 50d1818d72 call advertising end even if stopped by us 2018-12-13 17:33:36 +00:00
Naveen Kaje 448c4d5d89 BLE: Update toolchain.h with mbed_toolchain.h
Fixes the following warning

[Warning] toolchain.h@24,0: #1215-D: #warning directive:
toolchain.h has been replaced by mbed_toolchain.h,
please update to mbed_toolchain.h [since mbed-os-5.3]
2018-12-10 13:57:52 -06:00
paul-szczepanek-arm 13a10f3efa suppress scan timeout if we disabled scanning 2018-12-10 16:31:34 +00:00
paul-szczepanek-arm a545da7790 remove noreturn error function to avoid compilation issues 2018-12-10 13:54:09 +00:00
Vincent Coubard 698447b622 BLE: Fix address type allowed to create a periodic sync. 2018-12-07 00:04:29 +00:00
Vincent Coubard df95a1f8bd BLE: Allow null value for periodic interval in advertising report event. 2018-12-07 00:03:50 +00:00
Vincent Coubard c83dccf65c BLE: Set advertising random address when appropriate. 2018-12-06 11:25:50 +00:00
Vincent Coubard ed426c5b45 BLE: rename ConnectionParameters::getFilterPolicy into getFilter for consistency. 2018-12-03 17:11:28 +00:00
Vincent Coubard e026bce881 BLE: Change parameter order of ble::Gap::startScan 2018-12-03 16:50:10 +00:00
Vincent Coubard 4ed3f5620f BLE: Fix name of DisconnectionEvent into DisconnectionCompleteEvent for consistency. 2018-11-29 12:28:38 +00:00
Vincent Coubard 3ddcdf24a3 BLE: Fix ble::Gap::getMaxAdvertisingDataLength return type. 2018-11-29 12:26:40 +00:00
Vincent Coubard 402a4479d2 BLE: Ensure scan process is stopped before connecting. 2018-11-29 12:22:34 +00:00
Vincent Coubard 78468fb6e3 BLE: Use RANDOM address per default for Advertising, Scan and Connection parameter.
Unlike the public address, the RANDOM address is guaranteed to exist.
If privacy is enabled, it means the controller will generates random resolvable addresses or non resolvable addresses depending on the config.
If privacy is not enabled then the device will use the device's random static address that doesn't change between radio processes.
2018-11-29 12:18:11 +00:00
Vincent Coubard e7ef0b764e BLE: protect event signaling flag from concurent accesses. 2018-11-28 17:25:44 +00:00
paul-szczepanek-arm 5302a7f599 consistent errors 2018-11-27 15:38:01 +00:00
Vincent Coubard daee12d623 BLE: Fix set check in GenerigGap::stopAdvertising. 2018-11-27 15:29:52 +00:00
Vincent Coubard 6677fab856 BLE: Move source/Gap.cpp -> source/LegacyGap.cpp 2018-11-27 09:12:28 +00:00
Vincent Coubard a65296e9ee BLE: removed resolved TODO. 2018-11-26 23:44:23 +00:00
Vincent Coubard 66a9e635bd BLE: report correct event type for legacy advertising report. 2018-11-26 23:28:30 +00:00
Vincent Coubard 0c9ce24638 BLE: remove unwanted trace. 2018-11-26 23:16:31 +00:00