#include #include #include #include #include #include #define DEVICE_PATH "/dev/led" void usage() { printf("Usage: [command] [param1] [param2] [param2]\n"); printf("Commands:\n"); printf(" setled off\n"); printf(" setled red off\n"); printf(" setled green off\n"); printf(" setled red on 1\n"); printf(" setled green on 255\n"); } int main(int argc, char *argv[]) { int fd = 0; int ret = 0; int blink_value = 0; char buff[3]; if (argc == 2) { if(strcmp(argv[1], "off") == 0) { buff[0] = 0x00; buff[1] = 0x01; buff[2] = 0x01; } } else if (argc == 3) { if(strcmp(argv[1], "red") == 0) { buff[0] = 0x40; } else if(strcmp(argv[1], "green") == 0) { buff[0] = 0x80; } else { usage(); return -1; } if(strcmp(argv[2], "off") == 0) { buff[1] = 0x00; buff[2] = 0x01; } else { usage(); return -1; } } else if (argc == 4) { if(strcmp(argv[1], "red") == 0) { buff[0] = 0x40; } else if(strcmp(argv[1], "green") == 0) { buff[0] = 0x80; } else { usage(); return -1; } if(strcmp(argv[2], "on") == 0) { buff[1] = 0x01; } else { usage(); return -1; } blink_value = atoi(argv[3]); buff[2] = blink_value&0xff; } else { usage(); return -1; } fd = open(DEVICE_PATH, O_RDWR); if (fd < 0) { perror("open failed"); return -1; } ret = write(fd, buff, sizeof(buff)); if (ret < 0) { perror("write failed"); close(fd); return -1; } close(fd); return 0; }