| | |
| | | #include <time.h> |
| | | #include <errno.h> |
| | | |
| | | #include <wiringPi.h> |
| | | #include "led.h" |
| | | |
| | | #define msleep(x) usleep( 1000*(x) ) |
| | | |
| | | #define DELAY 500 |
| | | |
| | | int main(int argc, char *argv[]) |
| | |
| | | return 0; |
| | | } |
| | | |
| | | #ifdef CONFIG_USE_WIRINGPI |
| | | #include <wiringPi.h> |
| | | |
| | | void init_led(void) |
| | | { |
| | | int i; |
| | |
| | | return 0; |
| | | } |
| | | |
| | | #else /* use libgpiod library */ |
| | | |
| | | #include <gpiod.h> |
| | | |
| | | #if 0 /* Use libgpiod lowlevel API */ |
| | | |
| | | struct gpiod_chip* chip; |
| | | |
| | | void init_led(void) |
| | | { |
| | | chip = gpiod_chip_open_by_name("gpiochip0"); |
| | | if( !chip ) |
| | | { |
| | | printf("gpiod open chip failure, maybe you need running as root\n"); |
| | | exit(1); |
| | | } |
| | | } |
| | | |
| | | int turn_led(int which, int cmd) |
| | | { |
| | | int rv = 0; |
| | | struct gpiod_line* line; |
| | | |
| | | line = gpiod_chip_get_line(chip, led_gpio[which]); |
| | | if( !line ) |
| | | { |
| | | rv = -2; |
| | | } |
| | | |
| | | gpiod_line_request_output(line, "led", 0); |
| | | |
| | | if( OFF == cmd ) |
| | | { |
| | | gpiod_line_set_value(line, 0); |
| | | } |
| | | else |
| | | { |
| | | gpiod_line_set_value(line, 1); |
| | | } |
| | | } |
| | | |
| | | |
| | | #else /* use libgpiod ctxless high level API */ |
| | | void init_led(void) |
| | | { |
| | | |
| | | } |
| | | |
| | | void gpiod_ctxless_cb(void *data) |
| | | { |
| | | sleep(1); |
| | | } |
| | | |
| | | int turn_led(int which, int cmd) |
| | | { |
| | | if( OFF == cmd ) |
| | | gpiod_ctxless_set_value("gpiochip0", led_gpio[which], 0, false, "led", gpiod_ctxless_cb, NULL); |
| | | else |
| | | gpiod_ctxless_set_value("gpiochip0", led_gpio[which], 1, false, "led", gpiod_ctxless_cb, NULL); |
| | | } |
| | | #endif |
| | | |
| | | |
| | | #endif |