mraa_result_t mraa_gpio_write(mraa_gpio_context dev, int value) { if (dev == NULL) return MRAA_ERROR_INVALID_HANDLE; if (dev->mmap_write != NULL) return dev->mmap_write(dev,value); if (advance_func->gpio_write_pre != NULL) { mraa_result_t pre_ret = (advance_func->gpio_write_pre(dev,value)); if(pre_ret != MRAA_SUCCESS) return pre_ret; } if (dev->value_fp == -1) { if (mraa_gpio_get_valfp(dev) != MRAA_SUCCESS) { return MRAA_ERROR_INVALID_RESOURCE; } } if (lseek(dev->value_fp, 0, SEEK_SET) == -1) { return MRAA_ERROR_INVALID_RESOURCE; } char bu[MAX_SIZE]; int length = snprintf(bu, sizeof(bu), "%d", value); if (write(dev->value_fp, bu, length*sizeof(char)) == -1) { return MRAA_ERROR_INVALID_HANDLE; } if (advance_func->gpio_write_post != NULL) return advance_func->gpio_write_post(dev,value); return MRAA_SUCCESS; }
mraa_result_t mraa_gpio_write(mraa_gpio_context dev, int value) { if (dev == NULL) { syslog(LOG_ERR, "gpio: write: context is invalid"); return MRAA_ERROR_INVALID_HANDLE; } if (dev->mmap_write != NULL) return dev->mmap_write(dev, value); if (IS_FUNC_DEFINED(dev, gpio_write_pre)) { mraa_result_t pre_ret = (dev->advance_func->gpio_write_pre(dev, value)); if (pre_ret != MRAA_SUCCESS) return pre_ret; } if (IS_FUNC_DEFINED(dev, gpio_write_replace)) { return dev->advance_func->gpio_write_replace(dev, value); } if (dev->value_fp == -1) { if (mraa_gpio_get_valfp(dev) != MRAA_SUCCESS) { return MRAA_ERROR_INVALID_RESOURCE; } } if (lseek(dev->value_fp, 0, SEEK_SET) == -1) { syslog(LOG_ERR, "gpio%i: write: Failed to lseek 'value': %s", dev->pin, strerror(errno)); return MRAA_ERROR_UNSPECIFIED; } char bu[MAX_SIZE]; int length = snprintf(bu, sizeof(bu), "%d", value); if (write(dev->value_fp, bu, length * sizeof(char)) == -1) { syslog(LOG_ERR, "gpio%i: write: Failed to write to 'value': %s", dev->pin, strerror(errno)); return MRAA_ERROR_UNSPECIFIED; } if (IS_FUNC_DEFINED(dev, gpio_write_post)) return dev->advance_func->gpio_write_post(dev, value); return MRAA_SUCCESS; }