#include #include #include #include #include void print_usage(void) { fprintf(stderr, "Usage: hui-ctrl [OPTION...] event[=val]...\n" "\n" "Options:\n" " -h print this help message\n" " -l list all known events\n" ); } void print_all_events(void) { int i; const struct avm_hui_event_info *info; foreach_avm_hui_event(i, info) { printf("%s\n", info->name); } } int main(int argc, char** argv) { int i, ret; if (argc < 2 || (argc == 2 && strcmp(argv[1], "-h") == 0)) { print_usage(); return 0; } if (argc == 2 && strcmp(argv[1], "-l") == 0) { print_all_events(); return 0; } ret = led_event_init(LED_EVENT_VERSION); if (ret) { fprintf(stderr, "Could not initialize libhui: %s\n", strerror(errno)); return -1; } for (i = 1; i < argc; i++) { const struct avm_hui_event_info *info; char *arg = argv[i]; char *sep; char *event_name; int event_value = 1; int ret; sep = strchr(arg, '='); if (sep) { char *end; // Set the = to \0 to terminate the name and advance *sep++ = '\0'; event_name = arg; event_value = strtol(sep, &end, 10); if (*end != '\0') { fprintf(stderr, "Invalid event parameter: %s\n", sep); return -1; } } else { event_name = arg; } info = avm_hui_get_info_by_name(event_name); if (!info) { fprintf(stderr, "Unknown event %s\n", event_name); return -1; } ret = led_event_set(info->id, event_value); if (ret) { fprintf(stderr, "Could not set event %s: %s\n", event_name, strerror(errno)); return 1; } } led_event_deinit(); return 0; }