Patched version of nrf51822 FOTA compatible driver, with GPTIO disabled, as it clashed with the mbed definitions...

Fork of nRF51822 by Nordic Semiconductor

Committer:
rgrover1
Date:
Wed Apr 15 08:59:23 2015 +0100
Revision:
105:7404a5b1b72f
Parent:
102:bdc690669431
Child:
111:be2a122ed2f7
Synchronized with git rev 11a53ce5
Author: Rohit Grover
Add support for onRadioNotification(). Radio Notification is a feature that
enables ACTIVE and INACTIVE (nACTIVE) signals from the stack that notify the
application when the radio is in use. The ACTIVE signal is sent before the
Radio Event starts. The nACTIVE signal is sent at the end of the Radio
Event. These signals can be used by the application programmer to
synchronize application logic with radio activity. For example, the ACTIVE
signal can be used to shut off external devices to manage peak current drawn
during periods when the radio is on, or to trigger sensor data collection
for transmission in the Radio Event.

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_GAP_H__
Rohit Grover 22:c6ee8136847e 18 #define __NRF51822_GAP_H__
Rohit Grover 22:c6ee8136847e 19
Rohit Grover 22:c6ee8136847e 20 #include "mbed.h"
Rohit Grover 22:c6ee8136847e 21 #include "blecommon.h"
Rohit Grover 22:c6ee8136847e 22 #include "ble.h"
Rohit Grover 22:c6ee8136847e 23 #include "GapAdvertisingParams.h"
Rohit Grover 22:c6ee8136847e 24 #include "GapAdvertisingData.h"
Rohit Grover 52:120bd37b9d0d 25 #include "public/Gap.h"
Rohit Grover 22:c6ee8136847e 26
rgrover1 105:7404a5b1b72f 27 #include "nrf_soc.h"
rgrover1 105:7404a5b1b72f 28 #include "ble_radio_notification.h"
rgrover1 105:7404a5b1b72f 29
Rohit Grover 22:c6ee8136847e 30 /**************************************************************************/
Rohit Grover 22:c6ee8136847e 31 /*!
Rohit Grover 22:c6ee8136847e 32 \brief
Rohit Grover 22:c6ee8136847e 33
Rohit Grover 22:c6ee8136847e 34 */
Rohit Grover 22:c6ee8136847e 35 /**************************************************************************/
Rohit Grover 22:c6ee8136847e 36 class nRF51Gap : public Gap
Rohit Grover 22:c6ee8136847e 37 {
Rohit Grover 22:c6ee8136847e 38 public:
Rohit Grover 22:c6ee8136847e 39 static nRF51Gap &getInstance() {
Rohit Grover 22:c6ee8136847e 40 static nRF51Gap m_instance;
Rohit Grover 22:c6ee8136847e 41 return m_instance;
Rohit Grover 22:c6ee8136847e 42 }
Rohit Grover 22:c6ee8136847e 43
Rohit Grover 22:c6ee8136847e 44 /* Functions that must be implemented from Gap */
rgrover1 77:9886b2865631 45 virtual ble_error_t setAddress(addr_type_t type, const address_t address);
rgrover1 77:9886b2865631 46 virtual ble_error_t getAddress(addr_type_t *typeP, address_t address);
Rohit Grover 69:61da91a52bd6 47 virtual ble_error_t setAdvertisingData(const GapAdvertisingData &, const GapAdvertisingData &);
rgrover1 102:bdc690669431 48
rgrover1 102:bdc690669431 49 virtual uint16_t getMinAdvertisingInterval(void) const {return GAP_DURATION_UNITS_TO_MS(BLE_GAP_ADV_INTERVAL_MIN);}
rgrover1 102:bdc690669431 50 virtual uint16_t getMinNonConnectableAdvertisingInterval(void) const {return GAP_DURATION_UNITS_TO_MS(BLE_GAP_ADV_NONCON_INTERVAL_MIN);}
rgrover1 102:bdc690669431 51 virtual uint16_t getMaxAdvertisingInterval(void) const {return GAP_DURATION_UNITS_TO_MS(BLE_GAP_ADV_INTERVAL_MAX);}
rgrover1 102:bdc690669431 52
Rohit Grover 22:c6ee8136847e 53 virtual ble_error_t startAdvertising(const GapAdvertisingParams &);
Rohit Grover 22:c6ee8136847e 54 virtual ble_error_t stopAdvertising(void);
Rohit Grover 56:a1071b629aa3 55 virtual ble_error_t disconnect(DisconnectionReason_t reason);
Rohit Grover 56:a1071b629aa3 56
Rohit Grover 56:a1071b629aa3 57 virtual ble_error_t setDeviceName(const uint8_t *deviceName);
Rohit Grover 56:a1071b629aa3 58 virtual ble_error_t getDeviceName(uint8_t *deviceName, unsigned *lengthP);
Rohit Grover 56:a1071b629aa3 59 virtual ble_error_t setAppearance(uint16_t appearance);
Rohit Grover 56:a1071b629aa3 60 virtual ble_error_t getAppearance(uint16_t *appearanceP);
Rohit Grover 22:c6ee8136847e 61
Rohit Grover 22:c6ee8136847e 62 void setConnectionHandle(uint16_t con_handle);
Rohit Grover 22:c6ee8136847e 63 uint16_t getConnectionHandle(void);
Rohit Grover 22:c6ee8136847e 64
Rohit Grover 44:47da5c62e067 65 virtual ble_error_t getPreferredConnectionParams(ConnectionParams_t *params);
Rohit Grover 44:47da5c62e067 66 virtual ble_error_t setPreferredConnectionParams(const ConnectionParams_t *params);
Rohit Grover 44:47da5c62e067 67 virtual ble_error_t updateConnectionParams(Handle_t handle, const ConnectionParams_t *params);
Rohit Grover 44:47da5c62e067 68
rgrover1 105:7404a5b1b72f 69 virtual void setOnRadioNotification(RadioNotificationEventCallback_t callback) {
rgrover1 105:7404a5b1b72f 70 Gap::setOnRadioNotification(callback);
rgrover1 105:7404a5b1b72f 71 ble_radio_notification_init(NRF_APP_PRIORITY_HIGH, NRF_RADIO_NOTIFICATION_DISTANCE_NONE, onRadioNotification);
rgrover1 105:7404a5b1b72f 72 }
rgrover1 105:7404a5b1b72f 73
Rohit Grover 22:c6ee8136847e 74 private:
Rohit Grover 22:c6ee8136847e 75 uint16_t m_connectionHandle;
Rohit Grover 22:c6ee8136847e 76 nRF51Gap() {
Rohit Grover 22:c6ee8136847e 77 m_connectionHandle = BLE_CONN_HANDLE_INVALID;
Rohit Grover 22:c6ee8136847e 78 }
Rohit Grover 22:c6ee8136847e 79
Rohit Grover 22:c6ee8136847e 80 nRF51Gap(nRF51Gap const &);
Rohit Grover 22:c6ee8136847e 81 void operator=(nRF51Gap const &);
Rohit Grover 22:c6ee8136847e 82 };
Rohit Grover 22:c6ee8136847e 83
rgrover1 77:9886b2865631 84 #endif // ifndef __NRF51822_GAP_H__