MAA_ERROR_UNSPECIFIED = 99
} maa_result_t;
+typedef unsigned int maa_boolean_t;
+
+typedef union {
+ struct {
+ maa_boolean_t valid:1;
+ maa_boolean_t gpio:1;
+ maa_boolean_t pwm:1;
+ maa_boolean_t fast_gpio:1;
+ maa_boolean_t spi:1;
+ maa_boolean_t i2c:1;
+ };
+ int raw;
+} maa_pincapabilities_t;
+
+typedef struct {
+ unsigned int pin;
+ unsigned int value;
+} maa_mux_t;
+
+typedef struct {
+ char name[8];// do we need this
+ unsigned int pin;
+ int parent_id;
+ maa_pincapabilities_t capabilites;
+ maa_mux_t mux[4];
+ unsigned int mux_total;
+} maa_pininfo;
+
+unsigned int maa_check_gpio(int pin);
+unsigned int maa_check_aio(int pin);
+
/** Get the version string of maa autogenerated from git tag
*
* The version returned may not be what is expected however it is a reliable
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
+#include <stddef.h>
+
#include "maa.h"
+#include "gpio.h"
#include "version.h"
+static maa_pininfo* pindata;
+
const char *
maa_get_version()
{
return gVERSION;
}
+
+maa_result_t
+maa_init()
+{
+ return MAA_ERROR_FEATURE_NOT_IMPLEMENTED;
+}
+
+unsigned int
+maa_check_gpio(int pin){
+
+ if(pindata == NULL) {
+ 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
+}
+