- There's a new type: BLE::InitializationCompleteCallback_t
- init() now takes a completion callback. This is an optional parameter, if no callback is setup the application can still determine the status of initialization using BLE::hasInitialized() (see below).
- There's a new API: BLEInstanceBase::hasInitialized() which transports need to implement.
- BLEInstanceBase.h is no longer included from BLE.h. We use a forward declaration of BLEInstanceBase instead. This is required us to move implementations of BLE methods out of the header and into BLE.cpp.
- There's a new API: BLE::getInstanceID(), which simply returns the ID of an instance.
- There are new error types around initialization.
- add a space after if keyword
- Use typedef types instead of direct declarations for
pFunctionPointerWithContext_t and pvoidfcontext_t
- Fix typos and enhance comment about how alignement and size
requirements of the member function pointer are computed.
bytes (oryginally, it was 32 bytes !).
Enforce alignement constraints of the embedded pointer to member function.
Symplify and unify call mecanic, everything is delegated uniformally to the actual
implementation.
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.