setled.c 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <unistd.h>
  5. #include <fcntl.h>
  6. #include <errno.h>
  7. #define DEVICE_PATH "/dev/led"
  8. void usage()
  9. {
  10. printf("Usage: [command] [param1] [param2] [param2]\n");
  11. printf("Commands:\n");
  12. printf(" setled off\n");
  13. printf(" setled red off\n");
  14. printf(" setled green off\n");
  15. printf(" setled red on 1\n");
  16. printf(" setled green on 255\n");
  17. }
  18. int main(int argc, char *argv[])
  19. {
  20. int fd = 0;
  21. int ret = 0;
  22. int blink_value = 0;
  23. char buff[3];
  24. if (argc == 2)
  25. {
  26. printf("%s %s %d\n", __FILE__, __FUNCTION__, __LINE__);
  27. if(strcmp(argv[1], "off") == 0)
  28. {
  29. buff[0] = 0x00;
  30. buff[1] = 0x01;
  31. buff[2] = 0x01;
  32. }
  33. }
  34. else if (argc == 3)
  35. {
  36. printf("%s %s %d\n", __FILE__, __FUNCTION__, __LINE__);
  37. if(strcmp(argv[1], "red") == 0)
  38. {
  39. buff[0] = 0x40;
  40. }
  41. else if(strcmp(argv[1], "green") == 0)
  42. {
  43. buff[0] = 0x80;
  44. }
  45. else
  46. {
  47. usage();
  48. return -1;
  49. }
  50. if(strcmp(argv[2], "off") == 0)
  51. {
  52. buff[1] = 0x00;
  53. buff[2] = 0x01;
  54. }
  55. else
  56. {
  57. usage();
  58. return -1;
  59. }
  60. }
  61. else if (argc == 4)
  62. {
  63. printf("%s %s %d\n", __FILE__, __FUNCTION__, __LINE__);
  64. if(strcmp(argv[1], "red") == 0)
  65. {
  66. buff[0] = 0x40;
  67. }
  68. else if(strcmp(argv[1], "green") == 0)
  69. {
  70. buff[0] = 0x80;
  71. }
  72. else
  73. {
  74. usage();
  75. return -1;
  76. }
  77. if(strcmp(argv[2], "on") == 0)
  78. {
  79. buff[1] = 0x01;
  80. }
  81. else
  82. {
  83. usage();
  84. return -1;
  85. }
  86. blink_value = atoi(argv[3]);
  87. buff[2] = blink_value&0xff;
  88. }
  89. else
  90. {
  91. printf("%s %s %d\n", __FILE__, __FUNCTION__, __LINE__);
  92. usage();
  93. return -1;
  94. }
  95. printf("%s %s %d\n", __FILE__, __FUNCTION__, __LINE__);
  96. fd = open(DEVICE_PATH, O_RDWR);
  97. if (fd < 0)
  98. {
  99. perror("open failed");
  100. return -1;
  101. }
  102. printf("%s %s %d\n", __FILE__, __FUNCTION__, __LINE__);
  103. ret = write(fd, buff, sizeof(buff));
  104. if (ret < 0)
  105. {
  106. perror("write failed");
  107. close(fd);
  108. return -1;
  109. }
  110. printf("%s %s %d\n", __FILE__, __FUNCTION__, __LINE__);
  111. close(fd);
  112. return 0;
  113. }