Merge pull request #130 from adafruit/issue129-usr-leds
Add support for alternate USR LED labels
This commit is contained in:
commit
1439133c8d
4 changed files with 105 additions and 15 deletions
|
|
@ -182,8 +182,9 @@ int open_value_file(unsigned int gpio)
|
|||
snprintf(filename, sizeof(filename), "/sys/class/gpio/gpio%d/value", gpio);
|
||||
}
|
||||
|
||||
if ((fd = open(filename, O_RDONLY | O_NONBLOCK)) < 0)
|
||||
return -1;
|
||||
if ((fd = open(filename, O_RDONLY | O_NONBLOCK)) < 0) {
|
||||
return -1;
|
||||
}
|
||||
add_fd_list(gpio, fd);
|
||||
return fd;
|
||||
}
|
||||
|
|
@ -288,13 +289,23 @@ int gpio_set_value(unsigned int gpio, unsigned int value)
|
|||
char vstr[10];
|
||||
|
||||
if ((gpio >= USR_LED_GPIO_MIN) && (gpio <= USR_LED_GPIO_MAX)) {
|
||||
snprintf(filename, sizeof(filename), "/sys/class/leds/beaglebone:green:usr%d/brightness", gpio - USR_LED_GPIO_MIN);
|
||||
|
||||
char *usr_led_trigger[] = { "heartbeat", "mmc0", "cpu0", "mmc1" };
|
||||
int led = gpio - USR_LED_GPIO_MIN;
|
||||
|
||||
snprintf(filename, sizeof(filename), "/sys/class/leds/beaglebone:green:usr%d/brightness", led);
|
||||
|
||||
if ((fd = open(filename, O_WRONLY)) < 0) {
|
||||
snprintf(filename, sizeof(filename), "/sys/class/leds/beaglebone:green:%s/brightness", usr_led_trigger[led]);
|
||||
}
|
||||
|
||||
} else {
|
||||
snprintf(filename, sizeof(filename), "/sys/class/gpio/gpio%d/value", gpio);
|
||||
}
|
||||
|
||||
if ((fd = open(filename, O_WRONLY)) < 0)
|
||||
if ((fd = open(filename, O_WRONLY)) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (value) {
|
||||
strncpy(vstr, "1", ARRAY_SIZE(vstr) - 1);
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ SOFTWARE.
|
|||
#define HIGH 1
|
||||
#define LOW 0
|
||||
|
||||
#define MAX_FILENAME 50
|
||||
#define MAX_FILENAME 60
|
||||
|
||||
#define USR_LED_GPIO_MIN 53
|
||||
#define USR_LED_GPIO_MAX 56
|
||||
|
|
|
|||
|
|
@ -0,0 +1,54 @@
|
|||
From 88366a61455cbe3e42ab59da939065abeab81597 Mon Sep 17 00:00:00 2001
|
||||
From: Drew Fustini <drew@pdp7.com>
|
||||
Date: Thu, 5 Jan 2017 02:33:58 -0600
|
||||
Subject: [PATCH] rename USR LED names to test Adafruit_BBIO issue #129
|
||||
|
||||
Patch for ti-linux-4.4.y branch of ti-linux-kernel-dev which renames
|
||||
the labels of the USR LED nodes
|
||||
|
||||
Related issue:
|
||||
Doesn't support Ubuntu core beaglebone leds #129
|
||||
https://github.com/adafruit/adafruit-beaglebone-io-python/issues/129
|
||||
---
|
||||
arch/arm/boot/dts/am335x-bone-common.dtsi | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/am335x-bone-common.dtsi b/arch/arm/boot/dts/am335x-bone-common.dtsi
|
||||
index 1f496145..ba95ffc 100644
|
||||
--- a/arch/arm/boot/dts/am335x-bone-common.dtsi
|
||||
+++ b/arch/arm/boot/dts/am335x-bone-common.dtsi
|
||||
@@ -26,28 +26,28 @@
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led@2 {
|
||||
- label = "beaglebone:green:usr0";
|
||||
+ label = "beaglebone:green:heartbeat";
|
||||
gpios = <&gpio1 21 GPIO_ACTIVE_HIGH>;
|
||||
linux,default-trigger = "heartbeat";
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led@3 {
|
||||
- label = "beaglebone:green:usr1";
|
||||
+ label = "beaglebone:green:mmc0";
|
||||
gpios = <&gpio1 22 GPIO_ACTIVE_HIGH>;
|
||||
linux,default-trigger = "mmc0";
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led@4 {
|
||||
- label = "beaglebone:green:usr2";
|
||||
+ label = "beaglebone:green:cpu0";
|
||||
gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
|
||||
linux,default-trigger = "cpu0";
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led@5 {
|
||||
- label = "beaglebone:green:usr3";
|
||||
+ label = "beaglebone:green:mmc1";
|
||||
gpios = <&gpio1 24 GPIO_ACTIVE_HIGH>;
|
||||
linux,default-trigger = "mmc1";
|
||||
default-state = "off";
|
||||
--
|
||||
2.9.3
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
import pytest
|
||||
import os
|
||||
import errno
|
||||
|
||||
import Adafruit_BBIO.GPIO as GPIO
|
||||
|
||||
|
|
@ -7,16 +8,40 @@ def teardown_module(module):
|
|||
GPIO.cleanup()
|
||||
|
||||
class TestLED:
|
||||
def set_brightness(self, state, led, name):
|
||||
GPIO.setup(led, GPIO.OUT)
|
||||
GPIO.output(led, state)
|
||||
prefix = "/sys/class/leds/beaglebone:green:{0}/brightness"
|
||||
path = prefix.format(led.lower())
|
||||
value = self.read_led_file(path)
|
||||
if value < 0:
|
||||
path = prefix.format(name)
|
||||
value = self.read_led_file(path)
|
||||
if state == 1:
|
||||
assert int(value) > 0
|
||||
else:
|
||||
assert int(value) == 0
|
||||
|
||||
def read_led_file(self, path):
|
||||
try:
|
||||
return open(path).read()
|
||||
except IOError, e:
|
||||
if e.errno == errno.ENOENT:
|
||||
return -1
|
||||
|
||||
def set_all_leds(self, state):
|
||||
test_leds = { "USR0": "heartbeat", \
|
||||
"USR1": "mmc0", \
|
||||
"USR2": "cpu0", \
|
||||
"USR3": "mmc1" }
|
||||
for led, name in test_leds.iteritems():
|
||||
self.set_brightness(state, led, name)
|
||||
GPIO.cleanup()
|
||||
|
||||
def test_brightness_high(self):
|
||||
GPIO.setup("USR0", GPIO.OUT)
|
||||
GPIO.output("USR0", GPIO.HIGH)
|
||||
value = open('/sys/class/leds/beaglebone:green:usr0/brightness').read()
|
||||
assert int(value) > 0
|
||||
GPIO.cleanup()
|
||||
self.set_all_leds(GPIO.HIGH)
|
||||
|
||||
def test_brightness_low(self):
|
||||
GPIO.setup("USR0", GPIO.OUT)
|
||||
GPIO.output("USR0", GPIO.LOW)
|
||||
value = open('/sys/class/leds/beaglebone:green:usr0/brightness').read()
|
||||
assert int(value) == 0
|
||||
GPIO.cleanup()
|
||||
self.set_all_leds(GPIO.LOW)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue