The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
Parent:
171:3a7713b1edbc
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 146:22da6e220af6 1 /*
AnnaBridge 146:22da6e220af6 2 * Copyright (c) 2015 Nordic Semiconductor ASA
AnnaBridge 146:22da6e220af6 3 * All rights reserved.
AnnaBridge 146:22da6e220af6 4 *
AnnaBridge 146:22da6e220af6 5 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 146:22da6e220af6 6 * are permitted provided that the following conditions are met:
AnnaBridge 146:22da6e220af6 7 *
AnnaBridge 146:22da6e220af6 8 * 1. Redistributions of source code must retain the above copyright notice, this list
AnnaBridge 146:22da6e220af6 9 * of conditions and the following disclaimer.
AnnaBridge 146:22da6e220af6 10 *
AnnaBridge 146:22da6e220af6 11 * 2. Redistributions in binary form, except as embedded into a Nordic Semiconductor ASA
AnnaBridge 146:22da6e220af6 12 * integrated circuit in a product or a software update for such product, must reproduce
AnnaBridge 146:22da6e220af6 13 * the above copyright notice, this list of conditions and the following disclaimer in
AnnaBridge 146:22da6e220af6 14 * the documentation and/or other materials provided with the distribution.
AnnaBridge 146:22da6e220af6 15 *
AnnaBridge 146:22da6e220af6 16 * 3. Neither the name of Nordic Semiconductor ASA nor the names of its contributors may be
AnnaBridge 146:22da6e220af6 17 * used to endorse or promote products derived from this software without specific prior
AnnaBridge 146:22da6e220af6 18 * written permission.
AnnaBridge 146:22da6e220af6 19 *
AnnaBridge 146:22da6e220af6 20 * 4. This software, with or without modification, must only be used with a
AnnaBridge 146:22da6e220af6 21 * Nordic Semiconductor ASA integrated circuit.
AnnaBridge 146:22da6e220af6 22 *
AnnaBridge 146:22da6e220af6 23 * 5. Any software provided in binary or object form under this license must not be reverse
AnnaBridge 146:22da6e220af6 24 * engineered, decompiled, modified and/or disassembled.
AnnaBridge 146:22da6e220af6 25 *
AnnaBridge 146:22da6e220af6 26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
AnnaBridge 146:22da6e220af6 27 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
AnnaBridge 146:22da6e220af6 28 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 146:22da6e220af6 29 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
AnnaBridge 146:22da6e220af6 30 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
AnnaBridge 146:22da6e220af6 31 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
AnnaBridge 146:22da6e220af6 32 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
AnnaBridge 146:22da6e220af6 33 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
AnnaBridge 146:22da6e220af6 34 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
AnnaBridge 146:22da6e220af6 35 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 146:22da6e220af6 36 *
AnnaBridge 146:22da6e220af6 37 */
AnnaBridge 146:22da6e220af6 38
AnnaBridge 146:22da6e220af6 39
AnnaBridge 146:22da6e220af6 40 #ifndef NRF_DRV_GPIOTE__
AnnaBridge 146:22da6e220af6 41 #define NRF_DRV_GPIOTE__
AnnaBridge 146:22da6e220af6 42
AnnaBridge 146:22da6e220af6 43 /**
AnnaBridge 146:22da6e220af6 44 * @addtogroup nrf_gpiote GPIOTE abstraction and driver
AnnaBridge 146:22da6e220af6 45 * @ingroup nrf_drivers
AnnaBridge 146:22da6e220af6 46 * @brief GPIOTE APIs.
AnnaBridge 146:22da6e220af6 47 * @defgroup nrf_drv_gpiote GPIOTE driver
AnnaBridge 146:22da6e220af6 48 * @{
AnnaBridge 146:22da6e220af6 49 * @ingroup nrf_gpiote
AnnaBridge 146:22da6e220af6 50 * @brief GPIOTE driver for managing input and output pins.
AnnaBridge 146:22da6e220af6 51 */
AnnaBridge 146:22da6e220af6 52
AnnaBridge 146:22da6e220af6 53 #include "nrf_gpiote.h"
AnnaBridge 146:22da6e220af6 54 #include "nrf_gpio.h"
AnnaBridge 146:22da6e220af6 55 #include "nrf_drv_config.h"
AnnaBridge 146:22da6e220af6 56 #include "sdk_errors.h"
AnnaBridge 146:22da6e220af6 57 #include <stdint.h>
AnnaBridge 146:22da6e220af6 58 #include <stdbool.h>
AnnaBridge 146:22da6e220af6 59
AnnaBridge 146:22da6e220af6 60 /**@brief Input pin configuration. */
AnnaBridge 146:22da6e220af6 61 typedef struct
AnnaBridge 146:22da6e220af6 62 {
AnnaBridge 146:22da6e220af6 63 nrf_gpiote_polarity_t sense; /**< Transition that triggers interrupt. */
AnnaBridge 146:22da6e220af6 64 nrf_gpio_pin_pull_t pull; /**< Pulling mode. */
AnnaBridge 146:22da6e220af6 65 bool is_watcher; /**< True when the input pin is tracking an output pin. */
AnnaBridge 146:22da6e220af6 66 bool hi_accuracy;/**< True when high accuracy (IN_EVENT) is used. */
AnnaBridge 146:22da6e220af6 67 } nrf_drv_gpiote_in_config_t;
AnnaBridge 146:22da6e220af6 68
AnnaBridge 146:22da6e220af6 69 /**@brief Macro for configuring a pin to use a GPIO IN or PORT EVENT to detect low-to-high transition.
AnnaBridge 146:22da6e220af6 70 * @details Set hi_accu to true to use IN_EVENT. */
AnnaBridge 146:22da6e220af6 71 #define GPIOTE_CONFIG_IN_SENSE_LOTOHI(hi_accu) \
AnnaBridge 146:22da6e220af6 72 { \
AnnaBridge 146:22da6e220af6 73 .is_watcher = false, \
AnnaBridge 146:22da6e220af6 74 .hi_accuracy = hi_accu, \
AnnaBridge 146:22da6e220af6 75 .pull = NRF_GPIO_PIN_NOPULL, \
AnnaBridge 146:22da6e220af6 76 .sense = NRF_GPIOTE_POLARITY_LOTOHI, \
AnnaBridge 146:22da6e220af6 77 }
AnnaBridge 146:22da6e220af6 78
AnnaBridge 146:22da6e220af6 79 /**@brief Macro for configuring a pin to use a GPIO IN or PORT EVENT to detect high-to-low transition.
AnnaBridge 146:22da6e220af6 80 * @details Set hi_accu to true to use IN_EVENT. */
AnnaBridge 146:22da6e220af6 81 #define GPIOTE_CONFIG_IN_SENSE_HITOLO(hi_accu) \
AnnaBridge 146:22da6e220af6 82 { \
AnnaBridge 146:22da6e220af6 83 .is_watcher = false, \
AnnaBridge 146:22da6e220af6 84 .hi_accuracy = hi_accu, \
AnnaBridge 146:22da6e220af6 85 .pull = NRF_GPIO_PIN_NOPULL, \
AnnaBridge 146:22da6e220af6 86 .sense = NRF_GPIOTE_POLARITY_HITOLO, \
AnnaBridge 146:22da6e220af6 87 }
AnnaBridge 146:22da6e220af6 88
AnnaBridge 146:22da6e220af6 89 /**@brief Macro for configuring a pin to use a GPIO IN or PORT EVENT to detect any change on the pin.
AnnaBridge 146:22da6e220af6 90 * @details Set hi_accu to true to use IN_EVENT.*/
AnnaBridge 146:22da6e220af6 91 #define GPIOTE_CONFIG_IN_SENSE_TOGGLE(hi_accu) \
AnnaBridge 146:22da6e220af6 92 { \
AnnaBridge 146:22da6e220af6 93 .is_watcher = false, \
AnnaBridge 146:22da6e220af6 94 .hi_accuracy = hi_accu, \
AnnaBridge 146:22da6e220af6 95 .pull = NRF_GPIO_PIN_NOPULL, \
AnnaBridge 146:22da6e220af6 96 .sense = NRF_GPIOTE_POLARITY_TOGGLE, \
AnnaBridge 146:22da6e220af6 97 }
AnnaBridge 146:22da6e220af6 98
AnnaBridge 146:22da6e220af6 99 /**@brief Output pin configuration. */
AnnaBridge 146:22da6e220af6 100 typedef struct
AnnaBridge 146:22da6e220af6 101 {
AnnaBridge 146:22da6e220af6 102 nrf_gpiote_polarity_t action; /**< Configuration of the pin task. */
AnnaBridge 146:22da6e220af6 103 nrf_gpiote_outinit_t init_state; /**< Initial state of the output pin. */
AnnaBridge 146:22da6e220af6 104 bool task_pin; /**< True if the pin is controlled by a GPIOTE task. */
AnnaBridge 146:22da6e220af6 105 } nrf_drv_gpiote_out_config_t;
AnnaBridge 146:22da6e220af6 106
AnnaBridge 146:22da6e220af6 107 /**@brief Macro for configuring a pin to use as output. GPIOTE is not used for the pin. */
AnnaBridge 146:22da6e220af6 108 #define GPIOTE_CONFIG_OUT_SIMPLE(init_high) \
AnnaBridge 146:22da6e220af6 109 { \
AnnaBridge 146:22da6e220af6 110 .init_state = init_high ? NRF_GPIOTE_INITIAL_VALUE_HIGH : NRF_GPIOTE_INITIAL_VALUE_LOW, \
AnnaBridge 146:22da6e220af6 111 .task_pin = false, \
AnnaBridge 146:22da6e220af6 112 }
AnnaBridge 146:22da6e220af6 113
AnnaBridge 146:22da6e220af6 114 /**@brief Macro for configuring a pin to use the GPIO OUT TASK to change the state from high to low.
AnnaBridge 146:22da6e220af6 115 * @details The task will clear the pin. Therefore, the pin is set initially. */
AnnaBridge 146:22da6e220af6 116 #define GPIOTE_CONFIG_OUT_TASK_LOW \
AnnaBridge 146:22da6e220af6 117 { \
AnnaBridge 146:22da6e220af6 118 .init_state = NRF_GPIOTE_INITIAL_VALUE_HIGH, \
AnnaBridge 146:22da6e220af6 119 .task_pin = true, \
AnnaBridge 146:22da6e220af6 120 .action = NRF_GPIOTE_POLARITY_HITOLO, \
AnnaBridge 146:22da6e220af6 121 }
AnnaBridge 146:22da6e220af6 122
AnnaBridge 146:22da6e220af6 123 /**@brief Macro for configuring a pin to use the GPIO OUT TASK to change the state from low to high.
AnnaBridge 146:22da6e220af6 124 * @details The task will set the pin. Therefore, the pin is cleared initially. */
AnnaBridge 146:22da6e220af6 125 #define GPIOTE_CONFIG_OUT_TASK_HIGH \
AnnaBridge 146:22da6e220af6 126 { \
AnnaBridge 146:22da6e220af6 127 .init_state = NRF_GPIOTE_INITIAL_VALUE_LOW, \
AnnaBridge 146:22da6e220af6 128 .task_pin = true, \
AnnaBridge 146:22da6e220af6 129 .action = NRF_GPIOTE_POLARITY_LOTOHI, \
AnnaBridge 146:22da6e220af6 130 }
AnnaBridge 146:22da6e220af6 131
AnnaBridge 146:22da6e220af6 132 /**@brief Macro for configuring a pin to use the GPIO OUT TASK to toggle the pin state.
AnnaBridge 146:22da6e220af6 133 * @details The initial pin state must be provided. */
AnnaBridge 146:22da6e220af6 134 #define GPIOTE_CONFIG_OUT_TASK_TOGGLE(init_high) \
AnnaBridge 146:22da6e220af6 135 { \
AnnaBridge 146:22da6e220af6 136 .init_state = init_high ? NRF_GPIOTE_INITIAL_VALUE_HIGH : NRF_GPIOTE_INITIAL_VALUE_LOW, \
AnnaBridge 146:22da6e220af6 137 .task_pin = true, \
AnnaBridge 146:22da6e220af6 138 .action = NRF_GPIOTE_POLARITY_TOGGLE, \
AnnaBridge 146:22da6e220af6 139 }
AnnaBridge 146:22da6e220af6 140
AnnaBridge 146:22da6e220af6 141 /** @brief Pin. */
AnnaBridge 146:22da6e220af6 142 typedef uint32_t nrf_drv_gpiote_pin_t;
AnnaBridge 146:22da6e220af6 143
AnnaBridge 146:22da6e220af6 144 /**
AnnaBridge 146:22da6e220af6 145 * @brief Pin event handler prototype.
AnnaBridge 146:22da6e220af6 146 * @param pin Pin that triggered this event.
AnnaBridge 146:22da6e220af6 147 * @param action Action that lead to triggering this event.
AnnaBridge 146:22da6e220af6 148 */
AnnaBridge 146:22da6e220af6 149 typedef void (*nrf_drv_gpiote_evt_handler_t)(nrf_drv_gpiote_pin_t pin, nrf_gpiote_polarity_t action);
AnnaBridge 146:22da6e220af6 150
AnnaBridge 146:22da6e220af6 151 /**
AnnaBridge 146:22da6e220af6 152 * @brief Function for initializing the GPIOTE module.
AnnaBridge 146:22da6e220af6 153 *
AnnaBridge 146:22da6e220af6 154 * @details Only static configuration is supported to prevent the shared
AnnaBridge 146:22da6e220af6 155 * resource being customized by the initiator.
AnnaBridge 146:22da6e220af6 156 *
AnnaBridge 146:22da6e220af6 157 * @retval NRF_SUCCESS If initialization was successful.
AnnaBridge 146:22da6e220af6 158 * @retval NRF_ERROR_INVALID_STATE If the driver was already initialized.
AnnaBridge 146:22da6e220af6 159 */
AnnaBridge 146:22da6e220af6 160 ret_code_t nrf_drv_gpiote_init(void);
AnnaBridge 146:22da6e220af6 161
AnnaBridge 146:22da6e220af6 162 /**
AnnaBridge 146:22da6e220af6 163 * @brief Function for checking if the GPIOTE module is initialized.
AnnaBridge 146:22da6e220af6 164 *
AnnaBridge 146:22da6e220af6 165 * @details The GPIOTE module is a shared module. Therefore, you should check if
AnnaBridge 146:22da6e220af6 166 * the module is already initialized and skip initialization if it is.
AnnaBridge 146:22da6e220af6 167 *
AnnaBridge 146:22da6e220af6 168 * @retval true If the module is already initialized.
AnnaBridge 146:22da6e220af6 169 * @retval false If the module is not initialized.
AnnaBridge 146:22da6e220af6 170 */
AnnaBridge 146:22da6e220af6 171 bool nrf_drv_gpiote_is_init(void);
AnnaBridge 146:22da6e220af6 172
AnnaBridge 146:22da6e220af6 173 /**
AnnaBridge 146:22da6e220af6 174 * @brief Function for uninitializing the GPIOTE module.
AnnaBridge 146:22da6e220af6 175 */
AnnaBridge 146:22da6e220af6 176 void nrf_drv_gpiote_uninit(void);
AnnaBridge 146:22da6e220af6 177
AnnaBridge 146:22da6e220af6 178 /**
AnnaBridge 146:22da6e220af6 179 * @brief Function for initializing a GPIOTE output pin.
AnnaBridge 146:22da6e220af6 180 * @details The output pin can be controlled by the CPU or by PPI. The initial
AnnaBridge 146:22da6e220af6 181 * configuration specifies which mode is used. If PPI mode is used, the driver
AnnaBridge 146:22da6e220af6 182 * attempts to allocate one of the available GPIOTE channels. If no channel is
AnnaBridge 146:22da6e220af6 183 * available, an error is returned.
AnnaBridge 146:22da6e220af6 184 *
AnnaBridge 146:22da6e220af6 185 * @param[in] pin Pin.
AnnaBridge 146:22da6e220af6 186 * @param[in] p_config Initial configuration.
AnnaBridge 146:22da6e220af6 187 *
AnnaBridge 146:22da6e220af6 188 * @retval NRF_SUCCESS If initialization was successful.
AnnaBridge 146:22da6e220af6 189 * @retval NRF_ERROR_INVALID_STATE If the driver is not initialized or the pin is already used.
AnnaBridge 146:22da6e220af6 190 * @retval NRF_ERROR_NO_MEM If no GPIOTE channel is available.
AnnaBridge 146:22da6e220af6 191 */
AnnaBridge 146:22da6e220af6 192 ret_code_t nrf_drv_gpiote_out_init(nrf_drv_gpiote_pin_t pin,
AnnaBridge 146:22da6e220af6 193 nrf_drv_gpiote_out_config_t const * p_config);
AnnaBridge 146:22da6e220af6 194
AnnaBridge 146:22da6e220af6 195 /**
AnnaBridge 146:22da6e220af6 196 * @brief Function for uninitializing a GPIOTE output pin.
AnnaBridge 146:22da6e220af6 197 * @details The driver frees the GPIOTE channel if the output pin was using one.
AnnaBridge 146:22da6e220af6 198 *
AnnaBridge 146:22da6e220af6 199 * @param[in] pin Pin.
AnnaBridge 146:22da6e220af6 200 */
AnnaBridge 146:22da6e220af6 201 void nrf_drv_gpiote_out_uninit(nrf_drv_gpiote_pin_t pin);
AnnaBridge 146:22da6e220af6 202
AnnaBridge 146:22da6e220af6 203 /**
AnnaBridge 146:22da6e220af6 204 * @brief Function for setting a GPIOTE output pin.
AnnaBridge 146:22da6e220af6 205 *
AnnaBridge 146:22da6e220af6 206 * @param[in] pin Pin.
AnnaBridge 146:22da6e220af6 207 */
AnnaBridge 146:22da6e220af6 208 void nrf_drv_gpiote_out_set(nrf_drv_gpiote_pin_t pin);
AnnaBridge 146:22da6e220af6 209
AnnaBridge 146:22da6e220af6 210 /**
AnnaBridge 146:22da6e220af6 211 * @brief Function for clearing a GPIOTE output pin.
AnnaBridge 146:22da6e220af6 212 *
AnnaBridge 146:22da6e220af6 213 * @param[in] pin Pin.
AnnaBridge 146:22da6e220af6 214 */
AnnaBridge 146:22da6e220af6 215 void nrf_drv_gpiote_out_clear(nrf_drv_gpiote_pin_t pin);
AnnaBridge 146:22da6e220af6 216
AnnaBridge 146:22da6e220af6 217 /**
AnnaBridge 146:22da6e220af6 218 * @brief Function for toggling a GPIOTE output pin.
AnnaBridge 146:22da6e220af6 219 *
AnnaBridge 146:22da6e220af6 220 * @param[in] pin Pin.
AnnaBridge 146:22da6e220af6 221 */
AnnaBridge 146:22da6e220af6 222 void nrf_drv_gpiote_out_toggle(nrf_drv_gpiote_pin_t pin);
AnnaBridge 146:22da6e220af6 223
AnnaBridge 146:22da6e220af6 224 /**
AnnaBridge 146:22da6e220af6 225 * @brief Function for enabling a GPIOTE output pin task.
AnnaBridge 146:22da6e220af6 226 *
AnnaBridge 146:22da6e220af6 227 * @param[in] pin Pin.
AnnaBridge 146:22da6e220af6 228 */
AnnaBridge 146:22da6e220af6 229 void nrf_drv_gpiote_out_task_enable(nrf_drv_gpiote_pin_t pin);
AnnaBridge 146:22da6e220af6 230
AnnaBridge 146:22da6e220af6 231 /**
AnnaBridge 146:22da6e220af6 232 * @brief Function for disabling a GPIOTE output pin task.
AnnaBridge 146:22da6e220af6 233 *
AnnaBridge 146:22da6e220af6 234 * @param[in] pin Pin.
AnnaBridge 146:22da6e220af6 235 */
AnnaBridge 146:22da6e220af6 236 void nrf_drv_gpiote_out_task_disable(nrf_drv_gpiote_pin_t pin);
AnnaBridge 146:22da6e220af6 237
AnnaBridge 146:22da6e220af6 238 /**
AnnaBridge 146:22da6e220af6 239 * @brief Function for getting the address of a configurable GPIOTE task.
AnnaBridge 146:22da6e220af6 240 *
AnnaBridge 146:22da6e220af6 241 * @param[in] pin Pin.
AnnaBridge 146:22da6e220af6 242 */
AnnaBridge 146:22da6e220af6 243 uint32_t nrf_drv_gpiote_out_task_addr_get(nrf_drv_gpiote_pin_t pin);
AnnaBridge 146:22da6e220af6 244
AnnaBridge 146:22da6e220af6 245 /**
AnnaBridge 146:22da6e220af6 246 * @brief Function for initializing a GPIOTE input pin.
AnnaBridge 146:22da6e220af6 247 * @details The input pin can act in two ways:
AnnaBridge 146:22da6e220af6 248 * - lower accuracy but low power (high frequency clock not needed)
AnnaBridge 146:22da6e220af6 249 * - higher accuracy (high frequency clock required)
AnnaBridge 146:22da6e220af6 250 *
AnnaBridge 146:22da6e220af6 251 * The initial configuration specifies which mode is used.
AnnaBridge 146:22da6e220af6 252 * If high-accuracy mode is used, the driver attempts to allocate one
AnnaBridge 146:22da6e220af6 253 * of the available GPIOTE channels. If no channel is
AnnaBridge 146:22da6e220af6 254 * available, an error is returned.
AnnaBridge 146:22da6e220af6 255 * In low accuracy mode SENSE feature is used. In this case only one active pin
AnnaBridge 146:22da6e220af6 256 * can be detected at a time. It can be worked around by setting all of the used
AnnaBridge 146:22da6e220af6 257 * low accuracy pins to toggle mode.
AnnaBridge 146:22da6e220af6 258 * For more information about SENSE functionality, refer to Product Specification.
AnnaBridge 146:22da6e220af6 259 *
AnnaBridge 146:22da6e220af6 260 * @param[in] pin Pin.
AnnaBridge 146:22da6e220af6 261 * @param[in] p_config Initial configuration.
AnnaBridge 146:22da6e220af6 262 * @param[in] evt_handler User function to be called when the configured transition occurs.
AnnaBridge 146:22da6e220af6 263 *
AnnaBridge 146:22da6e220af6 264 * @retval NRF_SUCCESS If initialization was successful.
AnnaBridge 146:22da6e220af6 265 * @retval NRF_ERROR_INVALID_STATE If the driver is not initialized or the pin is already used.
AnnaBridge 146:22da6e220af6 266 * @retval NRF_ERROR_NO_MEM If no GPIOTE channel is available.
AnnaBridge 146:22da6e220af6 267 */
AnnaBridge 146:22da6e220af6 268 ret_code_t nrf_drv_gpiote_in_init(nrf_drv_gpiote_pin_t pin,
AnnaBridge 146:22da6e220af6 269 nrf_drv_gpiote_in_config_t const * p_config,
AnnaBridge 146:22da6e220af6 270 nrf_drv_gpiote_evt_handler_t evt_handler);
AnnaBridge 146:22da6e220af6 271
AnnaBridge 146:22da6e220af6 272 /**
AnnaBridge 146:22da6e220af6 273 * @brief Function for uninitializing a GPIOTE input pin.
AnnaBridge 146:22da6e220af6 274 * @details The driver frees the GPIOTE channel if the input pin was using one.
AnnaBridge 146:22da6e220af6 275 *
AnnaBridge 146:22da6e220af6 276 * @param[in] pin Pin.
AnnaBridge 146:22da6e220af6 277 */
AnnaBridge 146:22da6e220af6 278 void nrf_drv_gpiote_in_uninit(nrf_drv_gpiote_pin_t pin);
AnnaBridge 146:22da6e220af6 279
AnnaBridge 146:22da6e220af6 280 /**
AnnaBridge 146:22da6e220af6 281 * @brief Function for enabling sensing of a GPIOTE input pin.
AnnaBridge 146:22da6e220af6 282 *
AnnaBridge 146:22da6e220af6 283 * @details If the input pin is configured as high-accuracy pin, the function
AnnaBridge 146:22da6e220af6 284 * enables an IN_EVENT. Otherwise, the function enables the GPIO sense mechanism.
AnnaBridge 146:22da6e220af6 285 * Note that a PORT event is shared between multiple pins, therefore the
AnnaBridge 146:22da6e220af6 286 * interrupt is always enabled.
AnnaBridge 146:22da6e220af6 287 *
AnnaBridge 146:22da6e220af6 288 * @param[in] pin Pin.
AnnaBridge 146:22da6e220af6 289 * @param[in] int_enable True to enable the interrupt. Always valid for a high-accuracy pin.
AnnaBridge 146:22da6e220af6 290 */
AnnaBridge 146:22da6e220af6 291 void nrf_drv_gpiote_in_event_enable(nrf_drv_gpiote_pin_t pin, bool int_enable);
AnnaBridge 146:22da6e220af6 292
AnnaBridge 146:22da6e220af6 293 /**
AnnaBridge 146:22da6e220af6 294 * @brief Function for disabling a GPIOTE input pin.
AnnaBridge 146:22da6e220af6 295 *
AnnaBridge 146:22da6e220af6 296 * @param[in] pin Pin.
AnnaBridge 146:22da6e220af6 297 */
AnnaBridge 146:22da6e220af6 298 void nrf_drv_gpiote_in_event_disable(nrf_drv_gpiote_pin_t pin);
AnnaBridge 146:22da6e220af6 299
AnnaBridge 146:22da6e220af6 300 /**
AnnaBridge 146:22da6e220af6 301 * @brief Function for checking if a GPIOTE input pin is set.
AnnaBridge 146:22da6e220af6 302 *
AnnaBridge 146:22da6e220af6 303 * @param[in] pin Pin.
AnnaBridge 146:22da6e220af6 304 * @retval true If the input pin is set.
AnnaBridge 146:22da6e220af6 305 * @retval false If the input pin is not set.
AnnaBridge 146:22da6e220af6 306 */
AnnaBridge 146:22da6e220af6 307 bool nrf_drv_gpiote_in_is_set(nrf_drv_gpiote_pin_t pin);
AnnaBridge 146:22da6e220af6 308
AnnaBridge 146:22da6e220af6 309 /**
AnnaBridge 146:22da6e220af6 310 * @brief Function for getting the address of a GPIOTE input pin event.
AnnaBridge 146:22da6e220af6 311 * @details If the pin is configured to use low-accuracy mode, the address of the PORT event is returned.
AnnaBridge 146:22da6e220af6 312 *
AnnaBridge 146:22da6e220af6 313 * @param[in] pin Pin.
AnnaBridge 146:22da6e220af6 314 */
AnnaBridge 146:22da6e220af6 315 uint32_t nrf_drv_gpiote_in_event_addr_get(nrf_drv_gpiote_pin_t pin);
AnnaBridge 146:22da6e220af6 316
AnnaBridge 146:22da6e220af6 317 /**
AnnaBridge 146:22da6e220af6 318 * @brief Function for forcing a specific state on the pin configured as task.
AnnaBridge 146:22da6e220af6 319 *
AnnaBridge 146:22da6e220af6 320 * @param[in] pin Pin.
AnnaBridge 146:22da6e220af6 321 * @param[in] state Pin state.
AnnaBridge 146:22da6e220af6 322 */
AnnaBridge 146:22da6e220af6 323 void nrf_drv_gpiote_out_task_force(nrf_drv_gpiote_pin_t pin, uint8_t state);
AnnaBridge 146:22da6e220af6 324
AnnaBridge 146:22da6e220af6 325 /**
AnnaBridge 146:22da6e220af6 326 * @brief Function for triggering the task manually.
AnnaBridge 146:22da6e220af6 327 *
AnnaBridge 146:22da6e220af6 328 * @param[in] pin Pin.
AnnaBridge 146:22da6e220af6 329 */
AnnaBridge 146:22da6e220af6 330 void nrf_drv_gpiote_out_task_trigger(nrf_drv_gpiote_pin_t pin);
AnnaBridge 146:22da6e220af6 331
AnnaBridge 146:22da6e220af6 332 /**
AnnaBridge 146:22da6e220af6 333 *@}
AnnaBridge 146:22da6e220af6 334 **/
AnnaBridge 146:22da6e220af6 335
AnnaBridge 146:22da6e220af6 336 #endif //NRF_DRV_GPIOTE__