#include #include #include #include #include "led_ctl.h" void usage(const char *prog) { printf("Usage: %s [args]\n", prog); printf("Commands:\n"); printf(" color Set LED color\n"); printf(" blink [time] Set blink (time unit: 100ms, def: 5)\n"); printf(" status Show current status\n"); printf("\nExample:\n"); printf(" sudo %s color r (Set color to RED)\n", prog); printf(" sudo %s blink on 5 (Blink every 500ms)\n", prog); } int main(int argc, char *argv[]) { if (geteuid() != 0) { fprintf(stderr, "Error: Must run as root (sudo).\n"); return 1; } if (led_driver_init() < 0) { return 1; } if (argc < 2) { usage(argv[0]); return 1; } const char *cmd = argv[1]; if (strcmp(cmd, "color") == 0) { if (argc < 3) { fprintf(stderr, "Error: Missing color argument.\n"); return 1; } if (strcmp(argv[2], "r") == 0) { if (led_set_color(LED_RED) == 0) printf("OK: Color set to RED\n"); } else if (strcmp(argv[2], "g") == 0) { if (led_set_color(LED_GREEN) == 0) printf("OK: Color set to GREEN\n"); } else { fprintf(stderr, "Error: Unknown color '%s'\n", argv[2]); return 1; } } else if (strcmp(cmd, "blink") == 0) { if (argc < 3) { fprintf(stderr, "Error: Missing state argument.\n"); return 1; } if (strcmp(argv[2], "on") == 0) { int t = 5; // 500ms if (argc >= 4) t = atoi(argv[3]); if (t < 0 || t > 255) t = 5; if (led_set_blink(1, (uint8_t)t) == 0) printf("OK: Blink ON (Interval: %d00ms)\n", t); } else if (strcmp(argv[2], "off") == 0) { if (led_set_blink(0, 0) == 0) printf("OK: Blink OFF\n"); } else { fprintf(stderr, "Error: Unknown state '%s'\n", argv[2]); return 1; } } else if (strcmp(cmd, "status") == 0) { led_print_status(); } else { usage(argv[0]); return 1; } return 0; }