#include <string.h>
#include <sys/stat.h>
#include <sys/mman.h>
+#include <sys/ioctl.h>
+#include <linux/spi/spidev.h>
#include "common.h"
#include "x86/intel_edison_fab_c.h"
#define PLATFORM_NAME "Intel Edison"
#define SYSFS_CLASS_GPIO "/sys/class/gpio"
-#define SYSFS_PINMODE_PATH "/sys/kernel/debug/gpio_debug/gpio"
+#define DEBUGFS_PINMODE_PATH "/sys/kernel/debug/gpio_debug/gpio"
#define MAX_SIZE 64
#define MAX_MODE_SIZE 8
// Might not always be correct. First thing to check if mmap stops
// working. Check the device for 0x1199 and Intel Vendor (0x8086)
#define MMAP_PATH "/sys/devices/pci0000:00/0000:00:0c.0/resource0"
+#define UART_DEV_PATH "/dev/ttyMFD1"
typedef struct {
int sysfs;
static mraa_gpio_context tristate;
static mraa_intel_edison_pinmodes_t pinmodes[MRAA_INTEL_EDISON_PINCOUNT];
-static unsigned int outputen[] = {248,249,250,251,252,253,254,255,256,257,258,259,260,261,232,233,234,235,236,237};
-static mraa_gpio_context agpioOutputen[sizeof(outputen)/sizeof(outputen[0])];
+static unsigned int outputen[] = { 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 232, 233, 234, 235, 236, 237 };
+static mraa_gpio_context agpioOutputen[sizeof(outputen) / sizeof(outputen[0])];
-static unsigned int pullup_map[] = {216,217,218,219,220,221,222,223,224,225,226,227,228,229,208,209,210,211,212,213};
+static unsigned int pullup_map[] = { 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 208, 209, 210, 211, 212, 213 };
static int miniboard = 0;
-//MMAP
-static uint8_t *mmap_reg = NULL;
+// MMAP
+static uint8_t* mmap_reg = NULL;
static int mmap_fd = 0;
static int mmap_size;
static unsigned int mmap_count = 0;
+mraa_result_t
+mraa_intel_edison_spi_lsbmode_replace(mraa_spi_context dev, mraa_boolean_t lsb)
+{
+ uint8_t lsb_mode = (uint8_t) lsb;
+
+ // Edison doesn't support LSB_FIRST, we need to react appropriately
+ if (!lsb) {
+ if (ioctl(dev->devfd, SPI_IOC_WR_LSB_FIRST, &lsb_mode) < 0) {
+ syslog(LOG_ERR, "spi: Failed to set bit order");
+ return MRAA_ERROR_INVALID_RESOURCE;
+ }
+ if (ioctl(dev->devfd, SPI_IOC_RD_LSB_FIRST, &lsb_mode) < 0) {
+ syslog(LOG_ERR, "spi: Failed to set bit order");
+ return MRAA_ERROR_INVALID_RESOURCE;
+ }
+ } else {
+ return MRAA_ERROR_FEATURE_NOT_SUPPORTED;
+ }
+
+ dev->lsb = lsb;
+ return MRAA_SUCCESS;
+}
+
static mraa_result_t
mraa_intel_edison_pinmode_change(int sysfs, int mode)
{
- if (mode < 0 ) {
+ if (mode < 0) {
return MRAA_SUCCESS;
}
char buffer[MAX_SIZE];
- snprintf(buffer, MAX_SIZE, SYSFS_PINMODE_PATH "%i/current_pinmux",sysfs);
+ int useDebugFS = 0;
+
+ mraa_gpio_context mode_gpio = mraa_gpio_init_raw(sysfs);
+ if (mode_gpio == NULL) {
+ return MRAA_ERROR_NO_RESOURCES;
+ }
+
+ // first try SYSFS_CLASS_GPIO path
+ snprintf(buffer, MAX_SIZE, SYSFS_CLASS_GPIO "/gpio%i/pinmux", sysfs);
int modef = open(buffer, O_WRONLY);
if (modef == -1) {
+ snprintf(buffer, MAX_SIZE, DEBUGFS_PINMODE_PATH "%i/current_pinmux", sysfs);
+ modef = open(buffer, O_WRONLY);
+ useDebugFS = 1;
+ }
+
+ if (modef == -1) {
syslog(LOG_ERR, "edison: Failed to open SoC pinmode for opening");
+ mraa_gpio_close(mode_gpio);
return MRAA_ERROR_INVALID_RESOURCE;
}
mraa_result_t ret = MRAA_SUCCESS;
char mode_buf[MAX_MODE_SIZE];
- int length = sprintf(mode_buf, "mode%u",mode);
- if (write(modef, mode_buf, length*sizeof(char)) == -1) {
+ int length = sprintf(mode_buf, "%s%u", useDebugFS ? "mode" : "", mode);
+ if (write(modef, mode_buf, length * sizeof(char)) == -1) {
ret = MRAA_ERROR_INVALID_RESOURCE;
}
close(modef);
+ mraa_gpio_close(mode_gpio);
return ret;
}
mraa_result_t
-mraa_intel_edison_gpio_dir_pre(mraa_gpio_context dev, gpio_dir_t dir)
+mraa_intel_edison_gpio_dir_pre(mraa_gpio_context dev, mraa_gpio_dir_t dir)
{
if (dev->phy_pin >= 0) {
}
mraa_result_t
-mraa_intel_edison_gpio_dir_post(mraa_gpio_context dev, gpio_dir_t dir)
+mraa_intel_edison_gpio_dir_post(mraa_gpio_context dev, mraa_gpio_dir_t dir)
{
if (dev->phy_pin >= 0) {
return mraa_gpio_write(tristate, 1);
mraa_gpio_write(tristate, 1);
} else {
- if(bus != 6 && bus != 1) {
+ if (bus != 6 && bus != 1) {
syslog(LOG_ERR, "edison: You can't use that bus, switching to bus 6");
bus = 6;
}
static mraa_result_t
mraa_intel_edison_misc_spi()
{
- mraa_gpio_write(tristate, 0);
+ // These arrays must have same length
+ static const int gpio_pin_list[] = {263, 240, 262, 241, 242, 243};
+ static int pin_num = sizeof(gpio_pin_list) / sizeof(int);
+ static const int gpio_val_list[] = {1, 0, 1, 0, 0, 0};
+ static const int gpio_dir_list[] = {MRAA_GPIO_OUT, MRAA_GPIO_OUT,
+ MRAA_GPIO_OUT, MRAA_GPIO_OUT,
+ MRAA_GPIO_OUT, MRAA_GPIO_OUT};
+ int i;
+ mraa_result_t ret;
+
+ MRAA_RETURN_FOR_ERROR(mraa_gpio_write(tristate, 0));
+
+ for (i = 0; i < pin_num; i++) {
+ mraa_gpio_context io = mraa_gpio_init_raw(gpio_pin_list[i]);
+ if (io != NULL) {
+ ret = mraa_gpio_dir(io, gpio_dir_list[i]);
+ if (ret == MRAA_SUCCESS) {
+ ret = mraa_gpio_write(io, gpio_val_list[i]);
+ }
+
+ //Don't care return value of close()
+ mraa_gpio_close(io);
+ MRAA_RETURN_FOR_ERROR(ret);
+ } else {
+ syslog(LOG_ERR, "edison: Failed to init raw gpio %d!",gpio_pin_list[i]);
+ return MRAA_ERROR_NO_RESOURCES;
+ }
+ }
- mraa_gpio_context io10_p1 = mraa_gpio_init_raw(263);
- mraa_gpio_context io10_p2 = mraa_gpio_init_raw(240);
- mraa_gpio_context io11_p1 = mraa_gpio_init_raw(262);
- mraa_gpio_context io11_p2 = mraa_gpio_init_raw(241);
- mraa_gpio_context io12_p1 = mraa_gpio_init_raw(242);
- mraa_gpio_context io13_p1 = mraa_gpio_init_raw(243);
- mraa_gpio_dir(io10_p1, MRAA_GPIO_OUT);
- mraa_gpio_dir(io10_p2, MRAA_GPIO_OUT);
- mraa_gpio_dir(io11_p1, MRAA_GPIO_OUT);
- mraa_gpio_dir(io11_p2, MRAA_GPIO_OUT);
- mraa_gpio_dir(io12_p1, MRAA_GPIO_OUT);
- mraa_gpio_dir(io13_p1, MRAA_GPIO_OUT);
-
- mraa_gpio_write(io10_p1, 1);
- mraa_gpio_write(io10_p2, 0);
- mraa_gpio_write(io11_p1, 1);
- mraa_gpio_write(io11_p2, 0);
- mraa_gpio_write(io12_p1, 0);
- mraa_gpio_write(io13_p1, 0);
-
- mraa_gpio_close(io10_p1);
- mraa_gpio_close(io10_p2);
- mraa_gpio_close(io11_p1);
- mraa_gpio_close(io11_p2);
- mraa_gpio_close(io12_p1);
- mraa_gpio_close(io13_p1);
-
- mraa_intel_edison_pinmode_change(111, 1);
- mraa_intel_edison_pinmode_change(115, 1);
- mraa_intel_edison_pinmode_change(114, 1);
- mraa_intel_edison_pinmode_change(109, 1);
- mraa_gpio_write(tristate, 1);
+ MRAA_RETURN_FOR_ERROR(mraa_intel_edison_pinmode_change(115, 1));
+ MRAA_RETURN_FOR_ERROR(mraa_intel_edison_pinmode_change(114, 1));
+ MRAA_RETURN_FOR_ERROR(mraa_intel_edison_pinmode_change(109, 1));
+ MRAA_RETURN_FOR_ERROR(mraa_gpio_write(tristate, 1));
return MRAA_SUCCESS;
}
mraa_result_t
mraa_intel_edison_aio_get_fp(mraa_aio_context dev)
{
- char file_path[64]= "";
+ char file_path[64] = "";
- snprintf(file_path, 64, "/sys/bus/iio/devices/iio:device1/in_voltage%d_raw",
- dev->channel );
+ snprintf(file_path, 64, "/sys/bus/iio/devices/iio:device1/in_voltage%d_raw", dev->channel);
dev->adc_in_fp = open(file_path, O_RDONLY);
if (dev->adc_in_fp == -1) {
syslog(LOG_ERR, "edison: Failed to open Analog input raw file %s for "
- "reading!", file_path);
+ "reading!",
+ file_path);
return MRAA_ERROR_INVALID_RESOURCE;
}
mraa_intel_edison_spi_init_pre(int bus)
{
if (miniboard == 1) {
- mraa_intel_edison_pinmode_change(111, 1);
mraa_intel_edison_pinmode_change(115, 1);
mraa_intel_edison_pinmode_change(114, 1);
mraa_intel_edison_pinmode_change(109, 1);
}
mraa_result_t
-mraa_intel_edison_gpio_mode_replace(mraa_gpio_context dev, gpio_mode_t mode)
+mraa_intel_edison_gpio_mode_replace(mraa_gpio_context dev, mraa_gpio_mode_t mode)
{
if (dev->value_fp != -1) {
- if (close(dev->value_fp) != 0) {
- return MRAA_ERROR_INVALID_RESOURCE;
- }
- dev->value_fp = -1;
+ if (close(dev->value_fp) != 0) {
+ return MRAA_ERROR_INVALID_RESOURCE;
+ }
+ dev->value_fp = -1;
}
mraa_gpio_context pullup_e;
}
int value = -1;
- switch(mode) {
+ switch (mode) {
case MRAA_GPIO_STRONG:
break;
case MRAA_GPIO_PULLUP:
mraa_gpio_close(pullup_e);
return MRAA_ERROR_INVALID_RESOURCE;
}
- if (mraa_gpio_write(pullup_e, value)!= MRAA_SUCCESS) {
+ if (mraa_gpio_write(pullup_e, value) != MRAA_SUCCESS) {
syslog(LOG_ERR, "edison: Error setting pullup");
mraa_gpio_close(pullup_e);
return MRAA_ERROR_INVALID_RESOURCE;
}
mraa_result_t
-mraa_intel_edsion_mb_gpio_mode(mraa_gpio_context dev, gpio_mode_t mode)
+mraa_intel_edsion_mb_gpio_mode(mraa_gpio_context dev, mraa_gpio_mode_t mode)
{
if (dev->value_fp != -1) {
- if (close(dev->value_fp) != 0) {
- return MRAA_ERROR_INVALID_RESOURCE;
- }
- dev->value_fp = -1;
+ if (close(dev->value_fp) != 0) {
+ return MRAA_ERROR_INVALID_RESOURCE;
+ }
+ dev->value_fp = -1;
}
char filepath[MAX_SIZE];
- snprintf(filepath, MAX_SIZE,
- SYSFS_PINMODE_PATH "%d/current_pullmode", dev->pin);
+ mraa_gpio_context mode_gpio = mraa_gpio_init_raw(dev->pin);
+ if (mode_gpio == NULL) {
+ return MRAA_ERROR_NO_RESOURCES;
+ }
+
+ // first try SYSFS_CLASS_GPIO path
+ snprintf(filepath, MAX_SIZE, SYSFS_CLASS_GPIO "/gpio%d/pullmode", dev->pin);
int drive = open(filepath, O_WRONLY);
+
+ if (drive == -1) {
+ snprintf(filepath, MAX_SIZE, DEBUGFS_PINMODE_PATH "%d/current_pullmode", dev->pin);
+ drive = open(filepath, O_WRONLY);
+ }
+
if (drive == -1) {
syslog(LOG_ERR, "edison: Failed to open drive for writing");
+ mraa_gpio_close(mode_gpio);
return MRAA_ERROR_INVALID_RESOURCE;
}
char bu[MAX_SIZE];
int length;
- switch(mode) {
+ switch (mode) {
case MRAA_GPIO_STRONG:
+ mraa_gpio_close(mode_gpio);
close(drive);
return MRAA_SUCCESS;
case MRAA_GPIO_PULLUP:
length = snprintf(bu, sizeof(bu), "nopull");
break;
default:
+ mraa_gpio_close(mode_gpio);
close(drive);
return MRAA_ERROR_FEATURE_NOT_IMPLEMENTED;
}
- if (write(drive, bu, length*sizeof(char)) == -1) {
+ if (write(drive, bu, length * sizeof(char)) == -1) {
syslog(LOG_ERR, "edison: Failed to write to drive mode");
+ mraa_gpio_close(mode_gpio);
close(drive);
return MRAA_ERROR_INVALID_RESOURCE;
}
+ mraa_gpio_close(mode_gpio);
if (close(drive) != 0) {
return MRAA_ERROR_INVALID_RESOURCE;
}
mraa_result_t
mraa_intel_edison_uart_init_pre(int index)
{
+ if (index != 0) {
+ syslog(LOG_ERR, "edison: Failed to write to drive mode");
+ return MRAA_ERROR_INVALID_RESOURCE;
+ }
if (miniboard == 0) {
mraa_gpio_write(tristate, 0);
mraa_gpio_context io0_output = mraa_gpio_init_raw(248);
mraa_gpio_close(io1_pullup);
}
mraa_result_t ret;
- ret = mraa_intel_edison_pinmode_change(130,1); //IO0 RX
- ret = mraa_intel_edison_pinmode_change(131,1); //IO1 TX
+ ret = mraa_intel_edison_pinmode_change(130, 1); // IO0 RX
+ ret = mraa_intel_edison_pinmode_change(131, 1); // IO1 TX
return ret;
}
valoff = 0x4c;
}
- *(volatile uint32_t*) (mmap_reg + offset + valoff) =
- (uint32_t)(1 << (dev->pin % 32));
+ *(volatile uint32_t*) (mmap_reg + offset + valoff) = (uint32_t)(1 << (dev->pin % 32));
return MRAA_SUCCESS;
}
uint8_t offset = ((dev->pin / 32) * sizeof(uint32_t));
uint32_t value;
- value = *(volatile uint32_t*) (mmap_reg +0x04+ offset);
- if (value&(uint32_t)(1 << (dev->pin % 32))) {
+ value = *(volatile uint32_t*) (mmap_reg + 0x04 + offset);
+ if (value & (uint32_t)(1 << (dev->pin % 32))) {
return 1;
}
return 0;
return MRAA_ERROR_INVALID_PARAMETER;
}
- //Might need to make some elements of this thread safe.
- //For example only allow one thread to enter the following block
- //to prevent mmap'ing twice.
+ // Might need to make some elements of this thread safe.
+ // For example only allow one thread to enter the following block
+ // to prevent mmap'ing twice.
if (mmap_reg == NULL) {
if ((mmap_fd = open(MMAP_PATH, O_RDWR)) < 0) {
syslog(LOG_ERR, "edison map: unable to open resource0 file");
}
struct stat fd_stat;
- fstat(mmap_fd, &fd_stat);
+ if (fstat(mmap_fd, &fd_stat) != 0) {
+ syslog(LOG_ERR, "edison map: unable to access resource0 file");
+ return MRAA_ERROR_INVALID_HANDLE;
+ }
mmap_size = fd_stat.st_size;
- mmap_reg = (uint8_t*) mmap(NULL, fd_stat.st_size,
- PROT_READ | PROT_WRITE,
- MAP_FILE | MAP_SHARED,
- mmap_fd, 0);
+ mmap_reg =
+ (uint8_t*) mmap(NULL, fd_stat.st_size, PROT_READ | PROT_WRITE, MAP_FILE | MAP_SHARED, mmap_fd, 0);
if (mmap_reg == MAP_FAILED) {
syslog(LOG_ERR, "edison mmap: failed to mmap");
mmap_reg = NULL;
mraa_result_t
mraa_intel_edison_i2c_freq(mraa_i2c_context dev, mraa_i2c_mode_t mode)
{
- if (dev->busnum == 6) {
- int sysnode = open("/sys/devices/pci0000:00/0000:00:09.1/i2c_dw_sysnode", O_RDWR);
- if (sysnode == -1) {
- return MRAA_ERROR_INVALID_RESOURCE;
- }
+ int sysnode = -1;
- char bu[5];
- int length;
- switch (mode) {
- case MRAA_I2C_STD:
- length = snprintf(bu, sizeof(bu), "std");
- break;
- case MRAA_I2C_FAST:
- length = snprintf(bu, sizeof(bu), "fast");
- break;
- case MRAA_I2C_HIGH:
- length = snprintf(bu, sizeof(bu), "high");
- break;
- }
- if (write(sysnode, bu, length*sizeof(char)) == -1) {
+ switch (dev->busnum) {
+ case 1:
+ sysnode = open("/sys/devices/pci0000:00/0000:00:08.0/i2c_dw_sysnode/mode", O_RDWR);
+ break;
+ case 6:
+ sysnode = open("/sys/devices/pci0000:00/0000:00:09.1/i2c_dw_sysnode/mode", O_RDWR);
+ break;
+ default:
+ syslog(LOG_NOTICE, "i2c bus selected does not support frequency changes");
+ return MRAA_ERROR_FEATURE_NOT_SUPPORTED;
+ }
+ if (sysnode == -1) {
+ return MRAA_ERROR_INVALID_RESOURCE;
+ }
+
+ char bu[5];
+ int length;
+ switch (mode) {
+ case MRAA_I2C_STD:
+ length = snprintf(bu, sizeof(bu), "std");
+ break;
+ case MRAA_I2C_FAST:
+ length = snprintf(bu, sizeof(bu), "fast");
+ break;
+ case MRAA_I2C_HIGH:
+ length = snprintf(bu, sizeof(bu), "high");
+ break;
+ default:
+ syslog(LOG_ERR, "Invalid i2c mode selected");
close(sysnode);
- return MRAA_ERROR_INVALID_RESOURCE;
- }
+ return MRAA_ERROR_INVALID_PARAMETER;
+ }
+ if (write(sysnode, bu, length * sizeof(char)) == -1) {
close(sysnode);
- return MRAA_SUCCESS;
+ return MRAA_ERROR_INVALID_RESOURCE;
}
- return MRAA_ERROR_FEATURE_NOT_SUPPORTED;
+ close(sysnode);
+ return MRAA_SUCCESS;
}
mraa_result_t
b->pwm_max_period = 218453;
b->pwm_min_period = 1;
- b->pins = (mraa_pininfo_t*) malloc(sizeof(mraa_pininfo_t)*56);
+ b->pins = (mraa_pininfo_t*) malloc(sizeof(mraa_pininfo_t) * 56);
if (b->pins == NULL) {
return MRAA_ERROR_UNSPECIFIED;
}
- advance_func->gpio_init_post = &mraa_intel_edison_gpio_init_post;
- advance_func->gpio_close_pre = &mraa_intel_edison_gpio_close_pre;
-
- advance_func->pwm_init_pre = &mraa_intel_edison_pwm_init_pre;
- advance_func->i2c_init_pre = &mraa_intel_edison_i2c_init_pre;
- advance_func->i2c_set_frequency_replace = &mraa_intel_edison_i2c_freq;
- advance_func->spi_init_pre = &mraa_intel_edison_spi_init_pre;
- advance_func->gpio_mode_replace = &mraa_intel_edsion_mb_gpio_mode;
- advance_func->uart_init_pre = &mraa_intel_edison_uart_init_pre;
- advance_func->gpio_mmap_setup = &mraa_intel_edison_mmap_setup;
+ b->adv_func = (mraa_adv_func_t*) calloc(1, sizeof(mraa_adv_func_t));
+ if (b->adv_func == NULL) {
+ free(b->pins);
+ return MRAA_ERROR_UNSPECIFIED;
+ }
+ b->adv_func->gpio_init_post = &mraa_intel_edison_gpio_init_post;
+ b->adv_func->pwm_init_pre = &mraa_intel_edison_pwm_init_pre;
+ b->adv_func->i2c_init_pre = &mraa_intel_edison_i2c_init_pre;
+ b->adv_func->i2c_set_frequency_replace = &mraa_intel_edison_i2c_freq;
+ b->adv_func->spi_init_pre = &mraa_intel_edison_spi_init_pre;
+ b->adv_func->gpio_mode_replace = &mraa_intel_edsion_mb_gpio_mode;
+ b->adv_func->uart_init_pre = &mraa_intel_edison_uart_init_pre;
+ b->adv_func->gpio_mmap_setup = &mraa_intel_edison_mmap_setup;
int pos = 0;
strncpy(b->pins[pos].name, "J17-1", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,1,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 1, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 182;
b->pins[pos].gpio.mux_total = 0;
b->pins[pos].pwm.pinmap = 2;
pos++;
strncpy(b->pins[pos].name, "J17-2", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,0,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 0, 0, 0, 0, 0, 0, 0 };
pos++;
strncpy(b->pins[pos].name, "J17-3", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,0,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 0, 0, 0, 0, 0, 0, 0 };
pos++;
strncpy(b->pins[pos].name, "J17-4", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,0,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 0, 0, 0, 0, 0, 0, 0 };
pos++;
strncpy(b->pins[pos].name, "J17-5", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 135;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J17-6", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,0,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 0, 0, 0, 0, 0, 0, 0 };
pos++;
strncpy(b->pins[pos].name, "J17-7", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,1,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 1, 0, 0 };
b->pins[pos].gpio.pinmap = 27;
b->pins[pos].gpio.mux_total = 0;
b->pins[pos].i2c.pinmap = 1;
pos++;
strncpy(b->pins[pos].name, "J17-8", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,1,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 1, 0, 0 };
b->pins[pos].gpio.pinmap = 20;
b->pins[pos].gpio.mux_total = 0;
b->pins[pos].i2c.pinmap = 1;
pos++;
strncpy(b->pins[pos].name, "J17-9", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,1,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 1, 0, 0 };
b->pins[pos].gpio.pinmap = 28;
b->pins[pos].gpio.mux_total = 0;
b->pins[pos].i2c.pinmap = 1;
pos++;
strncpy(b->pins[pos].name, "J17-10", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,1,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 111;
b->pins[pos].gpio.mux_total = 0;
b->pins[pos].spi.pinmap = 5;
pos++;
strncpy(b->pins[pos].name, "J17-11", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,1,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 109;
b->pins[pos].gpio.mux_total = 0;
b->pins[pos].spi.pinmap = 5;
pos++;
strncpy(b->pins[pos].name, "J17-12", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,1,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 115;
b->pins[pos].gpio.mux_total = 0;
b->pins[pos].spi.pinmap = 5;
b->pins[pos].spi.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J17-13", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,0,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 0, 0, 0, 0, 0, 0, 0 };
pos++;
strncpy(b->pins[pos].name, "J17-14", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 128;
b->pins[pos].gpio.parent_id = 0;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J18-1", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,1,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 1, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 13;
b->pins[pos].gpio.mux_total = 0;
b->pins[pos].pwm.pinmap = 1;
pos++;
strncpy(b->pins[pos].name, "J18-2", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 165;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J18-3", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,0,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 0, 0, 0, 0, 0, 0, 0 };
pos++;
strncpy(b->pins[pos].name, "J18-4", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,0,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 0, 0, 0, 0, 0, 0, 0 };
pos++;
strncpy(b->pins[pos].name, "J18-5", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,0,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 0, 0, 0, 0, 0, 0, 0 };
pos++;
strncpy(b->pins[pos].name, "J18-6", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,1,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 1, 0, 0 };
b->pins[pos].gpio.pinmap = 19;
b->pins[pos].gpio.mux_total = 0;
b->pins[pos].i2c.pinmap = 1;
pos++;
strncpy(b->pins[pos].name, "J18-7", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,1,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 1, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 12;
b->pins[pos].gpio.mux_total = 0;
b->pins[pos].pwm.pinmap = 0;
pos++;
strncpy(b->pins[pos].name, "J18-8", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,1,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 1, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 183;
b->pins[pos].gpio.mux_total = 0;
b->pins[pos].pwm.pinmap = 3;
b->pins[pos].pwm.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J18-9", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,0,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 0, 0, 0, 0, 0, 0, 0 };
pos++;
strncpy(b->pins[pos].name, "J18-10", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,1,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 110;
b->pins[pos].gpio.mux_total = 0;
b->pins[pos].spi.pinmap = 5;
b->pins[pos].spi.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J18-11", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,1,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 114;
b->pins[pos].gpio.mux_total = 0;
b->pins[pos].spi.pinmap = 5;
pos++;
strncpy(b->pins[pos].name, "J18-12", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 129;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J18-13", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,1};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 1 };
b->pins[pos].gpio.pinmap = 130;
b->pins[pos].gpio.mux_total = 0;
b->pins[pos].uart.pinmap = 0;
pos++;
strncpy(b->pins[pos].name, "J18-14", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,0,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 0, 0, 0, 0, 0, 0, 0 };
pos++;
strncpy(b->pins[pos].name, "J19-1", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,0,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 0, 0, 0, 0, 0, 0, 0 };
pos++;
strncpy(b->pins[pos].name, "J19-2", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,0,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 0, 0, 0, 0, 0, 0, 0 };
pos++;
strncpy(b->pins[pos].name, "J19-3", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,0,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 0, 0, 0, 0, 0, 0, 0 };
pos++;
strncpy(b->pins[pos].name, "J19-4", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 44;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J19-5", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 46;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J19-6", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 48;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J19-7", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,0,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 0, 0, 0, 0, 0, 0, 0 };
pos++;
strncpy(b->pins[pos].name, "J19-8", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,1};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 1 };
b->pins[pos].gpio.pinmap = 131;
b->pins[pos].gpio.mux_total = 0;
b->pins[pos].uart.pinmap = 0;
pos++;
strncpy(b->pins[pos].name, "J19-9", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 14;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J19-10", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 40;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J19-11", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 43;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J19-12", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 77;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J19-13", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 82;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J19-14", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 83;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J20-1", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,0,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 0, 0, 0, 0, 0, 0, 0 };
pos++;
strncpy(b->pins[pos].name, "J20-2", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,0,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 0, 0, 0, 0, 0, 0, 0 };
pos++;
strncpy(b->pins[pos].name, "J20-3", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,0,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 0, 0, 0, 0, 0, 0, 0 };
pos++;
strncpy(b->pins[pos].name, "J20-4", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 45;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J20-5", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 47;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J20-6", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 49;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J20-7", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 15;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J20-8", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 84;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J20-9", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 42;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J20-10", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 41;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J20-11", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 78;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J20-12", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 79;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J20-13", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 80;
b->pins[pos].gpio.mux_total = 0;
pos++;
strncpy(b->pins[pos].name, "J20-14", 8);
- b->pins[pos].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,0};
+ b->pins[pos].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[pos].gpio.pinmap = 81;
b->pins[pos].gpio.mux_total = 0;
pos++;
- //BUS DEFINITIONS
+ // BUS DEFINITIONS
b->i2c_bus_count = 9;
b->def_i2c_bus = 6;
int ici;
b->def_uart_dev = 0;
b->uart_dev[0].rx = 26;
b->uart_dev[0].tx = 35;
+ b->uart_dev[0].device_path = UART_DEV_PATH;
return MRAA_SUCCESS;
}
mraa_board_t*
mraa_intel_edison_fab_c()
{
- mraa_board_t* b = (mraa_board_t*) malloc(sizeof(mraa_board_t));
+ mraa_board_t* b = (mraa_board_t*) calloc(1, sizeof(mraa_board_t));
if (b == NULL) {
return NULL;
}
- b->platform_name_length = strlen(PLATFORM_NAME) + 1;
- b->platform_name = (char*) malloc(sizeof(char) * b->platform_name_length);
- if (b->platform_name == NULL) {
- goto error;
- }
- strncpy(b->platform_name, PLATFORM_NAME, b->platform_name_length);
-
+ b->platform_name = PLATFORM_NAME;
// This seciton will also check if the arduino board is there
tristate = mraa_gpio_init_raw(214);
if (tristate == NULL) {
b->gpio_count = 14;
b->aio_count = 6;
- advance_func->gpio_dir_pre = &mraa_intel_edison_gpio_dir_pre;
- advance_func->gpio_init_post = &mraa_intel_edison_gpio_init_post;
- advance_func->gpio_dir_post = &mraa_intel_edison_gpio_dir_post;
- advance_func->i2c_init_pre = &mraa_intel_edison_i2c_init_pre;
- advance_func->i2c_set_frequency_replace = &mraa_intel_edison_i2c_freq;
- advance_func->aio_get_valid_fp = &mraa_intel_edison_aio_get_fp;
- advance_func->aio_init_pre = &mraa_intel_edison_aio_init_pre;
- advance_func->aio_init_post = &mraa_intel_edison_aio_init_post;
- advance_func->pwm_init_pre = &mraa_intel_edison_pwm_init_pre;
- advance_func->pwm_init_post = &mraa_intel_edison_pwm_init_post;
- advance_func->spi_init_pre = &mraa_intel_edison_spi_init_pre;
- advance_func->spi_init_post = &mraa_intel_edison_spi_init_post;
- advance_func->gpio_mode_replace = &mraa_intel_edison_gpio_mode_replace;
- advance_func->uart_init_pre = &mraa_intel_edison_uart_init_pre;
- advance_func->uart_init_post = &mraa_intel_edison_uart_init_post;
- advance_func->gpio_mmap_setup = &mraa_intel_edison_mmap_setup;
-
- b->pins = (mraa_pininfo_t*) malloc(sizeof(mraa_pininfo_t)*MRAA_INTEL_EDISON_PINCOUNT);
+ b->adv_func = (mraa_adv_func_t*) calloc(1, sizeof(mraa_adv_func_t));
+ if (b->adv_func == NULL) {
+ goto error;
+ }
+ b->adv_func->gpio_dir_pre = &mraa_intel_edison_gpio_dir_pre;
+ b->adv_func->gpio_init_post = &mraa_intel_edison_gpio_init_post;
+ b->adv_func->gpio_close_pre = &mraa_intel_edison_gpio_close_pre;
+ b->adv_func->gpio_dir_post = &mraa_intel_edison_gpio_dir_post;
+ b->adv_func->i2c_init_pre = &mraa_intel_edison_i2c_init_pre;
+ b->adv_func->i2c_set_frequency_replace = &mraa_intel_edison_i2c_freq;
+ b->adv_func->aio_get_valid_fp = &mraa_intel_edison_aio_get_fp;
+ b->adv_func->aio_init_pre = &mraa_intel_edison_aio_init_pre;
+ b->adv_func->aio_init_post = &mraa_intel_edison_aio_init_post;
+ b->adv_func->pwm_init_pre = &mraa_intel_edison_pwm_init_pre;
+ b->adv_func->pwm_init_post = &mraa_intel_edison_pwm_init_post;
+ b->adv_func->spi_init_pre = &mraa_intel_edison_spi_init_pre;
+ b->adv_func->spi_init_post = &mraa_intel_edison_spi_init_post;
+ b->adv_func->gpio_mode_replace = &mraa_intel_edison_gpio_mode_replace;
+ b->adv_func->uart_init_pre = &mraa_intel_edison_uart_init_pre;
+ b->adv_func->uart_init_post = &mraa_intel_edison_uart_init_post;
+ b->adv_func->gpio_mmap_setup = &mraa_intel_edison_mmap_setup;
+ b->adv_func->spi_lsbmode_replace = &mraa_intel_edison_spi_lsbmode_replace;
+
+ b->pins = (mraa_pininfo_t*) malloc(sizeof(mraa_pininfo_t) * MRAA_INTEL_EDISON_PINCOUNT);
if (b->pins == NULL) {
+ free(b->adv_func);
goto error;
}
b->pwm_min_period = 1;
strncpy(b->pins[0].name, "IO0", 8);
- b->pins[0].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,1};
+ b->pins[0].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 1 };
b->pins[0].gpio.pinmap = 130;
b->pins[0].gpio.parent_id = 0;
b->pins[0].gpio.mux_total = 0;
b->pins[0].uart.mux_total = 0;
strncpy(b->pins[1].name, "IO1", 8);
- b->pins[1].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0,1};
+ b->pins[1].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 1 };
b->pins[1].gpio.pinmap = 131;
b->pins[1].gpio.parent_id = 0;
b->pins[1].gpio.mux_total = 0;
b->pins[1].uart.mux_total = 0;
strncpy(b->pins[2].name, "IO2", 8);
- b->pins[2].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0};
+ b->pins[2].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0 };
b->pins[2].gpio.pinmap = 128;
b->pins[2].gpio.parent_id = 0;
b->pins[2].gpio.mux_total = 0;
strncpy(b->pins[3].name, "IO3", 8);
- b->pins[3].capabilites = (mraa_pincapabilities_t) {1,1,1,0,0,0,0};
+ b->pins[3].capabilites = (mraa_pincapabilities_t){ 1, 1, 1, 0, 0, 0, 0 };
b->pins[3].gpio.pinmap = 12;
b->pins[3].gpio.parent_id = 0;
b->pins[3].gpio.mux_total = 0;
b->pins[3].pwm.mux_total = 0;
strncpy(b->pins[4].name, "IO4", 8);
- b->pins[4].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0};
+ b->pins[4].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0 };
b->pins[4].gpio.pinmap = 129;
b->pins[4].gpio.parent_id = 0;
b->pins[4].gpio.mux_total = 0;
strncpy(b->pins[5].name, "IO5", 8);
- b->pins[5].capabilites = (mraa_pincapabilities_t) {1,1,1,0,0,0,0,0};
+ b->pins[5].capabilites = (mraa_pincapabilities_t){ 1, 1, 1, 0, 0, 0, 0, 0 };
b->pins[5].gpio.pinmap = 13;
b->pins[5].gpio.parent_id = 0;
b->pins[5].gpio.mux_total = 0;
b->pins[5].pwm.mux_total = 0;
strncpy(b->pins[6].name, "IO6", 8);
- b->pins[6].capabilites = (mraa_pincapabilities_t) {1,1,1,0,0,0,0,0};
+ b->pins[6].capabilites = (mraa_pincapabilities_t){ 1, 1, 1, 0, 0, 0, 0, 0 };
b->pins[6].gpio.pinmap = 182;
b->pins[6].gpio.parent_id = 0;
b->pins[6].gpio.mux_total = 0;
b->pins[6].pwm.mux_total = 0;
strncpy(b->pins[7].name, "IO7", 8);
- b->pins[7].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0};
+ b->pins[7].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0 };
b->pins[7].gpio.pinmap = 48;
b->pins[7].gpio.parent_id = 0;
b->pins[7].gpio.mux_total = 0;
strncpy(b->pins[8].name, "IO8", 8);
- b->pins[8].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,0};
+ b->pins[8].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0 };
b->pins[8].gpio.pinmap = 49;
b->pins[8].gpio.parent_id = 0;
b->pins[8].gpio.mux_total = 0;
strncpy(b->pins[9].name, "IO9", 8);
- b->pins[9].capabilites = (mraa_pincapabilities_t) {1,1,1,0,0,0,0,0};
+ b->pins[9].capabilites = (mraa_pincapabilities_t){ 1, 1, 1, 0, 0, 0, 0, 0 };
b->pins[9].gpio.pinmap = 183;
b->pins[9].gpio.parent_id = 0;
b->pins[9].gpio.mux_total = 0;
b->pins[9].pwm.mux_total = 0;
strncpy(b->pins[10].name, "IO10", 8);
- b->pins[10].capabilites = (mraa_pincapabilities_t) {1,1,0,0,1,0,0,0};
+ b->pins[10].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 };
b->pins[10].gpio.pinmap = 41;
b->pins[10].gpio.parent_id = 0;
b->pins[10].gpio.mux_total = 2;
b->pins[10].spi.mux[1].value = 1;
strncpy(b->pins[11].name, "IO11", 8);
- b->pins[11].capabilites = (mraa_pincapabilities_t) {1,1,0,0,1,0,0,0};
+ b->pins[11].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 };
b->pins[11].gpio.pinmap = 43;
b->pins[11].gpio.parent_id = 0;
b->pins[11].gpio.mux_total = 2;
b->pins[11].spi.mux[1].value = 1;
strncpy(b->pins[12].name, "IO12", 8);
- b->pins[12].capabilites = (mraa_pincapabilities_t) {1,1,0,0,1,0,0,0};
+ b->pins[12].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 };
b->pins[12].gpio.pinmap = 42;
b->pins[12].gpio.parent_id = 0;
b->pins[12].gpio.mux_total = 1;
b->pins[12].spi.mux[0].value = 1;
strncpy(b->pins[13].name, "IO13", 8);
- b->pins[13].capabilites = (mraa_pincapabilities_t) {1,1,0,0,1,0,0,0};
+ b->pins[13].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 };
b->pins[13].gpio.pinmap = 40;
b->pins[13].gpio.parent_id = 0;
b->pins[13].gpio.mux_total = 1;
b->pins[13].spi.mux[0].value = 1;
strncpy(b->pins[14].name, "A0", 8);
- b->pins[14].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,1,0};
+ b->pins[14].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 1, 0 };
b->pins[14].aio.pinmap = 0;
b->pins[14].aio.mux_total = 1;
b->pins[14].aio.mux[0].pin = 200;
b->pins[14].gpio.mux[0].value = 0;
strncpy(b->pins[15].name, "A1", 8);
- b->pins[15].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,1,0};
+ b->pins[15].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 1, 0 };
b->pins[15].aio.pinmap = 1;
b->pins[15].aio.mux_total = 1;
b->pins[15].aio.mux[0].pin = 201;
b->pins[15].gpio.mux[0].value = 0;
strncpy(b->pins[16].name, "A2", 8);
- b->pins[16].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,1,0};
+ b->pins[16].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 1, 0 };
b->pins[16].aio.pinmap = 2;
b->pins[16].aio.mux_total = 1;
b->pins[16].aio.mux[0].pin = 202;
b->pins[16].gpio.mux[0].value = 0;
strncpy(b->pins[17].name, "A3", 8);
- b->pins[17].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,1,0};
+ b->pins[17].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 1, 0 };
b->pins[17].aio.pinmap = 3;
b->pins[17].aio.mux_total = 1;
b->pins[17].aio.mux[0].pin = 203;
b->pins[17].gpio.mux[0].value = 0;
strncpy(b->pins[18].name, "A4", 8);
- b->pins[18].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,1,1,0};
+ b->pins[18].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 1, 1, 0 };
b->pins[18].i2c.pinmap = 1;
b->pins[18].i2c.mux_total = 1;
b->pins[18].i2c.mux[0].pin = 204;
b->pins[18].gpio.mux[0].value = 0;
strncpy(b->pins[19].name, "A5", 8);
- b->pins[19].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,1,1,0};
+ b->pins[19].capabilites = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 1, 1, 0 };
b->pins[19].i2c.pinmap = 1;
b->pins[19].i2c.mux_total = 1;
b->pins[19].i2c.mux[0].pin = 205;
b->pins[19].gpio.mux[0].pin = 205;
b->pins[19].gpio.mux[0].value = 0;
- //BUS DEFINITIONS
+ // BUS DEFINITIONS
b->i2c_bus_count = 9;
b->def_i2c_bus = 6;
int ici;
b->def_uart_dev = 0;
b->uart_dev[0].rx = 0;
b->uart_dev[0].tx = 1;
+ b->uart_dev[0].device_path = UART_DEV_PATH;
int il;
- for (il =0; il < MRAA_INTEL_EDISON_PINCOUNT; il++) {
+ for (il = 0; il < MRAA_INTEL_EDISON_PINCOUNT; il++) {
pinmodes[il].gpio.sysfs = -1;
pinmodes[il].gpio.mode = -1;
pinmodes[il].pwm.sysfs = -1;
pinmodes[6].pwm.sysfs = 182;
pinmodes[6].pwm.mode = 1;
- //7 and 8 are provided by something on i2c, very simplepinmodes[3].gpio.sysfs = 12;
+ // 7 and 8 are provided by something on i2c, very simplepinmodes[3].gpio.sysfs = 12;
pinmodes[9].gpio.sysfs = 183;
pinmodes[9].gpio.mode = 0;
pinmodes[9].pwm.sysfs = 183;
pinmodes[13].gpio.mode = 0;
pinmodes[13].spi.sysfs = 109; // Different pin provides, switched at mux level.
pinmodes[13].spi.mode = 1;
- //Everything else but A4 A5 LEAVE
+ // Everything else but A4 A5 LEAVE
pinmodes[18].gpio.sysfs = 14;
pinmodes[18].gpio.mode = 0;
pinmodes[18].i2c.sysfs = 28;