Sergey Solodunov / nRF51822

Dependencies:   nrf51-sdk

Fork of nRF51822 by Nordic Semiconductor

Committer:
rgrover1
Date:
Tue Jul 21 13:23:44 2015 +0100
Revision:
389:5982ee136c47
Synchronized with git rev b743df2a
Author: Andrew Fernandes
Remove unnecessary 'compiler_abstraction.h' to get rid of duplicate '__ASM' warning.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rgrover1 389:5982ee136c47 1 /* mbed Microcontroller Library
rgrover1 389:5982ee136c47 2 * Copyright (c) 2006-2013 ARM Limited
rgrover1 389:5982ee136c47 3 *
rgrover1 389:5982ee136c47 4 * Licensed under the Apache License, Version 2.0 (the "License");
rgrover1 389:5982ee136c47 5 * you may not use this file except in compliance with the License.
rgrover1 389:5982ee136c47 6 * You may obtain a copy of the License at
rgrover1 389:5982ee136c47 7 *
rgrover1 389:5982ee136c47 8 * http://www.apache.org/licenses/LICENSE-2.0
rgrover1 389:5982ee136c47 9 *
rgrover1 389:5982ee136c47 10 * Unless required by applicable law or agreed to in writing, software
rgrover1 389:5982ee136c47 11 * distributed under the License is distributed on an "AS IS" BASIS,
rgrover1 389:5982ee136c47 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rgrover1 389:5982ee136c47 13 * See the License for the specific language governing permissions and
rgrover1 389:5982ee136c47 14 * limitations under the License.
rgrover1 389:5982ee136c47 15 */
rgrover1 389:5982ee136c47 16
rgrover1 389:5982ee136c47 17 #include "mbed.h"
rgrover1 389:5982ee136c47 18 #include "nRF51822n.h"
rgrover1 389:5982ee136c47 19 #include "nrf_soc.h"
rgrover1 389:5982ee136c47 20
rgrover1 389:5982ee136c47 21 #include "btle/btle.h"
rgrover1 389:5982ee136c47 22 #include "nrf_delay.h"
rgrover1 389:5982ee136c47 23
rgrover1 389:5982ee136c47 24 #include "softdevice_handler.h"
rgrover1 389:5982ee136c47 25
rgrover1 389:5982ee136c47 26 /**
rgrover1 389:5982ee136c47 27 * The singleton which represents the nRF51822 transport for the BLE.
rgrover1 389:5982ee136c47 28 */
rgrover1 389:5982ee136c47 29 static nRF51822n deviceInstance;
rgrover1 389:5982ee136c47 30
rgrover1 389:5982ee136c47 31 /**
rgrover1 389:5982ee136c47 32 * BLE-API requires an implementation of the following function in order to
rgrover1 389:5982ee136c47 33 * obtain its transport handle.
rgrover1 389:5982ee136c47 34 */
rgrover1 389:5982ee136c47 35 BLEInstanceBase *
rgrover1 389:5982ee136c47 36 createBLEInstance(void)
rgrover1 389:5982ee136c47 37 {
rgrover1 389:5982ee136c47 38 return (&deviceInstance);
rgrover1 389:5982ee136c47 39 }
rgrover1 389:5982ee136c47 40
rgrover1 389:5982ee136c47 41 nRF51822n::nRF51822n(void)
rgrover1 389:5982ee136c47 42 {
rgrover1 389:5982ee136c47 43 }
rgrover1 389:5982ee136c47 44
rgrover1 389:5982ee136c47 45 nRF51822n::~nRF51822n(void)
rgrover1 389:5982ee136c47 46 {
rgrover1 389:5982ee136c47 47 }
rgrover1 389:5982ee136c47 48
rgrover1 389:5982ee136c47 49 const char *nRF51822n::getVersion(void)
rgrover1 389:5982ee136c47 50 {
rgrover1 389:5982ee136c47 51 static char versionString[32];
rgrover1 389:5982ee136c47 52 static bool versionFetched = false;
rgrover1 389:5982ee136c47 53
rgrover1 389:5982ee136c47 54 if (!versionFetched) {
rgrover1 389:5982ee136c47 55 ble_version_t version;
rgrover1 389:5982ee136c47 56 if ((sd_ble_version_get(&version) == NRF_SUCCESS) && (version.company_id == 0x0059)) {
rgrover1 389:5982ee136c47 57 switch (version.version_number) {
rgrover1 389:5982ee136c47 58 case 0x07:
rgrover1 389:5982ee136c47 59 snprintf(versionString, sizeof(versionString), "Nordic BLE4.1 fw:%04x", version.subversion_number);
rgrover1 389:5982ee136c47 60 break;
rgrover1 389:5982ee136c47 61 default:
rgrover1 389:5982ee136c47 62 snprintf(versionString, sizeof(versionString), "Nordic (spec unknown) fw:%04x", version.subversion_number);
rgrover1 389:5982ee136c47 63 break;
rgrover1 389:5982ee136c47 64 }
rgrover1 389:5982ee136c47 65 versionFetched = true;
rgrover1 389:5982ee136c47 66 } else {
rgrover1 389:5982ee136c47 67 strncpy(versionString, "unknown", sizeof(versionString));
rgrover1 389:5982ee136c47 68 }
rgrover1 389:5982ee136c47 69 }
rgrover1 389:5982ee136c47 70
rgrover1 389:5982ee136c47 71 return versionString;
rgrover1 389:5982ee136c47 72 }
rgrover1 389:5982ee136c47 73
rgrover1 389:5982ee136c47 74 ble_error_t nRF51822n::init(void)
rgrover1 389:5982ee136c47 75 {
rgrover1 389:5982ee136c47 76 /* ToDo: Clear memory contents, reset the SD, etc. */
rgrover1 389:5982ee136c47 77 btle_init();
rgrover1 389:5982ee136c47 78
rgrover1 389:5982ee136c47 79 return BLE_ERROR_NONE;
rgrover1 389:5982ee136c47 80 }
rgrover1 389:5982ee136c47 81
rgrover1 389:5982ee136c47 82 ble_error_t nRF51822n::shutdown(void)
rgrover1 389:5982ee136c47 83 {
rgrover1 389:5982ee136c47 84 return (softdevice_handler_sd_disable() == NRF_SUCCESS) ? BLE_ERROR_NONE : BLE_STACK_BUSY;
rgrover1 389:5982ee136c47 85 }
rgrover1 389:5982ee136c47 86
rgrover1 389:5982ee136c47 87 void
rgrover1 389:5982ee136c47 88 nRF51822n::waitForEvent(void)
rgrover1 389:5982ee136c47 89 {
rgrover1 389:5982ee136c47 90 sd_app_evt_wait();
rgrover1 389:5982ee136c47 91 }