This fork captures the mbed lib v125 for ease of integration into older projects.

Fork of mbed-dev by mbed official

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers gpio_irq_api.h Source File

gpio_irq_api.h

00001 /* mbed Microcontroller Library
00002  * Copyright (c) 2006-2013 ARM Limited
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *     http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 #ifndef MBED_GPIO_IRQ_API_H
00017 #define MBED_GPIO_IRQ_API_H
00018 
00019 #include "device.h"
00020 
00021 #if DEVICE_INTERRUPTIN
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 /** GPIO IRQ events
00028  */
00029 typedef enum {
00030     IRQ_NONE,
00031     IRQ_RISE,
00032     IRQ_FALL
00033 } gpio_irq_event;
00034 
00035 /** GPIO IRQ HAL structure. gpio_irq_s is declared in the target's HAL
00036  */
00037 typedef struct gpio_irq_s gpio_irq_t;
00038 
00039 typedef void (*gpio_irq_handler)(uint32_t id, gpio_irq_event event);
00040 
00041 /**
00042  * \defgroup hal_gpioirq GPIO IRQ HAL functions
00043  * @{
00044  */
00045 
00046 /** Initialize the GPIO IRQ pin
00047  *
00048  * @param obj     The GPIO object to initialize
00049  * @param pin     The GPIO pin name
00050  * @param handler The handler to be attached to GPIO IRQ
00051  * @param id      The object ID (id != 0, 0 is reserved)
00052  * @return -1 if pin is NC, 0 otherwise
00053  */
00054 int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32_t id);
00055 
00056 /** Release the GPIO IRQ PIN
00057  *
00058  * @param obj The gpio object
00059  */
00060 void gpio_irq_free(gpio_irq_t *obj);
00061 
00062 /** Enable/disable pin IRQ event
00063  *
00064  * @param obj    The GPIO object
00065  * @param event  The GPIO IRQ event
00066  * @param enable The enable flag
00067  */
00068 void gpio_irq_set(gpio_irq_t *obj, gpio_irq_event event, uint32_t enable);
00069 
00070 /** Enable GPIO IRQ
00071  *
00072  * This is target dependent, as it might enable the entire port or just a pin
00073  * @param obj The GPIO object
00074  */
00075 void gpio_irq_enable(gpio_irq_t *obj);
00076 
00077 /** Disable GPIO IRQ
00078  *
00079  * This is target dependent, as it might disable the entire port or just a pin
00080  * @param obj The GPIO object
00081  */
00082 void gpio_irq_disable(gpio_irq_t *obj);
00083 
00084 /**@}*/
00085 
00086 #ifdef __cplusplus
00087 }
00088 #endif
00089 
00090 #endif
00091 
00092 #endif