Skip to content

Commit f779f88

Browse files
committed
add support for alternate USR LED naming
Related issue: Doesn't support Ubuntu core beaglebone leds #129 #129
1 parent 237ceda commit f779f88

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

source/event_gpio.c

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,8 +182,11 @@ int open_value_file(unsigned int gpio)
182182
snprintf(filename, sizeof(filename), "/sys/class/gpio/gpio%d/value", gpio);
183183
}
184184

185-
if ((fd = open(filename, O_RDONLY | O_NONBLOCK)) < 0)
186-
return -1;
185+
fprintf(stderr, "open_value_file: open: filename=%s\n", filename);
186+
if ((fd = open(filename, O_RDONLY | O_NONBLOCK)) < 0) {
187+
fprintf(stderr, "open_value_file: open: failed\n");
188+
return -1;
189+
}
187190
add_fd_list(gpio, fd);
188191
return fd;
189192
}
@@ -288,13 +291,32 @@ int gpio_set_value(unsigned int gpio, unsigned int value)
288291
char vstr[10];
289292

290293
if ((gpio >= USR_LED_GPIO_MIN) && (gpio <= USR_LED_GPIO_MAX)) {
291-
snprintf(filename, sizeof(filename), "/sys/class/leds/beaglebone:green:usr%d/brightness", gpio - USR_LED_GPIO_MIN);
294+
295+
char *usr_led_trigger[] = { "heartbeat", "mmc0", "cpu0", "mmc1" };
296+
int led = gpio - USR_LED_GPIO_MIN;
297+
298+
fprintf(stderr, "gpio_set_value: led=%d\n", led);
299+
300+
snprintf(filename, sizeof(filename), "/sys/class/leds/beaglebone:green:usr%d/brightness", led);
301+
302+
fprintf(stderr, "gpio_set_value: open: filename=%s\n", filename);
303+
304+
if ((fd = open(filename, O_WRONLY)) < 0) {
305+
fprintf(stderr, "gpio_set_value: open: failed for led=%d\n", led);
306+
fprintf(stderr, "gpio_set_value: trying usr_led_trigger\n");
307+
fprintf(stderr, "gpio_set_value: usr_led_trigger[led]=%s\n", usr_led_trigger[led]);
308+
snprintf(filename, sizeof(filename), "/sys/class/leds/beaglebone:green:%s/brightness", usr_led_trigger[led]);
309+
}
310+
292311
} else {
293312
snprintf(filename, sizeof(filename), "/sys/class/gpio/gpio%d/value", gpio);
294313
}
295314

296-
if ((fd = open(filename, O_WRONLY)) < 0)
315+
fprintf(stderr, "gpio_set_value: open: filename=%s\n", filename);
316+
if ((fd = open(filename, O_WRONLY)) < 0) {
317+
fprintf(stderr, "gpio_set_value: open: failed\n");
297318
return -1;
319+
}
298320

299321
if (value) {
300322
strncpy(vstr, "1", ARRAY_SIZE(vstr) - 1);

source/event_gpio.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ SOFTWARE.
4242
#define HIGH 1
4343
#define LOW 0
4444

45-
#define MAX_FILENAME 50
45+
#define MAX_FILENAME 60
4646

4747
#define USR_LED_GPIO_MIN 53
4848
#define USR_LED_GPIO_MAX 56

0 commit comments

Comments
 (0)