Introduced a fix for defect IOTSFW-1058 that caused the
BLE_EddystoneBeaconConfigService example in ARMmbed/ble-examples repo to fail.
Refer to JIRA defect for more details.
=============
* Introduce an Instance() class method to BLE to allow access to the BLE
singleton(s) using instanceID. Calling BLE::Instance() is preferable to
constructing a BLE object directly because Instance() returns references to
internally created singletons.
* We've added an initial prototype for a yotta-config based initialization for BLE transports.
It is conceivable to have multiple BLE transports available to a system
concurrently in which case Instance() can be passed an instanceID.
There's also a BLE::NUM_INSTANCES--instanceID passed to Instance() should be
less than NUM_INSTANCES for the returned BLE singleton to be useful.
The config system now allows the target to specify multiple BLE instances.
BLE::Instance() and BLE constructor rely upon a static array of initializers
to create actual BLE transport instances. A description of these instances
and initializers is supposed to be put in some .json file contributing to
yotta's configuration (typically the target.json). Here's a sample:
"config": {
...
"ble_instances": {
"count": 1,
"0" : {
"initializer" : "createBLEInstance"
}
}
}
Refer to http://yottadocs.mbed.com/reference/config.html.
Note: The configuration system is currently experimental. Some of the
behaviour described below may change in backwards-incompatible ways with
minor updates to yotta.
The use of this feature is optional. Initialization would continue to work
like before as long as there is a default createBLEInstance() method
available.
* We've updated our support for Google's Eddystone beacon by adding the EddystoneConfigService.
* Added onConnection() and onDisconnection() now append to a callback chain internally.
Please note that this has also changed the callbackType for onDisconnection; resulting in a minor breaking change for API.
All previous programs using onDisconnection() would need to adapt.
* Handle the case of a NULL transport pointer for BLE.
* We now disallow copy constructor and assignment operator for BLE.
=============
* Depend on an updated version of nRF51822 which provides event handling
through the mbed OS scheduler. As a result, all mbed-OS BLE event handling
now happens in thread mode.
* minor: use "mbed-os" to select the target dependency on mbed-drivers. This
allows bbc-micro builds.
=============
Enhancements
~~~~~~~~~~~~
* Add connection handle to GATT callback parameters. This paves the way for
applications requiring multiple concurrent connections: read/write/HVX
callbacks will be able to distinguish between peripherals by comparing per-
device connection handles.
* Revert to an older, working version of eddystone. This is temporary, and
will only help with demos. We will provide a mature Eddystone offering
shortly.
This commit paves the way for multiple device implementation:
read/write/HVX callbacks will be able to distinguish between
peripherals by comparing per-device connection handles.