Nordic stack and drivers for the mbed BLE API. Version to work around build bug.

Dependents:   microbit_rubber_ducky microbit_mouse_BLE microbit_mouse_BLE_daybreak_version microbit_presenter

Fork of nRF51822 by Nordic Semiconductor

Committer:
vcoubard
Date:
Mon Jan 11 10:19:35 2016 +0000
Revision:
598:814c1ce92947
Parent:
575:7023a8204a1b
Child:
599:3e66e1eb264d
Synchronized with git rev c9b6bb9b
Author: Andres Amaya Garcia
Almost complete implementation of whitelisting API

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vcoubard 558:c4b56f9d6f3b 1 /* mbed Microcontroller Library
vcoubard 558:c4b56f9d6f3b 2 * Copyright (c) 2006-2013 ARM Limited
vcoubard 558:c4b56f9d6f3b 3 *
vcoubard 558:c4b56f9d6f3b 4 * Licensed under the Apache License, Version 2.0 (the "License");
vcoubard 558:c4b56f9d6f3b 5 * you may not use this file except in compliance with the License.
vcoubard 558:c4b56f9d6f3b 6 * You may obtain a copy of the License at
vcoubard 558:c4b56f9d6f3b 7 *
vcoubard 558:c4b56f9d6f3b 8 * http://www.apache.org/licenses/LICENSE-2.0
vcoubard 558:c4b56f9d6f3b 9 *
vcoubard 558:c4b56f9d6f3b 10 * Unless required by applicable law or agreed to in writing, software
vcoubard 558:c4b56f9d6f3b 11 * distributed under the License is distributed on an "AS IS" BASIS,
vcoubard 558:c4b56f9d6f3b 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
vcoubard 558:c4b56f9d6f3b 13 * See the License for the specific language governing permissions and
vcoubard 558:c4b56f9d6f3b 14 * limitations under the License.
vcoubard 558:c4b56f9d6f3b 15 */
vcoubard 558:c4b56f9d6f3b 16
vcoubard 558:c4b56f9d6f3b 17 #ifndef __NRF51822_SECURITY_MANAGER_H__
vcoubard 558:c4b56f9d6f3b 18 #define __NRF51822_SECURITY_MANAGER_H__
vcoubard 558:c4b56f9d6f3b 19
vcoubard 558:c4b56f9d6f3b 20 #include <stddef.h>
vcoubard 558:c4b56f9d6f3b 21
vcoubard 598:814c1ce92947 22 #include "nRF5xGap.h"
vcoubard 558:c4b56f9d6f3b 23 #include "ble/SecurityManager.h"
vcoubard 558:c4b56f9d6f3b 24 #include "btle_security.h"
vcoubard 558:c4b56f9d6f3b 25
vcoubard 558:c4b56f9d6f3b 26 class nRF5xSecurityManager : public SecurityManager
vcoubard 558:c4b56f9d6f3b 27 {
vcoubard 558:c4b56f9d6f3b 28 public:
vcoubard 558:c4b56f9d6f3b 29 /* Functions that must be implemented from SecurityManager */
vcoubard 558:c4b56f9d6f3b 30 virtual ble_error_t init(bool enableBonding,
vcoubard 558:c4b56f9d6f3b 31 bool requireMITM,
vcoubard 558:c4b56f9d6f3b 32 SecurityIOCapabilities_t iocaps,
vcoubard 558:c4b56f9d6f3b 33 const Passkey_t passkey) {
vcoubard 558:c4b56f9d6f3b 34 return btle_initializeSecurity(enableBonding, requireMITM, iocaps, passkey);
vcoubard 558:c4b56f9d6f3b 35 }
vcoubard 558:c4b56f9d6f3b 36
vcoubard 558:c4b56f9d6f3b 37 virtual ble_error_t getLinkSecurity(Gap::Handle_t connectionHandle, LinkSecurityStatus_t *securityStatusP) {
vcoubard 558:c4b56f9d6f3b 38 return btle_getLinkSecurity(connectionHandle, securityStatusP);
vcoubard 558:c4b56f9d6f3b 39 }
vcoubard 558:c4b56f9d6f3b 40
vcoubard 558:c4b56f9d6f3b 41 virtual ble_error_t setLinkSecurity(Gap::Handle_t connectionHandle, SecurityMode_t securityMode) {
vcoubard 558:c4b56f9d6f3b 42 return btle_setLinkSecurity(connectionHandle, securityMode);
vcoubard 558:c4b56f9d6f3b 43 }
vcoubard 558:c4b56f9d6f3b 44
vcoubard 558:c4b56f9d6f3b 45 virtual ble_error_t purgeAllBondingState(void) {
vcoubard 558:c4b56f9d6f3b 46 return btle_purgeAllBondingState();
vcoubard 558:c4b56f9d6f3b 47 }
vcoubard 558:c4b56f9d6f3b 48
vcoubard 575:7023a8204a1b 49 /**
vcoubard 575:7023a8204a1b 50 * @brief Clear nRF5xSecurityManager's state.
vcoubard 575:7023a8204a1b 51 *
vcoubard 575:7023a8204a1b 52 * @return
vcoubard 575:7023a8204a1b 53 * BLE_ERROR_NONE if successful.
vcoubard 575:7023a8204a1b 54 */
vcoubard 575:7023a8204a1b 55 virtual ble_error_t reset(void)
vcoubard 575:7023a8204a1b 56 {
vcoubard 575:7023a8204a1b 57 if (SecurityManager::reset() != BLE_ERROR_NONE) {
vcoubard 575:7023a8204a1b 58 return BLE_ERROR_INVALID_STATE;
vcoubard 575:7023a8204a1b 59 }
vcoubard 575:7023a8204a1b 60
vcoubard 575:7023a8204a1b 61 return BLE_ERROR_NONE;
vcoubard 575:7023a8204a1b 62 }
vcoubard 575:7023a8204a1b 63
vcoubard 598:814c1ce92947 64 bool hasInitialized(void) const {
vcoubard 598:814c1ce92947 65 return btle_hasInitializedSecurity();
vcoubard 598:814c1ce92947 66 }
vcoubard 598:814c1ce92947 67
vcoubard 558:c4b56f9d6f3b 68 public:
vcoubard 575:7023a8204a1b 69 /*
vcoubard 575:7023a8204a1b 70 * Allow instantiation from nRF5xn when required.
vcoubard 575:7023a8204a1b 71 */
vcoubard 575:7023a8204a1b 72 friend class nRF5xn;
vcoubard 575:7023a8204a1b 73
vcoubard 558:c4b56f9d6f3b 74 nRF5xSecurityManager() {
vcoubard 558:c4b56f9d6f3b 75 /* empty */
vcoubard 558:c4b56f9d6f3b 76 }
vcoubard 558:c4b56f9d6f3b 77
vcoubard 558:c4b56f9d6f3b 78 private:
vcoubard 558:c4b56f9d6f3b 79 nRF5xSecurityManager(const nRF5xSecurityManager &);
vcoubard 558:c4b56f9d6f3b 80 const nRF5xSecurityManager& operator=(const nRF5xSecurityManager &);
vcoubard 598:814c1ce92947 81
vcoubard 598:814c1ce92947 82 ble_error_t createWhitelistFromBondTable(ble_gap_whitelist_t &whitelistFromBondTable) const {
vcoubard 598:814c1ce92947 83 return btle_createWhitelistFromBondTable(&whitelistFromBondTable);
vcoubard 598:814c1ce92947 84 }
vcoubard 598:814c1ce92947 85
vcoubard 598:814c1ce92947 86 bool matchAddressAndIrk(ble_gap_addr_t *address, ble_gap_irk_t *irk) const {
vcoubard 598:814c1ce92947 87 return btle_matchAddressAndIrk(address, irk);
vcoubard 598:814c1ce92947 88 }
vcoubard 598:814c1ce92947 89 friend class nRF5xGap;
vcoubard 558:c4b56f9d6f3b 90 };
vcoubard 558:c4b56f9d6f3b 91
rgrover1 388:db85a09c27ef 92 #endif // ifndef __NRF51822_SECURITY_MANAGER_H__