Patched version of nrf51822 FOTA compatible driver, with GPTIO disabled, as it clashed with the mbed definitions...
Fork of nRF51822 by
nordic-sdk/components/ble/ble_radio_notification/ble_radio_notification.c@177:dad139e1e3c4, 2015-05-21 (annotated)
- Committer:
- finneyj
- Date:
- Thu May 21 09:35:07 2015 +0000
- Revision:
- 177:dad139e1e3c4
- Parent:
- 105:7404a5b1b72f
Disabled GPTIOE as it conflicts with mbed definitions.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rgrover1 | 105:7404a5b1b72f | 1 | /* Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. |
rgrover1 | 105:7404a5b1b72f | 2 | * |
rgrover1 | 105:7404a5b1b72f | 3 | * The information contained herein is property of Nordic Semiconductor ASA. |
rgrover1 | 105:7404a5b1b72f | 4 | * Terms and conditions of usage are described in detail in NORDIC |
rgrover1 | 105:7404a5b1b72f | 5 | * SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT. |
rgrover1 | 105:7404a5b1b72f | 6 | * |
rgrover1 | 105:7404a5b1b72f | 7 | * Licensees are granted free, non-transferable use of the information. NO |
rgrover1 | 105:7404a5b1b72f | 8 | * WARRANTY of ANY KIND is provided. This heading must NOT be removed from |
rgrover1 | 105:7404a5b1b72f | 9 | * the file. |
rgrover1 | 105:7404a5b1b72f | 10 | */ |
rgrover1 | 105:7404a5b1b72f | 11 | |
rgrover1 | 105:7404a5b1b72f | 12 | #include "ble_radio_notification.h" |
rgrover1 | 105:7404a5b1b72f | 13 | #include <stdlib.h> |
rgrover1 | 105:7404a5b1b72f | 14 | |
rgrover1 | 105:7404a5b1b72f | 15 | |
rgrover1 | 105:7404a5b1b72f | 16 | static bool m_radio_active = false; /**< Current radio state. */ |
rgrover1 | 105:7404a5b1b72f | 17 | static ble_radio_notification_evt_handler_t m_evt_handler = NULL; /**< Application event handler for handling Radio Notification events. */ |
rgrover1 | 105:7404a5b1b72f | 18 | |
rgrover1 | 105:7404a5b1b72f | 19 | |
rgrover1 | 105:7404a5b1b72f | 20 | void SWI1_IRQHandler(void) |
rgrover1 | 105:7404a5b1b72f | 21 | { |
rgrover1 | 105:7404a5b1b72f | 22 | m_radio_active = !m_radio_active; |
rgrover1 | 105:7404a5b1b72f | 23 | if (m_evt_handler != NULL) |
rgrover1 | 105:7404a5b1b72f | 24 | { |
rgrover1 | 105:7404a5b1b72f | 25 | m_evt_handler(m_radio_active); |
rgrover1 | 105:7404a5b1b72f | 26 | } |
rgrover1 | 105:7404a5b1b72f | 27 | } |
rgrover1 | 105:7404a5b1b72f | 28 | |
rgrover1 | 105:7404a5b1b72f | 29 | |
rgrover1 | 105:7404a5b1b72f | 30 | uint32_t ble_radio_notification_init(nrf_app_irq_priority_t irq_priority, |
rgrover1 | 105:7404a5b1b72f | 31 | nrf_radio_notification_distance_t distance, |
rgrover1 | 105:7404a5b1b72f | 32 | ble_radio_notification_evt_handler_t evt_handler) |
rgrover1 | 105:7404a5b1b72f | 33 | { |
rgrover1 | 105:7404a5b1b72f | 34 | uint32_t err_code; |
rgrover1 | 105:7404a5b1b72f | 35 | |
rgrover1 | 105:7404a5b1b72f | 36 | m_evt_handler = evt_handler; |
rgrover1 | 105:7404a5b1b72f | 37 | |
rgrover1 | 105:7404a5b1b72f | 38 | // Initialize Radio Notification software interrupt |
rgrover1 | 105:7404a5b1b72f | 39 | err_code = sd_nvic_ClearPendingIRQ(SWI1_IRQn); |
rgrover1 | 105:7404a5b1b72f | 40 | if (err_code != NRF_SUCCESS) |
rgrover1 | 105:7404a5b1b72f | 41 | { |
rgrover1 | 105:7404a5b1b72f | 42 | return err_code; |
rgrover1 | 105:7404a5b1b72f | 43 | } |
rgrover1 | 105:7404a5b1b72f | 44 | |
rgrover1 | 105:7404a5b1b72f | 45 | err_code = sd_nvic_SetPriority(SWI1_IRQn, irq_priority); |
rgrover1 | 105:7404a5b1b72f | 46 | if (err_code != NRF_SUCCESS) |
rgrover1 | 105:7404a5b1b72f | 47 | { |
rgrover1 | 105:7404a5b1b72f | 48 | return err_code; |
rgrover1 | 105:7404a5b1b72f | 49 | } |
rgrover1 | 105:7404a5b1b72f | 50 | |
rgrover1 | 105:7404a5b1b72f | 51 | err_code = sd_nvic_EnableIRQ(SWI1_IRQn); |
rgrover1 | 105:7404a5b1b72f | 52 | if (err_code != NRF_SUCCESS) |
rgrover1 | 105:7404a5b1b72f | 53 | { |
rgrover1 | 105:7404a5b1b72f | 54 | return err_code; |
rgrover1 | 105:7404a5b1b72f | 55 | } |
rgrover1 | 105:7404a5b1b72f | 56 | |
rgrover1 | 105:7404a5b1b72f | 57 | // Configure the event |
rgrover1 | 105:7404a5b1b72f | 58 | return sd_radio_notification_cfg_set(NRF_RADIO_NOTIFICATION_TYPE_INT_ON_BOTH, distance); |
rgrover1 | 105:7404a5b1b72f | 59 | } |