1

Fork of nRF51822 by Nordic Semiconductor

Committer:
rgrover1
Date:
Thu Jul 02 09:08:44 2015 +0100
Revision:
362:6fa0d4d555f6
Parent:
361:d2405f5a4853
Child:
367:baa35c3860e6
Synchronized with git rev 2716309c
Author: Rohit Grover
Release 0.4.0
=============

This is a major release which introduces the GATT Client functionality. It
aligns with release 0.4.0 of BLE_API.

Enhancements
~~~~~~~~~~~~

* Introduce GattClient. This includes functionality for service-discovery,
connections, and attribute-reads and writes. You'll find a demo program for
LEDBlinker on the mbed.org Bluetooth team page to use the new APIs. Some of
the GATT client functionality hasn't been implemented yet, but the APIs have
been added.

* We've added an implementation for the abstract base class for
SecurityManager. All security related APIs have been moved into that.

* There has been a major cleanup of APIs under BLE. APIs have now been
categorized as belonging to Gap, GattServer, GattClient, or SecurityManager.
There are accessors to get references for Gap, GattServer, GattClient, and
SecurityManager. A former call to ble.setAddress(...) is now expected to be
achieved with ble.gap().setAddress(...).

* We've cleaned up our APIs, and this has resulted in dropping some APIs like
BLE::reset().

* We've also dropped GattServer::initializeGattDatabase(). THis was added at
some point to support controllers where a commit point was needed to
indicate when the application had finished constructing the GATT database.
This API would get called internally before Gap::startAdvertising(). We now
expect the underlying port to do the equivalent of initializeGattDatabase()
implicitly upon Gap::startAdvertising().

* We've added a version of Gap::disconnect() which takes a connection handle.
The previous API (which did not take a connection handle) has been
deprecated; it will still work for situations where there's only a single
active connection. We hold on to that API to allow existing code to migrate
to the new API.

Bugfixes
~~~~~~~~

* None.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Rohit Grover 22:c6ee8136847e 1 /* mbed Microcontroller Library
Rohit Grover 22:c6ee8136847e 2 * Copyright (c) 2006-2013 ARM Limited
Rohit Grover 22:c6ee8136847e 3 *
Rohit Grover 22:c6ee8136847e 4 * Licensed under the Apache License, Version 2.0 (the "License");
Rohit Grover 22:c6ee8136847e 5 * you may not use this file except in compliance with the License.
Rohit Grover 22:c6ee8136847e 6 * You may obtain a copy of the License at
Rohit Grover 22:c6ee8136847e 7 *
Rohit Grover 22:c6ee8136847e 8 * http://www.apache.org/licenses/LICENSE-2.0
Rohit Grover 22:c6ee8136847e 9 *
Rohit Grover 22:c6ee8136847e 10 * Unless required by applicable law or agreed to in writing, software
Rohit Grover 22:c6ee8136847e 11 * distributed under the License is distributed on an "AS IS" BASIS,
Rohit Grover 22:c6ee8136847e 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Rohit Grover 22:c6ee8136847e 13 * See the License for the specific language governing permissions and
Rohit Grover 22:c6ee8136847e 14 * limitations under the License.
Rohit Grover 22:c6ee8136847e 15 */
Rohit Grover 22:c6ee8136847e 16
Rohit Grover 22:c6ee8136847e 17 #ifndef __NRF51822_GATT_SERVER_H__
Rohit Grover 22:c6ee8136847e 18 #define __NRF51822_GATT_SERVER_H__
Rohit Grover 22:c6ee8136847e 19
rgrover1 76:ce629a504851 20 #include <stddef.h>
rgrover1 76:ce629a504851 21
rgrover1 362:6fa0d4d555f6 22 #include "ble/blecommon.h"
Rohit Grover 22:c6ee8136847e 23 #include "ble.h" /* nordic ble */
rgrover1 362:6fa0d4d555f6 24 #include "ble/Gap.h"
rgrover1 362:6fa0d4d555f6 25 #include "ble/GattServer.h"
Rohit Grover 22:c6ee8136847e 26
Rohit Grover 22:c6ee8136847e 27 class nRF51GattServer : public GattServer
Rohit Grover 22:c6ee8136847e 28 {
Rohit Grover 22:c6ee8136847e 29 public:
rgrover1 180:5082f66bb16e 30 static nRF51GattServer &getInstance();
Rohit Grover 22:c6ee8136847e 31
Rohit Grover 22:c6ee8136847e 32 /* Functions that must be implemented from GattServer */
Rohit Grover 22:c6ee8136847e 33 virtual ble_error_t addService(GattService &);
rgrover1 362:6fa0d4d555f6 34 virtual ble_error_t read(GattAttribute::Handle_t attributeHandle, uint8_t buffer[], uint16_t *lengthP);
rgrover1 362:6fa0d4d555f6 35 virtual ble_error_t read(Gap::Handle_t connectionHandle, GattAttribute::Handle_t attributeHandle, uint8_t buffer[], uint16_t *lengthP);
rgrover1 362:6fa0d4d555f6 36 virtual ble_error_t write(GattAttribute::Handle_t, const uint8_t[], uint16_t, bool localOnly = false);
rgrover1 362:6fa0d4d555f6 37 virtual ble_error_t write(Gap::Handle_t connectionHandle, GattAttribute::Handle_t, const uint8_t[], uint16_t, bool localOnly = false);
Rohit Grover 22:c6ee8136847e 38
Rohit Grover 22:c6ee8136847e 39 /* nRF51 Functions */
Rohit Grover 22:c6ee8136847e 40 void eventCallback(void);
Rohit Grover 22:c6ee8136847e 41 void hwCallback(ble_evt_t *p_ble_evt);
Rohit Grover 22:c6ee8136847e 42
Rohit Grover 22:c6ee8136847e 43 private:
rgrover1 184:d51fa0c27bbb 44 const static unsigned BLE_TOTAL_CHARACTERISTICS = 20;
rgrover1 184:d51fa0c27bbb 45 const static unsigned BLE_TOTAL_DESCRIPTORS = 8;
rgrover1 75:95d732949d23 46
rgrover1 74:d453d7969553 47 GattCharacteristic *p_characteristics[BLE_TOTAL_CHARACTERISTICS];
rgrover1 74:d453d7969553 48 ble_gatts_char_handles_t nrfCharacteristicHandles[BLE_TOTAL_CHARACTERISTICS];
rgrover1 74:d453d7969553 49 GattAttribute *p_descriptors[BLE_TOTAL_DESCRIPTORS];
rgrover1 74:d453d7969553 50 uint8_t descriptorCount;
rgrover1 74:d453d7969553 51 uint16_t nrfDescriptorHandles[BLE_TOTAL_DESCRIPTORS];
Rohit Grover 22:c6ee8136847e 52
rgrover1 72:46db8d5c65d1 53 nRF51GattServer() : GattServer(), p_characteristics(), nrfCharacteristicHandles(), p_descriptors(), descriptorCount(0), nrfDescriptorHandles() {
rgrover1 72:46db8d5c65d1 54 /* empty */
rgrover1 72:46db8d5c65d1 55 }
rgrover1 71:f11b3e313843 56
rgrover1 71:f11b3e313843 57 private:
rgrover1 71:f11b3e313843 58 nRF51GattServer(const nRF51GattServer &);
rgrover1 71:f11b3e313843 59 const nRF51GattServer& operator=(const nRF51GattServer &);
Rohit Grover 22:c6ee8136847e 60 };
Rohit Grover 22:c6ee8136847e 61
rgrover1 74:d453d7969553 62 #endif // ifndef __NRF51822_GATT_SERVER_H__