Created
December 6, 2014 23:24
-
-
Save arfoll/65621988a6064e8cd47c to your computer and use it in GitHub Desktop.
edison_boarddef_cleanup
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/intel_edison_fab_c.c b/src/intel_edison_fab_c.c | |
index 9a3a1db..4ac0009 100644 | |
--- a/src/intel_edison_fab_c.c | |
+++ b/src/intel_edison_fab_c.c | |
@@ -101,13 +101,21 @@ mraa_intel_edison_gpio_dir_pre(mraa_gpio_context dev, gpio_dir_t dir) | |
mraa_gpio_context output_e; | |
output_e = mraa_gpio_init_raw(outputen[pin]); | |
- if (mraa_gpio_dir(output_e, MRAA_GPIO_OUT) != MRAA_SUCCESS) | |
+ if (output_e == NULL) { | |
return MRAA_ERROR_INVALID_RESOURCE; | |
+ if (mraa_gpio_dir(output_e, MRAA_GPIO_OUT) != MRAA_SUCCESS) { | |
+ mraa_gpio_close(output_e); | |
+ return MRAA_ERROR_INVALID_RESOURCE; | |
+ } | |
int output_val = 0; | |
- if (dir == MRAA_GPIO_OUT) | |
+ if (dir == MRAA_GPIO_OUT) { | |
output_val = 1; | |
- if (mraa_gpio_write(output_e, output_val) != MRAA_SUCCESS) | |
+ } | |
+ if (mraa_gpio_write(output_e, output_val) != MRAA_SUCCESS) { | |
+ mraa_gpio_close(output_e); | |
return MRAA_ERROR_INVALID_RESOURCE; | |
+ } | |
+ mraa_gpio_close(output_e); | |
} | |
return MRAA_SUCCESS; | |
} | |
@@ -115,15 +123,15 @@ mraa_intel_edison_gpio_dir_pre(mraa_gpio_context dev, gpio_dir_t dir) | |
mraa_result_t | |
mraa_intel_edison_gpio_dir_post(mraa_gpio_context dev, gpio_dir_t dir) | |
{ | |
- mraa_gpio_write(tristate, 1); | |
- return MRAA_SUCCESS; | |
+ return mraa_gpio_write(tristate, 1); | |
} | |
mraa_result_t | |
mraa_intel_edison_gpio_init_post(mraa_gpio_context dev) | |
{ | |
- if (dev == NULL) | |
+ if (dev == NULL) { | |
return MRAA_ERROR_INVALID_RESOURCE; | |
+ } | |
int sysfs, mode; | |
if (miniboard == 1) { | |
@@ -133,9 +141,7 @@ mraa_intel_edison_gpio_init_post(mraa_gpio_context dev) | |
sysfs = pinmodes[dev->phy_pin].gpio.sysfs; | |
mode = pinmodes[dev->phy_pin].gpio.mode; | |
} | |
- mraa_result_t ret = mraa_intel_edison_pinmode_change(sysfs, mode); | |
- | |
- return ret; | |
+ return mraa_intel_edison_pinmode_change(sysfs, mode); | |
} | |
mraa_result_t | |
@@ -258,16 +264,28 @@ mraa_intel_edison_aio_init_pre(unsigned int aio) | |
int pin = 14 + aio; | |
mraa_gpio_context output_e; | |
output_e = mraa_gpio_init_raw(outputen[pin]); | |
- if (mraa_gpio_dir(output_e, MRAA_GPIO_OUT) != MRAA_SUCCESS) | |
+ if (output_e == NULL) { | |
+ return MRAA_ERROR_INVALID_RESOURCE; | |
+ } | |
+ if (mraa_gpio_dir(output_e, MRAA_GPIO_OUT) != MRAA_SUCCESS) { | |
+ mraa_gpio_close(output_e); | |
return MRAA_ERROR_INVALID_RESOURCE; | |
- if (mraa_gpio_write(output_e, 0) != MRAA_SUCCESS) | |
+ } | |
+ if (mraa_gpio_write(output_e, 0) != MRAA_SUCCESS) { | |
+ mraa_gpio_close(output_e); | |
return MRAA_ERROR_INVALID_RESOURCE; | |
+ } | |
mraa_gpio_close(output_e); | |
mraa_gpio_context pullup_pin; | |
pullup_pin = mraa_gpio_init_raw(pullup_map[pin]); | |
- if (mraa_gpio_dir(pullup_pin, MRAA_GPIO_IN) != MRAA_SUCCESS) | |
+ if (pullup_pin == NULL) { | |
+ return MRAA_ERROR_INVALID_RESOURCE; | |
+ } | |
+ if (mraa_gpio_dir(pullup_pin, MRAA_GPIO_IN) != MRAA_SUCCESS) { | |
+ mraa_gpio_close(pullup_pin); | |
return MRAA_ERROR_INVALID_RESOURCE; | |
+ } | |
mraa_gpio_close(pullup_pin); | |
return MRAA_SUCCESS; | |
@@ -276,8 +294,7 @@ mraa_intel_edison_aio_init_pre(unsigned int aio) | |
mraa_result_t | |
mraa_intel_edison_aio_init_post(mraa_aio_context dev) | |
{ | |
- mraa_gpio_write(tristate, 1); | |
- return MRAA_SUCCESS; | |
+ return mraa_gpio_write(tristate, 1); | |
} | |
mraa_result_t | |
@@ -286,24 +303,38 @@ mraa_intel_edison_pwm_init_pre(int pin) | |
if (miniboard == 1) { | |
return mraa_intel_edison_pinmode_change(plat->pins[pin].gpio.pinmap, 1); | |
} | |
- if (pin < 0 || pin > 19) | |
+ if (pin < 0 || pin > 19) { | |
return MRAA_ERROR_INVALID_RESOURCE; | |
+ } | |
- if (!plat->pins[pin].capabilites.pwm) | |
+ if (!plat->pins[pin].capabilites.pwm) { | |
return MRAA_ERROR_INVALID_RESOURCE; | |
+ } | |
mraa_gpio_context output_e; | |
output_e = mraa_gpio_init_raw(outputen[pin]); | |
- if (mraa_gpio_dir(output_e, MRAA_GPIO_OUT) != MRAA_SUCCESS) | |
+ if (output_e == NULL) { | |
return MRAA_ERROR_INVALID_RESOURCE; | |
- if (mraa_gpio_write(output_e, 1) != MRAA_SUCCESS) | |
+ } | |
+ if (mraa_gpio_dir(output_e, MRAA_GPIO_OUT) != MRAA_SUCCESS) { | |
+ mraa_gpio_close(output_e); | |
+ return MRAA_ERROR_INVALID_RESOURCE; | |
+ } | |
+ if (mraa_gpio_write(output_e, 1) != MRAA_SUCCESS) { | |
+ mraa_gpio_close(output_e); | |
return MRAA_ERROR_INVALID_RESOURCE; | |
+ } | |
mraa_gpio_close(output_e); | |
mraa_gpio_context pullup_pin; | |
pullup_pin = mraa_gpio_init_raw(pullup_map[pin]); | |
- if (mraa_gpio_dir(pullup_pin, MRAA_GPIO_IN) != MRAA_SUCCESS) | |
+ if (pullup_pin == NULL) { | |
+ return MRAA_ERROR_INVALID_RESOURCE; | |
+ } | |
+ if (mraa_gpio_dir(pullup_pin, MRAA_GPIO_IN) != MRAA_SUCCESS) { | |
+ mraa_gpio_close(pullup_pin); | |
return MRAA_ERROR_INVALID_RESOURCE; | |
+ } | |
mraa_gpio_close(pullup_pin); | |
mraa_intel_edison_pinmode_change(plat->pins[pin].gpio.pinmap, 1); | |
@@ -313,8 +344,7 @@ mraa_intel_edison_pwm_init_pre(int pin) | |
mraa_result_t | |
mraa_intel_edison_pwm_init_post(mraa_pwm_context pwm) | |
{ | |
- mraa_gpio_write(tristate, 1); | |
- return MRAA_SUCCESS; | |
+ return mraa_gpio_write(tristate, 1); | |
} | |
mraa_result_t | |
@@ -369,23 +399,27 @@ mraa_intel_edison_spi_init_pre(int bus) | |
mraa_result_t | |
mraa_intel_edison_spi_init_post(mraa_spi_context spi) | |
{ | |
- mraa_gpio_write(tristate, 1); | |
- return MRAA_SUCCESS; | |
+ return mraa_gpio_write(tristate, 1); | |
} | |
mraa_result_t | |
mraa_intel_edison_gpio_mode_replace(mraa_gpio_context dev, gpio_mode_t mode) | |
{ | |
if (dev->value_fp != -1) { | |
- close(dev->value_fp); | |
+ if (close(dev->value_fp) != 0) { | |
+ return MRAA_ERROR_INVALID_RESOURCE; | |
+ } | |
dev->value_fp = -1; | |
} | |
mraa_gpio_context pullup_e; | |
pullup_e = mraa_gpio_init_raw(pullup_map[dev->phy_pin]); | |
- mraa_result_t sta = mraa_gpio_dir(pullup_e, MRAA_GPIO_IN); | |
- if(sta != MRAA_SUCCESS) { | |
+ if (pullup_e == NULL) { | |
+ return MRAA_ERROR_INVALID_RESOURCE; | |
+ } | |
+ if (mraa_gpio_dir(pullup_e, MRAA_GPIO_IN) != MRAA_SUCCESS) { | |
syslog(LOG_ERR, "edison: Failed to set gpio mode-pullup"); | |
+ mraa_gpio_close(pullup_e); | |
return MRAA_ERROR_INVALID_RESOURCE; | |
} | |
@@ -406,28 +440,34 @@ mraa_intel_edison_gpio_mode_replace(mraa_gpio_context dev, gpio_mode_t mode) | |
return MRAA_ERROR_FEATURE_NOT_IMPLEMENTED; | |
} | |
if (value != -1) { | |
- sta = mraa_gpio_dir(pullup_e, MRAA_GPIO_OUT); | |
- sta = mraa_gpio_write(pullup_e, value); | |
- if (sta != MRAA_SUCCESS) { | |
+ if (mraa_gpio_dir(pullup_e, MRAA_GPIO_OUT) != MRAA_SUCCESS) { | |
syslog(LOG_ERR, "edison: Error setting pullup"); | |
- return sta; | |
+ mraa_gpio_close(pullup_e); | |
+ return MRAA_ERROR_INVALID_RESOURCE; | |
+ } | |
+ 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; | |
} | |
} | |
- return MRAA_SUCCESS; | |
+ return mraa_gpio_close(pullup_e); | |
} | |
mraa_result_t | |
mraa_intel_edsion_mb_gpio_mode(mraa_gpio_context dev, gpio_mode_t mode) | |
{ | |
if (dev->value_fp != -1) { | |
- close(dev->value_fp); | |
+ 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); | |
+ SYSFS_PINMODE_PATH "%d/current_pullmode", dev->pin); | |
int drive = open(filepath, O_WRONLY); | |
if (drive == -1) { | |
@@ -458,10 +498,11 @@ mraa_intel_edsion_mb_gpio_mode(mraa_gpio_context dev, gpio_mode_t mode) | |
syslog(LOG_ERR, "edison: Failed to write to drive mode"); | |
close(drive); | |
return MRAA_ERROR_INVALID_RESOURCE; | |
- | |
} | |
- close(drive); | |
+ if (close(drive) != 0) { | |
+ return MRAA_ERROR_INVALID_RESOURCE; | |
+ } | |
return MRAA_SUCCESS; | |
} | |
@@ -509,7 +550,9 @@ mraa_intel_edsion_mmap_unsetup() | |
} | |
munmap(mmap_reg, mmap_size); | |
mmap_reg = NULL; | |
- close(mmap_fd); | |
+ if (close(mmap_fd) != 0) { | |
+ return MRAA_ERROR_INVALID_RESOURCE; | |
+ } | |
return MRAA_SUCCESS; | |
} | |
@@ -538,8 +581,9 @@ mraa_intel_edison_mmap_read(mraa_gpio_context dev) | |
uint32_t value; | |
value = *(volatile uint32_t*) (mmap_reg +0x04+ offset); | |
- if (value&(uint32_t)(1 << (dev->pin % 32))) | |
+ if (value&(uint32_t)(1 << (dev->pin % 32))) { | |
return 1; | |
+ } | |
return 0; | |
} | |
@@ -598,7 +642,6 @@ mraa_intel_edison_mmap_setup(mraa_gpio_context dev, mraa_boolean_t en) | |
dev->mmap_read = &mraa_intel_edison_mmap_read; | |
mmap_count++; | |
- | |
return MRAA_SUCCESS; | |
} | |
@@ -613,7 +656,6 @@ mraa_intel_edsion_miniboard(mraa_board_t* b) | |
b->pwm_max_period = 218453; | |
b->pwm_min_period = 1; | |
- | |
b->pins = (mraa_pininfo_t*) malloc(sizeof(mraa_pininfo_t)*56); | |
advance_func->gpio_init_post = &mraa_intel_edison_gpio_init_post; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment