Skip to content

Conversation

@pdp7
Copy link
Collaborator

@pdp7 pdp7 commented Jan 9, 2017

These changes support alternate labels for the USR LEDs based on the triggers name. This was requested by an Ubuntu Core user in issue #129.

Normal labels:
* beaglebone:green:usr0
* beaglebone:green:usr1
* beaglebone:green:usr2
* beaglebone:green:usr3

Alternate labels:
* beaglebone:green:heartbeat
* beaglebone:green:mmc0
* beaglebone:green:cpu0
* beaglebone:green:mmc1

I've also refactored the pytest script test_led.py to cover this new functionality.

However, the device tree bindings on the official BeagleBoard.org Debian 8.6 ("Jessie") image must be changed to test the alternate USR LED label functionality. I've added a patch for arch/arm/boot/dts/am335x-bone-common.dtsi in ti-linux-4.4.y branch of the ti-linux-kernel-dev repo which renames the labels of the USR LED nodes from usrN to the trigger name.

pdp7 added 5 commits January 4, 2017 08:56
Related issue:
Doesn't support Ubuntu core beaglebone leds #129
#129
Patch for device tree binding in ti-linux-4.4.y branch of
the ti-linux-kernel-dev repo which renames the labels of
the USR LED nodes from usrN to the trigger name

Normal labels:
  * beaglebone:green:usr0
  * beaglebone:green:usr1
  * beaglebone:green:usr2
  * beaglebone:green:usr3

Alternate labels:
  * beaglebone:green:heartbeat
  * beaglebone:green:mmc0
  * beaglebone:green:cpu0
  * beaglebone:green:mmc1

Related issue:
Doesn't support Ubuntu core beaglebone leds #129
#129
@pdp7
Copy link
Collaborator Author

pdp7 commented Jan 9, 2017

pytest OK with normal LED names

debian@beaglebone:~/adafruit-beaglebone-io-python$ uname -a
Linux beaglebone 4.4.39-ti-r79 #1 SMP Fri Jan 6 03:14:22 CST 2017 armv7l GNU/Linux
debian@beaglebone:~/adafruit-beaglebone-io-python$ git status
On branch issue129-usr-leds
Your branch is up-to-date with 'origin/issue129-usr-leds'.
Untracked files:
  (use "git add <file>..." to include in what will be committed)

	.cache/

nothing added to commit but untracked files present (use "git add" to track)
debian@beaglebone:~/adafruit-beaglebone-io-python$ find /sys/devices/ -type f -name brightness
/sys/devices/platform/leds/leds/beaglebone:green:usr0/brightness
/sys/devices/platform/leds/leds/beaglebone:green:usr1/brightness
/sys/devices/platform/leds/leds/beaglebone:green:usr2/brightness
/sys/devices/platform/leds/leds/beaglebone:green:usr3/brightness
debian@beaglebone:~/adafruit-beaglebone-io-python$ sudo pytest
============================================================================ test session starts ============================================================================
platform linux2 -- Python 2.7.9, pytest-3.0.5, py-1.4.32, pluggy-0.4.0
rootdir: /home/debian/adafruit-beaglebone-io-python, inifile: 
collected 58 items 

test/test_adc.py ......
test/test_gpio_input.py ..
test/test_gpio_output.py ......
test/test_gpio_setup.py ..........
test/test_led.py ..
test/test_pwm_setup.py ...........................
test/test_spi.py ..
test/test_uart.py ...

========================================================================= 58 passed in 6.65 seconds =========================================================================

strace of open on the /sys LED files

debian@beaglebone:~/adafruit-beaglebone-io-python$ sudo strace -e open -f pytest test/test_led.py 2>&1 |grep /sys/class/leds
open("/sys/class/leds/beaglebone:green:usr2/brightness", O_WRONLY) = 9
open("/sys/class/leds/beaglebone:green:usr2/brightness", O_WRONLY) = 11
open("/sys/class/leds/beaglebone:green:usr2/brightness", O_WRONLY) = 11
open("/sys/class/leds/beaglebone:green:usr2/brightness", O_WRONLY) = 12
open("/sys/class/leds/beaglebone:green:usr2/brightness", O_RDONLY|O_LARGEFILE) = 12
open("/sys/class/leds/beaglebone:green:usr3/brightness", O_WRONLY) = 12
open("/sys/class/leds/beaglebone:green:usr3/brightness", O_WRONLY) = 13
open("/sys/class/leds/beaglebone:green:usr3/brightness", O_WRONLY) = 13
open("/sys/class/leds/beaglebone:green:usr3/brightness", O_WRONLY) = 14
open("/sys/class/leds/beaglebone:green:usr3/brightness", O_RDONLY|O_LARGEFILE) = 14
open("/sys/class/leds/beaglebone:green:usr0/brightness", O_WRONLY) = 14
open("/sys/class/leds/beaglebone:green:usr0/brightness", O_WRONLY) = 15
open("/sys/class/leds/beaglebone:green:usr0/brightness", O_WRONLY) = 15
open("/sys/class/leds/beaglebone:green:usr0/brightness", O_WRONLY) = 16
open("/sys/class/leds/beaglebone:green:usr0/brightness", O_RDONLY|O_LARGEFILE) = 16
open("/sys/class/leds/beaglebone:green:usr1/brightness", O_WRONLY) = 16
open("/sys/class/leds/beaglebone:green:usr1/brightness", O_WRONLY) = 17
open("/sys/class/leds/beaglebone:green:usr1/brightness", O_WRONLY) = 17
open("/sys/class/leds/beaglebone:green:usr1/brightness", O_WRONLY) = 18
open("/sys/class/leds/beaglebone:green:usr1/brightness", O_RDONLY|O_LARGEFILE) = 18
open("/sys/class/leds/beaglebone:green:usr2/brightness", O_WRONLY) = 18
open("/sys/class/leds/beaglebone:green:usr2/brightness", O_WRONLY) = 19
open("/sys/class/leds/beaglebone:green:usr2/brightness", O_WRONLY) = 19
open("/sys/class/leds/beaglebone:green:usr2/brightness", O_WRONLY) = 20
open("/sys/class/leds/beaglebone:green:usr2/brightness", O_RDONLY|O_LARGEFILE) = 20
open("/sys/class/leds/beaglebone:green:usr3/brightness", O_WRONLY) = 20
open("/sys/class/leds/beaglebone:green:usr3/brightness", O_WRONLY) = 21
open("/sys/class/leds/beaglebone:green:usr3/brightness", O_WRONLY) = 21
open("/sys/class/leds/beaglebone:green:usr3/brightness", O_WRONLY) = 22
open("/sys/class/leds/beaglebone:green:usr3/brightness", O_RDONLY|O_LARGEFILE) = 22
open("/sys/class/leds/beaglebone:green:usr0/brightness", O_WRONLY) = 22
open("/sys/class/leds/beaglebone:green:usr0/brightness", O_WRONLY) = 23
open("/sys/class/leds/beaglebone:green:usr0/brightness", O_WRONLY) = 23
open("/sys/class/leds/beaglebone:green:usr0/brightness", O_WRONLY) = 24
open("/sys/class/leds/beaglebone:green:usr0/brightness", O_RDONLY|O_LARGEFILE) = 24
open("/sys/class/leds/beaglebone:green:usr1/brightness", O_WRONLY) = 24
open("/sys/class/leds/beaglebone:green:usr1/brightness", O_WRONLY) = 25
open("/sys/class/leds/beaglebone:green:usr1/brightness", O_WRONLY) = 25
open("/sys/class/leds/beaglebone:green:usr1/brightness", O_WRONLY) = 26
open("/sys/class/leds/beaglebone:green:usr1/brightness", O_RDONLY|O_LARGEFILE) = 26

pytest OK with alternate LED names

debian@beaglebone:~/adafruit-beaglebone-io-python$ uname -a
Linux beaglebone 4.4.39-ti-r79 #1 SMP Fri Jan 6 03:14:22 CST 2017 armv7l GNU/Linux
debian@beaglebone:~/adafruit-beaglebone-io-python$ git status
On branch issue129-usr-leds
Your branch is up-to-date with 'origin/issue129-usr-leds'.
Untracked files:
  (use "git add <file>..." to include in what will be committed)

	.cache/

nothing added to commit but untracked files present (use "git add" to track)
debian@beaglebone:~/adafruit-beaglebone-io-python$ find /sys/devices/ -type f -name brightness
/sys/devices/platform/leds/leds/beaglebone:green:heartbeat/brightness
/sys/devices/platform/leds/leds/beaglebone:green:cpu0/brightness
/sys/devices/platform/leds/leds/beaglebone:green:mmc0/brightness
/sys/devices/platform/leds/leds/beaglebone:green:mmc1/brightness
debian@beaglebone:~/adafruit-beaglebone-io-python$ sudo pytest 
============================================================================ test session starts ============================================================================
platform linux2 -- Python 2.7.9, pytest-3.0.5, py-1.4.32, pluggy-0.4.0
rootdir: /home/debian/adafruit-beaglebone-io-python, inifile: 
collected 58 items 

test/test_adc.py ......
test/test_gpio_input.py ..
test/test_gpio_output.py ......
test/test_gpio_setup.py ..........
test/test_led.py ..
test/test_pwm_setup.py ...........................
test/test_spi.py ..
test/test_uart.py ...

========================================================================= 58 passed in 6.41 seconds =========================================================================

strace of open on the /sys LED files

debian@beaglebone:~/adafruit-beaglebone-io-python$ sudo strace -e open -f pytest test/test_led.py 2>&1 |grep /sys/class/leds
open("/sys/class/leds/beaglebone:green:usr2/brightness", O_WRONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:cpu0/brightness", O_WRONLY) = 9
open("/sys/class/leds/beaglebone:green:usr2/brightness", O_WRONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:cpu0/brightness", O_WRONLY) = 9
open("/sys/class/leds/beaglebone:green:usr2/brightness", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:cpu0/brightness", O_RDONLY|O_LARGEFILE) = 9
open("/sys/class/leds/beaglebone:green:usr3/brightness", O_WRONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:mmc1/brightness", O_WRONLY) = 9
open("/sys/class/leds/beaglebone:green:usr3/brightness", O_WRONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:mmc1/brightness", O_WRONLY) = 9
open("/sys/class/leds/beaglebone:green:usr3/brightness", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:mmc1/brightness", O_RDONLY|O_LARGEFILE) = 9
open("/sys/class/leds/beaglebone:green:usr0/brightness", O_WRONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:heartbeat/brightness", O_WRONLY) = 9
open("/sys/class/leds/beaglebone:green:usr0/brightness", O_WRONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:heartbeat/brightness", O_WRONLY) = 9
open("/sys/class/leds/beaglebone:green:usr0/brightness", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:heartbeat/brightness", O_RDONLY|O_LARGEFILE) = 9
open("/sys/class/leds/beaglebone:green:usr1/brightness", O_WRONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:mmc0/brightness", O_WRONLY) = 9
open("/sys/class/leds/beaglebone:green:usr1/brightness", O_WRONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:mmc0/brightness", O_WRONLY) = 9
open("/sys/class/leds/beaglebone:green:usr1/brightness", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:mmc0/brightness", O_RDONLY|O_LARGEFILE) = 9
open("/sys/class/leds/beaglebone:green:usr2/brightness", O_WRONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:cpu0/brightness", O_WRONLY) = 9
open("/sys/class/leds/beaglebone:green:usr2/brightness", O_WRONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:cpu0/brightness", O_WRONLY) = 9
open("/sys/class/leds/beaglebone:green:usr2/brightness", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:cpu0/brightness", O_RDONLY|O_LARGEFILE) = 9
open("/sys/class/leds/beaglebone:green:usr3/brightness", O_WRONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:mmc1/brightness", O_WRONLY) = 9
open("/sys/class/leds/beaglebone:green:usr3/brightness", O_WRONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:mmc1/brightness", O_WRONLY) = 9
open("/sys/class/leds/beaglebone:green:usr3/brightness", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:mmc1/brightness", O_RDONLY|O_LARGEFILE) = 9
open("/sys/class/leds/beaglebone:green:usr0/brightness", O_WRONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:heartbeat/brightness", O_WRONLY) = 9
open("/sys/class/leds/beaglebone:green:usr0/brightness", O_WRONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:heartbeat/brightness", O_WRONLY) = 9
open("/sys/class/leds/beaglebone:green:usr0/brightness", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:heartbeat/brightness", O_RDONLY|O_LARGEFILE) = 9
open("/sys/class/leds/beaglebone:green:usr1/brightness", O_WRONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:mmc0/brightness", O_WRONLY) = 9
open("/sys/class/leds/beaglebone:green:usr1/brightness", O_WRONLY) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:mmc0/brightness", O_WRONLY) = 9
open("/sys/class/leds/beaglebone:green:usr1/brightness", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/sys/class/leds/beaglebone:green:mmc0/brightness", O_RDONLY|O_LARGEFILE) = 9

@pdp7 pdp7 merged commit 1439133 into master Jan 9, 2017
@pdp7 pdp7 deleted the issue129-usr-leds branch January 9, 2017 03:38
pdp7 added a commit that referenced this pull request Feb 1, 2017
Version 1.0.2: bug fixes and minor improvements:
- Merge pull request #130 from adafruit/issue129-usr-leds [1439133]
  - Add support for alternate USR LED labels
- Merge pull request #131 from adafruit/fix-gcc-warnings [f0ee018]
   - Fix gcc warnings
- Merge pull request #132 from buckket/setup_unicode_fix [4c67dfc]
   - Make use of io.open() with explicit file encoding in setup.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants