pinmap: More work around abstracting pin information
authorThomas Ingleby <thomas.c.ingleby@intel.com>
Wed, 30 Apr 2014 10:13:36 +0000 (11:13 +0100)
committerThomas Ingleby <thomas.c.ingleby@intel.com>
Wed, 30 Apr 2014 10:13:36 +0000 (11:13 +0100)
Signed-off-by: Thomas Ingleby <thomas.c.ingleby@intel.com>
api/maa.h
src/maa.c

index 67f0248..589209a 100644 (file)
--- a/api/maa.h
+++ b/api/maa.h
@@ -79,6 +79,7 @@ typedef struct {
 
 unsigned int maa_check_gpio(int pin);
 unsigned int maa_check_aio(int pin);
+unsigned int maa_check_pwm(int pin);
 
 /** Get the version string of maa autogenerated from git tag
  *
index 8301017..6b772be 100644 (file)
--- a/src/maa.c
+++ b/src/maa.c
@@ -42,6 +42,18 @@ maa_init()
     return MAA_ERROR_FEATURE_NOT_IMPLEMENTED;
 }
 
+static maa_result_t
+maa_setup_mux_mapped(maa_pininfo meta)
+{
+    int mi;
+    for(mi = 0; mi < meta.mux_total; mi++) {
+        maa_gpio_context* mux_i;
+        mux_i = maa_gpio_init_raw(meta.mux[mi].pin);
+        maa_gpio_dir(mux_i, MAA_GPIO_OUT);
+        maa_gpio_write(mux_i, meta.mux[mi].value);
+    }
+}
+
 unsigned int
 maa_check_gpio(int pin){
 
@@ -49,18 +61,10 @@ maa_check_gpio(int pin){
         return -1;
     }
     //Check in gpio bounds?
-    if(pindata[pin].mux_total > 0) {
-        int mi;
-        for(mi = 0; mi < pindata[pin].mux_total; mi++) {
-            //Do we want to keep the gpio object around
-            //I dont think so
-            maa_gpio_context* mux_i;
-            //TODO CHANGE TO RAW
-            mux_i = maa_gpio_init(pindata[pin].mux[mi].pin);
-            maa_gpio_dir(mux_i, "out");
-            maa_gpio_write(mux_i, pindata[pin].mux[mi].value);
-        }
-    }
-    return pindata[pin].pin
+    if(pindata[pin].mux_total > 0)
+        if(maa_setup_mux_mapped(pindata[pin]) != MAA_SUCCESS)
+            return -1;
+
+    return pindata[pin].pin;
 }