Commit Graph

956 Commits (2b60c871d80df86d645f0402d90b82b16ee247e9)

Author SHA1 Message Date
Martin Kojtal e4e6c645fa
Merge pull request #11204 from paul-szczepanek-arm/non-scan
BLE: add nonscannable connectable type
2019-08-20 13:58:32 +02:00
Martin Kojtal 7ee382bdc0
Merge pull request #11216 from paul-szczepanek-arm/fix-ad-parser
BLE: make advertising data parser handle early termination
2019-08-20 09:59:18 +02:00
Paul Szczepanek 71f59eaf6c
add comments 2019-08-14 17:11:52 +01:00
paul-szczepanek-arm 280c55d57a fix recursive call 2019-08-14 09:39:04 +01:00
paul-szczepanek-arm 8acd127640 handle early termination of ad struct 2019-08-13 14:49:18 +01:00
paul-szczepanek-arm c79ffd112f add nonscannable connectable type 2019-08-12 16:38:42 +01:00
George Beckstein bb60251fdf Remove flexing on Tesla 💪💪💪 2019-07-02 13:05:18 -04:00
Lingkai Dong 7426a8a860 Remove ArrayView
All use of ArrayView within mbed-os have been removed, and
it is not a public API.
2019-06-07 16:19:18 +01:00
Lingkai Dong 6f7f1337cd BLE: Replace uses of ArrayView with mbed::Span
The platform API mbed::Span provides the same features as ArrayView.
2019-06-07 16:18:55 +01:00
Martin Kojtal c4cc9c4f1b
Merge pull request #10646 from LDong-Arm/connectionCount
Fix deprecation notice for ble::Gap::getState()
2019-05-24 09:11:58 +01:00
Martin Kojtal 86bd7f05f0
Merge pull request #10634 from LDong-Arm/ble-api-update
BLE: fix deprecated API calls in battery and thermometer services
2019-05-23 21:37:19 +01:00
Lingkai Dong c84a13c0f2 Fix deprecation notice for ble::Gap::getState()
The deprecation notice suggests getConnectionCount() which
did not land in the final API. The proper replacement is keeping
your own record and updating during connection and disconnection
callbacks.
2019-05-23 16:36:28 +01:00
Martin Kojtal 3801d4a1c3
Merge pull request #10635 from LDong-Arm/deprecated_ble_services
BLE: deprecate UARTService and suppress compiler warnings
2019-05-23 14:52:17 +01:00
Lingkai Dong ce775d58e9 BLE HealthThermometerService: correct GATT characteristics
As per official specification, temperature measurement requires
the GATT characteristic "INDICATE" instead of "NOTIFY".

Full credits to Jean-Marc Jobin (@jmjobin on GitHub) for
identifying the issue and proposing this fix.
2019-05-23 09:56:01 +01:00
Lingkai Dong f3c29df377 Suppress warnings of deprecated API in deprecated services
Services that already have deprecation notices in place should
not trigger more warnings from the compiler.
2019-05-23 09:17:22 +01:00
Lingkai Dong 31edc25ae7 Deprecate UARTService
UARTService is rarely used and has not been actively updated.
2019-05-22 13:49:23 +01:00
Lingkai Dong 1b71c934c4 BLE services: update to use the latest APIs
Update BatterService and HealthThermometerService to use
up-to-date BLE APIs.

Note: HealthThermometerService::updateTemperature() will
not check GAP connection which should be taken care of by
the caller.
2019-05-22 13:44:31 +01:00
Vincent Coubard cb97b3c2e2 BLE - Document GattClientEventHandler::on_write_command_sent. 2019-05-16 11:40:46 +01:00
Vincent Coubard de482e4029 BLE: Create and handle write_command Event.
This event is raised when a write command has been sent to the controller. It can be used to queue a new write command.
2019-05-14 17:13:51 +01:00
Vincent Coubard e814a3cfb3 BLE: handle GattServerEvents::GATT_EVENT_DATA_SENT 2019-05-14 17:12:02 +01:00
Marc Emmers bd74cb2ab7 Removed function calls from mbed_assert, which caused the functions to be ignored in release mode 2019-03-29 09:47:28 +01:00
paul-szczepanek-arm dad6844167 bounce scan timeout of the queue 2019-03-26 10:53:10 -05:00
Cruz Monrreal c81a292921
Merge pull request #10092 from desmond-blue/fix-ble-on_phy_update_complete
BLE:fix on_phy_update_complete function
2019-03-16 23:00:37 -05:00
Desmond Chen a6df7b2bd7 BLE:fix on_phy_update_complete function 2019-03-14 11:42:03 +08:00
Vincent Coubard b183ba1d01 BLE - Use LowPower Ticker and Timer for address rotation and scan timeout. 2019-03-07 16:49:58 +00:00
paul-szczepanek-arm 54a866c159 add broadcaster ifdef and pull headers into ifdef 2019-02-28 17:18:30 +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 20c4e4ced5 BLE - Fix call to implementation. 2019-02-28 13:40:09 +00:00
Vincent Coubard ca44ce3cd8 BLE - Conditionally expose SecurityManager::enableSigning 2019-02-28 13:27:16 +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 e706b6cc52 BLE - Cleanup Generic GattClient conditional directives.
- Inherithance list
- private functions exposed
- members declaration.
2019-02-28 11:32:51 +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 f7df97bed7 BLE - Remove conditionnal directive within GattClient::WriteOp_t 2019-02-28 11:29:35 +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 bc10a09c4e BLE - Remove conditional directive removing functions in pal. 2019-02-28 11:24:08 +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 bc3ff56504 partial security pass 2019-02-27 21:46:08 +00:00
paul-szczepanek-arm a1815e31f0 correct dependencies for central and peripheral 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 c198603c63 ble ifdefs 2019-02-27 21:17:15 +00:00
paul-szczepanek-arm e44c3edede fix gap ifdefs 2019-02-27 21:17:15 +00:00
paul-szczepanek-arm 909b78fc14 complete gap feature ifdef 2019-02-27 21:15:54 +00:00
paul-szczepanek-arm c8d8c4e159 merge failure fix 2019-02-27 21:00:10 +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 33e8826361 whitelist feature 2019-02-27 19:46:43 +00:00
paul-szczepanek-arm bc69e15638 revert accidental changes 2019-02-27 19:46:42 +00:00
paul-szczepanek-arm dc3aba181e fix BLE_CONNECTABLE_FEATURE macro 2019-02-27 19:46:12 +00:00
paul-szczepanek-arm 5a97706aab added #if guards to cordio ble 2019-02-27 19:46:12 +00:00
paul-szczepanek-arm bed567825f connectable is a feature not role 2019-02-27 19:31:47 +00:00
paul-szczepanek-arm b60eaf14a2 require macros to be defined 2019-02-27 19:31:47 +00:00
paul-szczepanek-arm 9a22db0e96 implied features 2019-02-27 19:31:46 +00:00
paul-szczepanek-arm 212e9477d3 require at least one role observer or broadcaster 2019-02-27 19:31:46 +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
Steve Cartmell 9806f91ecf feat(ble): Add preprocessor check to determine enabled roles are valid
A number of BLE roles depend on each other, checking within the target
configuration file for a valid configuration is infeasible. Move the
validation to the preprocessor and fail to compile if some required
roles are not enabled.
2019-02-27 19:00:08 +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 e70fb27d55 BLE - cleanup includes. 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 2d007eee42 BLE - Devirtualize pal::SigningEventMonitor
The event handler has been extracted out of SigningEventMonitor declaration and SigningEventMonitor instantion requires the implementation and event handler type.
2019-02-26 13:18:17 +00:00
Vincent Coubard 50de4c8a44 BLE - Devirtualize pal::SecurityManager
The event handler has been extracted out of SecurityManager declaration and instantion of the interface requires the implementation and event handler type.
2019-02-26 13:18:17 +00:00
Vincent Coubard e1371f8149 BLE - Devirtualize pal::GattClient
The event handler has been taken out of GattClient declaration and an instantiation requires the actual implementation and the type that handle events.
2019-02-26 13:18:17 +00:00
Vincent Coubard 0749100676 BLE - Devirtualize pal::Gap
The event handler has been taken out of Gap declaration and the instantiation must provide an implementation and the type that plays the event handler role.
2019-02-26 13:18:17 +00:00
Vincent Coubard 6514bbd1f0 BLE - Devirtualize pal::ConnectionEventMonitor
The event handler has been extracted out of the monitor declaration.
2019-02-26 13:18:17 +00:00
Vincent Coubard 71b8d8a2f3 BLE - devirtualize pal::AttClientToGattClientAdapter 2019-02-26 13:18:17 +00:00
Vincent Coubard 333a31507b BLE - devirtualize pal::AttClient 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
Vincent Coubard bc098d0272 BLE - add static interface helper. 2019-02-26 13:18:17 +00:00
Cruz Monrreal b1d0d9e95c
Merge pull request #9776 from ConradBraam/adv_builder
adv builder helper now returns an object
2019-02-20 12:04:51 -06:00
Conrad Braam 57033ee91a adv builder helper now returns an object 2019-02-20 13:54:38 +00:00
paul-szczepanek-arm db4aecb275 fixed initialisation order 2019-02-19 17:26:43 +00:00
paul-szczepanek-arm 1cea53b6a7 use grandfathered convention for class members names and initialise them 2019-02-14 12:34:34 +00:00
paul-szczepanek-arm 3808db90b2 require pal event handler to be complete 2019-02-14 12:34:34 +00:00
paul-szczepanek-arm 03b747a6f6 Get the pal event handler from pal gattclient 2019-02-14 12:34:34 +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 a3f635eb88 fix type name 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
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