| | |
| | | return -2; |
| | | } |
| | | |
| | | for(i=0; i<ctx->count; i++) |
| | | { |
| | | if( which == i ) |
| | | { |
| | | led = &ctx->leds[i]; |
| | | for(i=0; i<ctx->count; i++) |
| | | { |
| | | if( which == i ) |
| | | { |
| | | led = &ctx->leds[i]; |
| | | |
| | | led->line = gpiod_chip_get_line(ctx->chip, led->gpio); |
| | | if( !led->line ) |
| | | { |
| | | log_error("open gpioline for %s[%d] failed\n", led->name, led->gpio); |
| | | rv = -3; |
| | | goto failed; |
| | | } |
| | | led->line = gpiod_chip_get_line(ctx->chip, led->gpio); |
| | | if( !led->line ) |
| | | { |
| | | log_error("open gpioline for %s[%d] failed\n", led->name, led->gpio); |
| | | rv = -3; |
| | | goto failed; |
| | | } |
| | | |
| | | rv = gpiod_line_request_output(led->line, led->name, !led->active); |
| | | if( rv ) |
| | | { |
| | | log_error("request gpio output for %5s[%d] failed: %s\n", led->name, led->gpio, strerror(errno)); |
| | | rv = -4; |
| | | goto failed; |
| | | } |
| | | rv = gpiod_line_request_output(led->line, led->name, !led->active); |
| | | if( rv ) |
| | | { |
| | | log_error("request gpio output for %5s[%d] failed: %s\n", led->name, led->gpio, strerror(errno)); |
| | | rv = -4; |
| | | goto failed; |
| | | } |
| | | |
| | | log_debug("request %5s led[%d] for gpio output okay\n", led->name, led->gpio); |
| | | } |
| | | } |
| | | log_debug("request %5s led[%d] for gpio output okay\n", led->name, led->gpio); |
| | | } |
| | | } |
| | | |
| | | return 0; |
| | | |
| | |
| | | int i; |
| | | led_info_t *led; |
| | | |
| | | log_warn("terminate RGB Led gpios\n"); |
| | | log_debug("terminate RGB Led gpios\n"); |
| | | |
| | | if( !ctx ) |
| | | { |
| | |
| | | return 0; |
| | | |
| | | for(i=0; i<ctx->count; i++) |
| | | { |
| | | if( which == i ) |
| | | { |
| | | led = &ctx->leds[i]; |
| | | { |
| | | if( which == i ) |
| | | { |
| | | led = &ctx->leds[i]; |
| | | |
| | | if( led->line ) |
| | | gpiod_line_release(led->line); |
| | | } |
| | | } |
| | | if( led->line ) |
| | | gpiod_line_release(led->line); |
| | | } |
| | | } |
| | | |
| | | gpiod_chip_close(ctx->chip); |
| | | return 0; |
| | |
| | | |
| | | led = &ctx.leds[which]; |
| | | |
| | | log_info("turn Led %s %s\n", led->name, cmd?"on":"off"); |
| | | |
| | | if( OFF == cmd ) |
| | | { |
| | | gpiod_line_set_value(led->line, !led->active); |