core: implement gpiod_line_polarity()
authorBartosz Golaszewski <bartekgola@gmail.com>
Tue, 3 Jan 2017 10:17:19 +0000 (11:17 +0100)
committerBartosz Golaszewski <bartekgola@gmail.com>
Tue, 3 Jan 2017 10:17:19 +0000 (11:17 +0100)
Instead of returning a boolean value from gpiod_line_is_active_low(),
introduce two separate values as is done for direction and implement
gpiod_line_polarity(). This makes the code less confusing.

Signed-off-by: Bartosz Golaszewski <bartekgola@gmail.com>
core.c
gpiod.h
gpioinfo.c

diff --git a/core.c b/core.c
index 4ba7baef926349d8fd34dd0ffd9cb4d1e8169b35..fe3b54edf546130458a99e8902a23e6afdc71647 100644 (file)
--- a/core.c
+++ b/core.c
@@ -168,9 +168,11 @@ int gpiod_line_direction(struct gpiod_line *line)
                                                       : GPIOD_DIRECTION_IN;
 }
 
-bool gpiod_line_is_active_low(struct gpiod_line *line)
+int gpiod_line_polarity(struct gpiod_line *line)
 {
-       return line->info.flags & GPIOLINE_FLAG_ACTIVE_LOW;
+       return line->info.flags & GPIOLINE_FLAG_ACTIVE_LOW
+                                       ? GPIOD_POLARITY_ACTIVE_LOW
+                                       : GPIOD_POLARITY_ACTIVE_HIGH;
 }
 
 bool gpiod_line_is_used_by_kernel(struct gpiod_line *line)
diff --git a/gpiod.h b/gpiod.h
index 5e34b29021e71c87e000c2b0fdf6fcb72fda98e4..dea05d468c1498f55388ecaa42acca10b137e8d6 100644 (file)
--- a/gpiod.h
+++ b/gpiod.h
@@ -51,6 +51,11 @@ enum {
        GPIOD_DIRECTION_OUT,
 };
 
+enum {
+       GPIOD_POLARITY_ACTIVE_HIGH,
+       GPIOD_POLARITY_ACTIVE_LOW,
+};
+
 enum {
        GPIOD_REQUEST_ACTIVE_LOW        = GPIOD_BIT(0),
        GPIOD_REQUEST_OPEN_DRAIN        = GPIOD_BIT(1),
@@ -69,7 +74,7 @@ const char * gpiod_line_consumer(struct gpiod_line *line) GPIOD_API;
 
 int gpiod_line_direction(struct gpiod_line *line) GPIOD_API;
 
-bool gpiod_line_is_active_low(struct gpiod_line *line) GPIOD_API;
+int gpiod_line_polarity(struct gpiod_line *line) GPIOD_API;
 
 bool gpiod_line_is_used_by_kernel(struct gpiod_line *line) GPIOD_API;
 
index 9ca0ecc4c9039f2a7ff0194648c7f60dd3e90e3a..90c1d60bba9847de40a6063762bf0626af5e5cf8 100644 (file)
@@ -39,12 +39,11 @@ static const struct flag flags[] = {
 
 int main(int argc, char **argv)
 {
-       int i, direction, flag_printed;
+       int i, direction, flag_printed, polarity;
        struct gpiod_line_iter iter;
        const char *name, *consumer;
        struct gpiod_line *line;
        struct gpiod_chip *chip;
-       bool active_low;
        unsigned int j;
 
        for (i = 1; i < argc; i++) {
@@ -65,7 +64,7 @@ int main(int argc, char **argv)
                        name = gpiod_line_name(line);
                        consumer = gpiod_line_consumer(line);
                        direction = gpiod_line_direction(line);
-                       active_low = gpiod_line_is_active_low(line);
+                       polarity = gpiod_line_polarity(line);
 
                        printf("\tline %2u: ", gpiod_line_offset(line));
 
@@ -83,8 +82,9 @@ int main(int argc, char **argv)
 
                        printf("%s ", direction == GPIOD_DIRECTION_IN
                                                        ? "input" : "output");
-                       printf("%s ", active_low ? "active-low"
-                                                : "active-high");
+                       printf("%s ", polarity == GPIOD_POLARITY_ACTIVE_LOW
+                                                       ? "active-low"
+                                                       : "active-high");
 
                        flag_printed = false;
                        for (j = 0; j < ARRAY_SIZE(flags); j++) {