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:
370:295f76db798e
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
bogdanm 0:eff01767de02 1 /* mbed Microcontroller Library
bogdanm 0:eff01767de02 2 * Copyright (c) 2006-2013 ARM Limited
bogdanm 0:eff01767de02 3 *
bogdanm 0:eff01767de02 4 * Licensed under the Apache License, Version 2.0 (the "License");
bogdanm 0:eff01767de02 5 * you may not use this file except in compliance with the License.
bogdanm 0:eff01767de02 6 * You may obtain a copy of the License at
bogdanm 0:eff01767de02 7 *
bogdanm 0:eff01767de02 8 * http://www.apache.org/licenses/LICENSE-2.0
bogdanm 0:eff01767de02 9 *
bogdanm 0:eff01767de02 10 * Unless required by applicable law or agreed to in writing, software
bogdanm 0:eff01767de02 11 * distributed under the License is distributed on an "AS IS" BASIS,
bogdanm 0:eff01767de02 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
bogdanm 0:eff01767de02 13 * See the License for the specific language governing permissions and
bogdanm 0:eff01767de02 14 * limitations under the License.
bogdanm 0:eff01767de02 15 */
bogdanm 0:eff01767de02 16
bogdanm 0:eff01767de02 17 #ifndef _PROJECTCONFIG_H_
bogdanm 0:eff01767de02 18 #define _PROJECTCONFIG_H_
bogdanm 0:eff01767de02 19
rgrover1 362:6fa0d4d555f6 20 #include "ble/blecommon.h"
Rohit Grover 53:1e5c300cec7f 21
bogdanm 0:eff01767de02 22 /*=========================================================================
bogdanm 0:eff01767de02 23 MCU & BOARD SELCTION
bogdanm 0:eff01767de02 24
bogdanm 0:eff01767de02 25 CFG_BOARD is one of the value defined in board.h
bogdanm 0:eff01767de02 26 -----------------------------------------------------------------------*/
bogdanm 0:eff01767de02 27 #define CFG_BOARD BOARD_PCA10001
bogdanm 0:eff01767de02 28 #define CFG_MCU_STRING "nRF51822"
bogdanm 0:eff01767de02 29 /*=========================================================================*/
bogdanm 0:eff01767de02 30
bogdanm 0:eff01767de02 31
bogdanm 0:eff01767de02 32 /*=========================================================================
bogdanm 0:eff01767de02 33 CODE BASE VERSION SETTINGS
bogdanm 0:eff01767de02 34
bogdanm 0:eff01767de02 35 Please do not modify this version number. To set a version number
bogdanm 0:eff01767de02 36 for your project or firmware, change the values in your 'boards/'
bogdanm 0:eff01767de02 37 config file.
bogdanm 0:eff01767de02 38 -----------------------------------------------------------------------*/
bogdanm 0:eff01767de02 39 #define CFG_CODEBASE_VERSION_MAJOR 0
bogdanm 0:eff01767de02 40 #define CFG_CODEBASE_VERSION_MINOR 1
bogdanm 0:eff01767de02 41 #define CFG_CODEBASE_VERSION_REVISION 0
bogdanm 0:eff01767de02 42 /*=========================================================================*/
bogdanm 0:eff01767de02 43
bogdanm 0:eff01767de02 44
bogdanm 0:eff01767de02 45 /*=========================================================================
bogdanm 0:eff01767de02 46 FIRMWARE VERSION SETTINGS
bogdanm 0:eff01767de02 47 -----------------------------------------------------------------------*/
bogdanm 0:eff01767de02 48 #define CFG_FIRMWARE_VERSION_MAJOR 0
bogdanm 0:eff01767de02 49 #define CFG_FIRMWARE_VERSION_MINOR 0
bogdanm 0:eff01767de02 50 #define CFG_FIRMWARE_VERSION_REVISION 0
bogdanm 0:eff01767de02 51 /*=========================================================================*/
bogdanm 0:eff01767de02 52
bogdanm 0:eff01767de02 53
bogdanm 0:eff01767de02 54 /*=========================================================================
bogdanm 0:eff01767de02 55 DEBUG LEVEL
bogdanm 0:eff01767de02 56 -----------------------------------------------------------------------
bogdanm 0:eff01767de02 57
bogdanm 0:eff01767de02 58 CFG_DEBUG Level 3: Full debug output, any failed assert
bogdanm 0:eff01767de02 59 will produce a breakpoint for the
bogdanm 0:eff01767de02 60 debugger
bogdanm 0:eff01767de02 61 Level 2: ATTR_ALWAYS_INLINE is null, ASSERT
bogdanm 0:eff01767de02 62 has text
bogdanm 0:eff01767de02 63 Level 1: ATTR_ALWAYS_INLINE is an attribute,
bogdanm 0:eff01767de02 64 ASSERT has no text
bogdanm 0:eff01767de02 65 Level 0: No debug information generated
bogdanm 0:eff01767de02 66
bogdanm 0:eff01767de02 67 -----------------------------------------------------------------------*/
Rohit Grover 26:dade7d2857b4 68 #define CFG_DEBUG (1)
bogdanm 0:eff01767de02 69
bogdanm 0:eff01767de02 70 #if (CFG_DEBUG > 3) || (CFG_DEBUG < 0)
bogdanm 0:eff01767de02 71 #error "CFG_DEBUG must be a value between 0 (no debug) and 3"
bogdanm 0:eff01767de02 72 #endif
bogdanm 0:eff01767de02 73 /*=========================================================================*/
bogdanm 0:eff01767de02 74
bogdanm 0:eff01767de02 75
bogdanm 0:eff01767de02 76 /*=========================================================================
bogdanm 0:eff01767de02 77 GENERAL NRF51 PERIPHERAL SETTINGS
bogdanm 0:eff01767de02 78 -----------------------------------------------------------------------
bogdanm 0:eff01767de02 79
bogdanm 0:eff01767de02 80 CFG_SCHEDULER_ENABLE Set this to 'true' or 'false' depending on
bogdanm 0:eff01767de02 81 if you use the event scheduler or not
bogdanm 0:eff01767de02 82
bogdanm 0:eff01767de02 83 -----------------------------------------------------------------------*/
bogdanm 0:eff01767de02 84 #define CFG_SCHEDULER_ENABLE false
bogdanm 0:eff01767de02 85
bogdanm 0:eff01767de02 86 /*------------------------------- GPIOTE ------------------------------*/
bogdanm 0:eff01767de02 87 #define CFG_GPIOTE_MAX_USERS 1 /**< Maximum number of users of the GPIOTE handler. */
bogdanm 0:eff01767de02 88
bogdanm 0:eff01767de02 89 /*-------------------------------- TIMER ------------------------------*/
bogdanm 0:eff01767de02 90 #define CFG_TIMER_PRESCALER 0 /**< Value of the RTC1 PRESCALER register. freq = (32768/(PRESCALER+1)) */
Rohit Grover 56:a1071b629aa3 91 #define CFG_TIMER_MAX_INSTANCE 1 /**< Maximum number of simultaneously created timers. */
rgrover1 90:0c883639fbd2 92 #define CFG_TIMER_OPERATION_QUEUE_SIZE 2 /**< Size of timer operation queues. */
bogdanm 0:eff01767de02 93 /*=========================================================================*/
bogdanm 0:eff01767de02 94
bogdanm 0:eff01767de02 95
bogdanm 0:eff01767de02 96 /*=========================================================================
bogdanm 0:eff01767de02 97 BTLE SETTINGS
bogdanm 0:eff01767de02 98 -----------------------------------------------------------------------*/
bogdanm 0:eff01767de02 99
Rohit Grover 56:a1071b629aa3 100 #define CFG_BLE_TX_POWER_LEVEL 0 /**< in dBm (Valid values are -40, -20, -16, -12, -8, -4, 0, 4) */
bogdanm 0:eff01767de02 101
bogdanm 0:eff01767de02 102 /*---------------------------- BOND MANAGER ---------------------------*/
bogdanm 0:eff01767de02 103 #define CFG_BLE_BOND_FLASH_PAGE_BOND (BLE_FLASH_PAGE_END-1) /**< Flash page used for bond manager bonding information.*/
bogdanm 0:eff01767de02 104 #define CFG_BLE_BOND_FLASH_PAGE_SYS_ATTR (BLE_FLASH_PAGE_END-3) /**< Flash page used for bond manager system attribute information. TODO check if we can use BLE_FLASH_PAGE_END-2*/
bogdanm 0:eff01767de02 105 #define CFG_BLE_BOND_DELETE_BUTTON_NUM 0 /**< Button to press to delete bond details during init */
bogdanm 0:eff01767de02 106
bogdanm 0:eff01767de02 107 /*------------------------------ SECURITY -----------------------------*/
bogdanm 0:eff01767de02 108 #define CFG_BLE_SEC_PARAM_MITM 0 /**< Man In The Middle protection not required. */
bogdanm 0:eff01767de02 109 #define CFG_BLE_SEC_PARAM_IO_CAPABILITIES BLE_GAP_IO_CAPS_NONE /**< No I/O capabilities. */
bogdanm 0:eff01767de02 110 #define CFG_BLE_SEC_PARAM_OOB 0 /**< Out Of Band data not available. */
bogdanm 0:eff01767de02 111 #define CFG_BLE_SEC_PARAM_MIN_KEY_SIZE 7 /**< Minimum encryption key size. */
bogdanm 0:eff01767de02 112 #define CFG_BLE_SEC_PARAM_MAX_KEY_SIZE 16
bogdanm 0:eff01767de02 113
bogdanm 0:eff01767de02 114 /*--------------------------------- GAP -------------------------------*/
bogdanm 0:eff01767de02 115 #define CFG_GAP_APPEARANCE BLE_APPEARANCE_GENERIC_TAG
bogdanm 0:eff01767de02 116 #define CFG_GAP_LOCAL_NAME "nRF5x"
bogdanm 0:eff01767de02 117
Rohit Grover 56:a1071b629aa3 118 #define CFG_GAP_CONNECTION_MIN_INTERVAL_MS 50 /**< Minimum acceptable connection interval */
Rohit Grover 56:a1071b629aa3 119 #define CFG_GAP_CONNECTION_MAX_INTERVAL_MS 500 /**< Maximum acceptable connection interval */
bogdanm 0:eff01767de02 120 #define CFG_GAP_CONNECTION_SUPERVISION_TIMEOUT_MS 4000 /**< Connection supervisory timeout */
bogdanm 0:eff01767de02 121 #define CFG_GAP_CONNECTION_SLAVE_LATENCY 0 /**< Slave Latency in number of connection events. */
bogdanm 0:eff01767de02 122
bogdanm 0:eff01767de02 123 #define CFG_GAP_ADV_INTERVAL_MS 25 /**< The advertising interval in miliseconds, should be multiply of 0.625 */
bogdanm 0:eff01767de02 124 #define CFG_GAP_ADV_TIMEOUT_S 180 /**< The advertising timeout in units of seconds. */
bogdanm 0:eff01767de02 125 /*=========================================================================*/
bogdanm 0:eff01767de02 126
bogdanm 0:eff01767de02 127
bogdanm 0:eff01767de02 128 /*=========================================================================
bogdanm 0:eff01767de02 129 VALIDATION
bogdanm 0:eff01767de02 130 -----------------------------------------------------------------------*/
bogdanm 0:eff01767de02 131 #if CFG_BLE_TX_POWER_LEVEL != -40 && CFG_BLE_TX_POWER_LEVEL != -20 && CFG_BLE_TX_POWER_LEVEL != -16 && CFG_BLE_TX_POWER_LEVEL != -12 && CFG_BLE_TX_POWER_LEVEL != -8 && CFG_BLE_TX_POWER_LEVEL != -4 && CFG_BLE_TX_POWER_LEVEL != 0 && CFG_BLE_TX_POWER_LEVEL != 4
bogdanm 0:eff01767de02 132 #error "CFG_BLE_TX_POWER_LEVEL must be -40, -20, -16, -12, -8, -4, 0 or 4"
bogdanm 0:eff01767de02 133 #endif
bogdanm 0:eff01767de02 134 /*=========================================================================*/
bogdanm 0:eff01767de02 135
rgrover1 90:0c883639fbd2 136 #endif /* _PROJECTCONFIG_H_ */