Commit graph

1 commit

Author SHA1 Message Date
Rohit Grover
2f92904fbe Release 2.0.0
=============

* Major change to the APIs around stack initialization. BLE::init() is now
  meant to only trigger the initialization of the underlying BLE stack. init()
  now takes a completion callback as an optional parameter; this callback gets
  invoked when initialization completes.

    - There's a new type: BLE::InitializationCompleteCallback_t

    - There's a new API: BLEInstanceBase::hasInitialized() which transports
      need to implement.

    - If no init-completion callback is setup, the application can still
      determine the status of initialization using BLE::hasInitialized().

    !This update may require in a minor change to existing apps!

    mbed-classic demos would look something like:

    ```
    main() {
        BLE::Instance().init();
        while (!BLE::Instance().hasInitialized()) {
            /* spin wait */
        }

        /* rest of the initialization ending in the waitForEvent loop */

    }
    ```

    whereas mbedOS demos would look like:

    ```
    void bleInitComplete(BLE &ble, ble_error_t error)
    {
        WsfTrace("bleInitComplete");

        if (error != BLE_ERROR_NONE) {
            WsfTrace("initailization failed with error: %u", error);
            return;
        }

        if (ble.getInstanceID() == BLE::DEFAULT_INSTANCE) {
            /* use the BLE instance */
        }
    }

    extern "C" void app_start(int argc, char *argv[])
    {
        BLE::Instance().init(bleInitComplete);
    }
    ```

    The Nordic stack initializes right-away, and so existing demos based on Nordic should continue to work.

* There's a new API: BLE::getInstanceID(), which simply returns the ID of an
  instance.

* Reduce the memory footprint consumed by a FunctionPointerWithContext to 20
  bytes (originally, it was 32 bytes !). Also enforce alignment constraints
  of the embedded pointer to member function. This should help with the size
  of a GattCharacteristic.

* Add EnvironmentalService.h under services/.

* There have been minor improvements to EddystoneService and EddystoneConfigService.

* We've added a CONTRIBUTING.md to help guide user contributions.
2015-11-02 08:52:41 +00:00