config changes
Fork of nRF51822 by
Revision 546:1e147322b2b5, committed 2016-01-11
- Comitter:
- vcoubard
- Date:
- Mon Jan 11 10:19:05 2016 +0000
- Parent:
- 545:d834e6591aee
- Child:
- 547:8550af084edc
- Commit message:
- Synchronized with git rev cc0cf3df
Author: Vincent Coubard
Merge remote-tracking branch 'origin/develop' into characteristicDescriptorDiscovery
Changed in this revision
--- a/LICENSE Mon Jan 11 10:19:04 2016 +0000 +++ b/LICENSE Mon Jan 11 10:19:05 2016 +0000 @@ -1,6 +1,9 @@ Many of the files in this module have been inherited from the Nordic SDK for -nRF51822; they come with a BSD-like license offered by Nordic for use in mbed. -Some other files come from the mbed SDK, and are licensed under Apache-2.0. -Unless specifically indicated otherwise in a file, files are licensed -under the Apache 2.0 license, as can be found in: apache-2.0.txt. -The BSD-like Nordic license can be found in BSD-3clause-Nordic.txt \ No newline at end of file +nRF51822. With the exception of the softdevice, they come with a BSD license +offered by Nordic for use in mbed. The Nordic Softdevice License Agreement, a +BSD-like licence for binary distributions, applies to the softdevice. Some +other files come from the mbed SDK, and are licensed under Apache-2.0. Unless +specifically indicated otherwise in a file, files are licensed under the +Apache 2.0 license, as can be found in: apache-2.0.txt. The BSD-like Nordic +license can be found in BSD-3clause-Nordic.txt. The Nordic Semiconductor Softdevice +License Agreement can be found in softdevice_nrf51822_licence_agreement.txt. \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bootloader/softdevice_nrf51822_licence_agreement.txt Mon Jan 11 10:19:05 2016 +0000 @@ -0,0 +1,30 @@ +/* + * S110/S120/S130 License Agreement + * + * Copyright (c) 2015, Nordic Semiconductor ASA, All rights reserved. + * + * Redistribution. Redistribution and use in binary form, without modification, + * are permitted provided that the following conditions are met: + * + * • Redistributions must reproduce the above copyright notice and the following + * disclaimer in the documentation and/or other materials provided with the + * distribution. + * • Neither the name of the copyright holder nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * • No reverse engineering, decompilation, or disassembly of this software is + * permitted. + * + * DISCLAIMER. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * / \ No newline at end of file
--- a/module.json Mon Jan 11 10:19:04 2016 +0000 +++ b/module.json Mon Jan 11 10:19:05 2016 +0000 @@ -1,6 +1,6 @@ { "name": "ble-nrf51822", - "version": "2.0.3", + "version": "2.0.6", "description": "Nordic stack and drivers for the mbed BLE API.", "keywords": [ "Bluetooth", @@ -18,6 +18,9 @@ { "url": "https://spdx.org/licenses/Apache-2.0", "type": "Apache-2.0" + }, + { + "type": "LicenseRef-softdevice_nrf51822_licence_agreement.txt" } ], "dependencies": {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/softdevice_nrf51822_licence_agreement.txt Mon Jan 11 10:19:05 2016 +0000 @@ -0,0 +1,30 @@ +/* + * S110/S120/S130 License Agreement + * + * Copyright (c) 2015, Nordic Semiconductor ASA, All rights reserved. + * + * Redistribution. Redistribution and use in binary form, without modification, + * are permitted provided that the following conditions are met: + * + * • Redistributions must reproduce the above copyright notice and the following + * disclaimer in the documentation and/or other materials provided with the + * distribution. + * • Neither the name of the copyright holder nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * • No reverse engineering, decompilation, or disassembly of this software is + * permitted. + * + * DISCLAIMER. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * / \ No newline at end of file
--- a/source/nRF5xGap.h Mon Jan 11 10:19:04 2016 +0000 +++ b/source/nRF5xGap.h Mon Jan 11 10:19:05 2016 +0000 @@ -109,12 +109,64 @@ #endif private: +#ifdef YOTTA_CFG_MBED_OS + /* + * In mbed OS, all user-facing BLE events (interrupts) are posted to the + * MINAR scheduler to be executed as callbacks in thread mode. MINAR guards + * its critical sections from interrupts by acquiring CriticalSectionLock, + * which results in a call to sd_nvic_critical_region_enter(). Thus, it is + * safe to invoke MINAR APIs from interrupt context as long as those + * interrupts are blocked by sd_nvic_critical_region_enter(). + * + * Radio notifications are a special case for the above. The Radio + * Notification IRQ is handled at a very high priority--higher than the + * level blocked by sd_nvic_critical_region_enter(). Thus Radio Notification + * events can preempt MINAR's critical sections. Using MINAR APIs (such as + * posting an event) directly in processRadioNotification() may result in a + * race condition ending in a hard-fault. + * + * The solution is to *not* call MINAR APIs directly from the Radio + * Notification handling; i.e. to do the bulk of RadioNotification + * processing at a reduced priority which respects MINAR's critical + * sections. Unfortunately, on a cortex-M0, there is no clean way to demote + * priority for the currently executing interrupt--we wouldn't want to + * demote the radio notification handling anyway because it is sensitive to + * timing, and the system expects to finish this handling very quickly. The + * workaround is to employ a Timeout to trigger + * postRadioNotificationCallback() after a very short delay (~0 us) and post + * the MINAR callback that context. + * + * !!!WARNING!!! Radio notifications are very time critical events. The + * current solution is expected to work under the assumption that + * postRadioNotificationCalback() will be executed BEFORE the next radio + * notification event is generated. + */ + + bool radioNotificationCallbackParam; /* parameter to be passed into the Timeout-generated radio notification callback. */ + Timeout radioNotificationTimeout; + + /* + * A helper function to post radio notification callbacks through MINAR when using mbed OS. + */ + void postRadioNotificationCallback(void) { + minar::Scheduler::postCallback( + mbed::util::FunctionPointer1<void, bool>(&radioNotificationCallback, &FunctionPointerWithContext<bool>::call).bind(radioNotificationCallbackParam) + ); + } +#endif /* #ifdef YOTTA_CFG_MBED_OS */ + /** * A helper function to process radio-notification events; to be called internally. * @param param [description] */ void processRadioNotificationEvent(bool param) { +#ifdef YOTTA_CFG_MBED_OS + /* When using mbed OS the callback to the user-defined function will be posted through minar */ + radioNotificationCallbackParam = param; + radioNotificationTimeout.attach_us(this, &nRF5xGap::postRadioNotificationCallback, 0); +#else radioNotificationCallback.call(param); +#endif } friend void radioNotificationStaticCallback(bool param); /* allow invocations of processRadioNotificationEvent() */
--- a/source/nordic-sdk/components/libraries/bootloader_dfu/bootloader_util_arm.c Mon Jan 11 10:19:04 2016 +0000 +++ b/source/nordic-sdk/components/libraries/bootloader_dfu/bootloader_util_arm.c Mon Jan 11 10:19:05 2016 +0000 @@ -59,10 +59,10 @@ MSR MSP, R5 ; Set the main stack pointer to the applications MSP. LDR R6, [R0, #0x04] ; Load Reset handler into register 6. + MOV R0, R6 LDR R2, =MASK_ZEROS ; Load zeros to R2 MRS R3, IPSR ; Load IPSR to R3 to check for handler or thread mode CMP R2, R3 ; Compare, if 0 then we are in thread mode and can continue to reset handler of bootloader - MOV R0, R6 BNE isr_abort ; If not zero we need to exit current ISR and jump to reset handler of bootloader LDR R4, =MASK_ONES ; Load ones to R4 to be placed in Link Register. @@ -98,10 +98,10 @@ "MSR MSP, r5 \n\t" /* Set the main stack pointer to the applications MSP. */ "LDR r6,[r0, #0x04] \n\t" /* Load Reset handler into register 0. */ + "MOV R0, R6 \n\t" "LDR r2, =MASK_ZEROS\n\t" /* Load zeros to R2 */ "MRS r3, IPSR \n\t" /* Load IPSR to R3 to check for handler or thread mode */ "CMP r2, r3 \n\t" /* Compare, if 0 then we are in thread mode and can continue to reset handler of bootloader */ - "MOV R0, R6 \n\t" "BNE isr_abort \n\t" /* If not zero we need to exit current ISR and jump to reset handler of bootloader */ "LDR r4, =MASK_ONES \n\t" /* Load ones to R4 to be placed in Link Register. */