- case ACTUATOR_TEST0: //LED actuator test code, should blink onboard LED next to Ethernet port
- FILE *LEDHandle = NULL; //code reference: http://learnbuildshare.wordpress.com/2013/05/19/beaglebone-black-controlling-user-leds-using-c/
- char *LEDBrightness = "/sys/class/leds/beaglebone\:green\:usr0/brightness";
- if(value == 1) {
- if((LEDHandle = fopen(LEDBrightness, "r+")) != NULL) {
- fwrite("1", sizeof(char), 1, LEDHandle);
- fclose(LEDHandle);
+ case ACTUATOR_TEST0:
+ {
+ FILE *led_handle = NULL; //code reference: http://learnbuildshare.wordpress.com/2013/05/19/beaglebone-black-controlling-user-leds-using-c/
+ const char *led_format = "/sys/class/leds/beaglebone:green:usr%d/brightness";
+ char buf[50];
+ bool turn_on = value;
+
+ for (int i = 0; i < 4; i++)
+ {
+ snprintf(buf, 50, led_format, i);
+ if ((led_handle = fopen(buf, "w")) != NULL)
+ {
+ if (turn_on)
+ fwrite("1", sizeof(char), 1, led_handle);
+ else
+ fwrite("0", sizeof(char), 1, led_handle);
+ fclose(led_handle);
+ }
+ else
+ Log(LOGDEBUG, "LED fopen failed: %s", strerror(errno));