Skip to content

led attributes might be out of sync with the kernel #126

@ensonic

Description

@ensonic

On a ev3:

ls -al /sys/class/leds/ev3:left:red:ev3dev/
total 0
drwxr-xr-x 3 root root      0 Jan 21 09:43 .
drwxr-xr-x 6 root root      0 Jan  1  2000 ..
-rw-rw-r-- 1 root ev3dev 4096 Jan 21 09:08 brightness
lrwxrwxrwx 1 root root      0 Jan  1  2000 device -> ../../../leds_pwm
-r--r--r-- 1 root ev3dev 4096 Jan  1  2000 max_brightness
drwxr-xr-x 2 root root      0 Jan  1  2000 power
lrwxrwxrwx 1 root root      0 Jan  1  2000 subsystem -> ../../../../../class/leds
-rw-rw-r-- 1 root ev3dev 4096 Jan 21 09:08 trigger
-rw-rw-r-- 1 root ev3dev 4096 Jan  1  2000 uevent

but on the python api:

>>> dir(ev3dev.Led)
['DEVICE_ROOT_PATH', 'SYSTEM_CLASS_NAME', 'SYSTEM_DEVICE_NAME_CONVENTION', '_DEVICE_INDEX', '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_get_attribute', '_matches', '_set_attribute', 'brightness', 'brightness_pct', 'delay_off', 'delay_on', 'device_index', 'get_attr_from_set', 'get_attr_int', 'get_attr_line', 'get_attr_set', 'get_attr_string', 'max_brightness', 'set_attr_int', 'set_attr_string', 'trigger', 'triggers']

The trigger attribute can be set, but if I e.g. try to do:

leds.set(ev3dev.Leds.RIGHT, trigger='timer', delay_on=500, delay_off=500)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/ev3dev/ev3.py", line 89, in set
    setattr(led, k, kwargs[k])
  File "/usr/lib/python2.7/dist-packages/ev3dev/core.py", line 1763, in delay_off
    self.set_attr_int('delay_off', value)
  File "/usr/lib/python2.7/dist-packages/ev3dev/core.py", line 210, in set_attr_int
    self._set_attribute(attribute, '{0:d}'.format(int(value)))
  File "/usr/lib/python2.7/dist-packages/ev3dev/core.py", line 204, in _set_attribute
    self._attribute_cache.write(abspath(self._path + '/' + attribute), value)
  File "/usr/lib/python2.7/dist-packages/ev3dev/core.py", line 91, in write
    f.write(value.encode())
IOError: File not open for writing

And indeed there are no 'delay_on/off' sys-fs entries. Maybe I am missing somethoing, if so we need more examples :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions