pinmap: Defining pindata structures
* Logic for setting up required multiplexers Signed-off-by: Thomas Ingleby <thomas.c.ingleby@intel.com>
This commit is contained in:
31
api/maa.h
31
api/maa.h
@@ -49,6 +49,37 @@ typedef enum {
|
||||
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
|
||||
|
||||
34
src/maa.c
34
src/maa.c
@@ -22,11 +22,45 @@
|
||||
* 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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user