gpio.c: add advance_func->gpio_close_pre
authorKurt Eckhardt <kurte@rockisland.com>
Thu, 18 Dec 2014 14:20:14 +0000 (14:20 +0000)
committerBrendan Le Foll <brendan.le.foll@intel.com>
Fri, 19 Dec 2014 14:40:01 +0000 (14:40 +0000)
Signed-off-by: Kurt Eckhardt <kurte@rockisland.com>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
include/mraa_adv_func.h
src/gpio/gpio.c

index 78962c5..cdc625d 100644 (file)
@@ -32,6 +32,8 @@ typedef struct {
     mraa_result_t (*gpio_init_pre) (int pin);
     mraa_result_t (*gpio_init_post) (mraa_gpio_context dev);
 
+    mraa_result_t (*gpio_close_pre) (mraa_gpio_context dev);
+
     mraa_result_t (*gpio_mode_replace) (mraa_gpio_context dev, gpio_mode_t mode);
     mraa_result_t (*gpio_mode_pre) (mraa_gpio_context dev, gpio_mode_t mode);
     mraa_result_t (*gpio_mode_post) (mraa_gpio_context dev, gpio_mode_t mode);
index 7a570db..721a5ca 100644 (file)
@@ -539,12 +539,18 @@ mraa_gpio_unexport(mraa_gpio_context dev)
 mraa_result_t
 mraa_gpio_close(mraa_gpio_context dev)
 {
+    mraa_result_t result = MRAA_SUCCESS;
+
+    if (advance_func->gpio_close_pre != NULL) {
+        result = advance_func->gpio_close_pre(dev);
+    }
+
     if (dev->value_fp != -1) {
         close(dev->value_fp);
     }
     mraa_gpio_unexport(dev);
     free(dev);
-    return MRAA_SUCCESS;
+    return result;
 }
 
 mraa_result_t