]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/baylibre-acme/gpio.c
output/csv: use intermediate time_t var, silence compiler warning
[libsigrok.git] / src / hardware / baylibre-acme / gpio.c
index f7348cdf8ef9160b9ffc5109ddb86412d4f25e1f..d86d24113b9b3c7fe647a4f1733f64f4d0f3feee 100644 (file)
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "libsigrok.h"
-#include "libsigrok-internal.h"
-#include "gpio.h"
+#include <config.h>
 #include <glib.h>
 #include <glib/gstdio.h>
 #include <unistd.h>
 #include <fcntl.h>
 #include <errno.h>
 #include <string.h>
+#include <libsigrok/libsigrok.h>
+#include "libsigrok-internal.h"
+#include "gpio.h"
 
 #define LOG_PREFIX "gpio"
 
@@ -36,14 +37,14 @@ static int open_and_write(const gchar *path, const gchar *buf)
 
        fd = g_fopen(path, "w");
        if (!fd) {
-               sr_err("error opening %s: %s", path, strerror(errno));
+               sr_err("Error opening %s: %s", path, g_strerror(errno));
                return -1;
        }
 
        wr = g_fprintf(fd, "%s", buf);
        fclose(fd);
        if (wr < 0) {
-               sr_err("error writing to %s: %s", path, strerror(errno));
+               sr_err("Error writing to %s: %s", path, g_strerror(errno));
                return -1;
        }
 
@@ -63,6 +64,10 @@ SR_PRIV int sr_gpio_export(unsigned gpio)
        if (exported)
                return 0; /* Already exported. */
 
+       status = sr_gpio_set_direction(gpio, GPIO_DIR_OUT);
+       if (status < 0)
+               return status;
+
        buf = g_string_sized_new(16);
        g_string_printf(buf, "%u\n", gpio);
        status = open_and_write("/sys/class/gpio/export", buf->str);
@@ -117,7 +122,7 @@ SR_PRIV int sr_gpio_get_value(int gpio)
        g_string_printf(path, "/sys/class/gpio/gpio%d/value", gpio);
        fd = g_fopen(path->str, "r");
        if (!fd) {
-               sr_err("error opening %s: %s", path->str, strerror(errno));
+               sr_err("Error opening %s: %s", path->str, g_strerror(errno));
                g_string_free(path, TRUE);
                return -1;
        }
@@ -125,7 +130,7 @@ SR_PRIV int sr_gpio_get_value(int gpio)
        status = fscanf(fd, "%d", &ret);
        fclose(fd);
        if (status != 1) {
-               sr_err("error reading from %s: %s", path, strerror(errno));
+               sr_err("Error reading from %s: %s", path->str, g_strerror(errno));
                g_string_free(path, TRUE);
                return -1;
        }
@@ -142,10 +147,6 @@ SR_PRIV int sr_gpio_setval_export(int gpio, int value)
        if (status < 0)
                return status;
 
-       status = sr_gpio_set_direction(gpio, GPIO_DIR_OUT);
-       if (status < 0)
-               return status;
-
        status = sr_gpio_set_value(gpio, value);
        if (status < 0)
                return status;
@@ -161,9 +162,5 @@ SR_PRIV int sr_gpio_getval_export(int gpio)
        if (status < 0)
                return status;
 
-       status = sr_gpio_set_direction(gpio, GPIO_DIR_IN);
-       if (status < 0)
-               return status;
-
        return sr_gpio_get_value(gpio);
 }