Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: microbit_rubber_ducky microbit_mouse_BLE microbit_mouse_BLE_daybreak_version microbit_presenter
Fork of nRF51822 by
source/nRF51822n.cpp@389:5982ee136c47, 2015-07-21 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |
